Compare commits
	
		
			5 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | e2f20e631a | ||
|  | b2eb13baee | ||
|  | 7884fcad6b | ||
|  | f67ee5d622 | ||
|  | f25a3a9f25 | 
							
								
								
									
										38
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										38
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
								
							| @ -205,3 +205,41 @@ jobs: | |||||||
|           path: basic |           path: basic | ||||||
|       - name: Verify basic |       - name: Verify basic | ||||||
|         run: __test__/verify-basic.sh --archive |         run: __test__/verify-basic.sh --archive | ||||||
|  |      | ||||||
|  |   test-git-container: | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |     container: bitnami/git:latest | ||||||
|  |     steps: | ||||||
|  |       # Clone this repo | ||||||
|  |       - name: Checkout | ||||||
|  |         uses: actions/checkout@v3 | ||||||
|  |         with: | ||||||
|  |           path: v3 | ||||||
|  | 
 | ||||||
|  |       # Basic checkout using git | ||||||
|  |       - name: Checkout basic | ||||||
|  |         uses: ./v3 | ||||||
|  |         with: | ||||||
|  |           ref: test-data/v2/basic | ||||||
|  |       - name: Verify basic | ||||||
|  |         run: | | ||||||
|  |           if [ ! -f "./basic-file.txt" ]; then | ||||||
|  |               echo "Expected basic file does not exist" | ||||||
|  |               exit 1 | ||||||
|  |           fi | ||||||
|  | 
 | ||||||
|  |           # Verify .git folder | ||||||
|  |           if [ ! -d "./.git" ]; then | ||||||
|  |             echo "Expected ./.git folder to exist" | ||||||
|  |             exit 1 | ||||||
|  |           fi | ||||||
|  | 
 | ||||||
|  |           # Verify auth token | ||||||
|  |           git config --global --add safe.directory "*" | ||||||
|  |           git fetch --no-tags --depth=1 origin +refs/heads/main:refs/remotes/origin/main | ||||||
|  | 
 | ||||||
|  |       # needed to make checkout post cleanup succeed | ||||||
|  |       - name: Fix Checkout v3 | ||||||
|  |         uses: actions/checkout@v3 | ||||||
|  |         with: | ||||||
|  |           path: v3 | ||||||
| @ -1,5 +1,14 @@ | |||||||
| # Changelog | # Changelog | ||||||
| 
 | 
 | ||||||
|  | ## v2.5.0 | ||||||
|  | - [Bump @actions/core to v1.10.0](https://github.com/actions/checkout/pull/962) | ||||||
|  | 
 | ||||||
|  | ## v2.4.2 | ||||||
|  | - [Add input `set-safe-directory`](https://github.com/actions/checkout/pull/776) | ||||||
|  | 
 | ||||||
|  | ## v2.4.1 | ||||||
|  | - [Set the safe directory option on git to prevent git commands failing when running in containers](https://github.com/actions/checkout/pull/762) | ||||||
|  | 
 | ||||||
| ## v2.3.1 | ## v2.3.1 | ||||||
| 
 | 
 | ||||||
| - [Fix default branch resolution for .wiki and when using SSH](https://github.com/actions/checkout/pull/284) | - [Fix default branch resolution for .wiki and when using SSH](https://github.com/actions/checkout/pull/284) | ||||||
|  | |||||||
| @ -105,6 +105,11 @@ Refer [here](https://github.com/actions/checkout/blob/v1/README.md) for previous | |||||||
|     # |     # | ||||||
|     # Default: false |     # Default: false | ||||||
|     submodules: '' |     submodules: '' | ||||||
|  | 
 | ||||||
|  |     # Add repository path as safe.directory for Git global config by running `git | ||||||
|  |     # config --global --add safe.directory <path>` | ||||||
|  |     # Default: true | ||||||
|  |     set-safe-directory: '' | ||||||
| ``` | ``` | ||||||
| <!-- end usage --> | <!-- end usage --> | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -643,10 +643,11 @@ describe('git-auth-helper tests', () => { | |||||||
|     expect(gitConfigContent.indexOf('http.')).toBeLessThan(0) |     expect(gitConfigContent.indexOf('http.')).toBeLessThan(0) | ||||||
|   }) |   }) | ||||||
| 
 | 
 | ||||||
|   const removeGlobalAuth_removesOverride = 'removeGlobalAuth removes override' |   const removeGlobalConfig_removesOverride = | ||||||
|   it(removeGlobalAuth_removesOverride, async () => { |     'removeGlobalConfig removes override' | ||||||
|  |   it(removeGlobalConfig_removesOverride, async () => { | ||||||
|     // Arrange
 |     // Arrange
 | ||||||
|     await setup(removeGlobalAuth_removesOverride) |     await setup(removeGlobalConfig_removesOverride) | ||||||
|     const authHelper = gitAuthHelper.createAuthHelper(git, settings) |     const authHelper = gitAuthHelper.createAuthHelper(git, settings) | ||||||
|     await authHelper.configureAuth() |     await authHelper.configureAuth() | ||||||
|     await authHelper.configureGlobalAuth() |     await authHelper.configureGlobalAuth() | ||||||
| @ -655,7 +656,7 @@ describe('git-auth-helper tests', () => { | |||||||
|     await fs.promises.stat(path.join(git.env['HOME'], '.gitconfig')) |     await fs.promises.stat(path.join(git.env['HOME'], '.gitconfig')) | ||||||
| 
 | 
 | ||||||
|     // Act
 |     // Act
 | ||||||
|     await authHelper.removeGlobalAuth() |     await authHelper.removeGlobalConfig() | ||||||
| 
 | 
 | ||||||
|     // Assert
 |     // Assert
 | ||||||
|     expect(git.env['HOME']).toBeUndefined() |     expect(git.env['HOME']).toBeUndefined() | ||||||
| @ -776,7 +777,8 @@ async function setup(testName: string): Promise<void> { | |||||||
|     sshKey: sshPath ? 'some ssh private key' : '', |     sshKey: sshPath ? 'some ssh private key' : '', | ||||||
|     sshKnownHosts: '', |     sshKnownHosts: '', | ||||||
|     sshStrict: true, |     sshStrict: true, | ||||||
|     workflowOrganizationId: 123456 |     workflowOrganizationId: 123456, | ||||||
|  |     setSafeDirectory: true | ||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -85,6 +85,7 @@ describe('input-helper tests', () => { | |||||||
|     expect(settings.repositoryName).toBe('some-repo') |     expect(settings.repositoryName).toBe('some-repo') | ||||||
|     expect(settings.repositoryOwner).toBe('some-owner') |     expect(settings.repositoryOwner).toBe('some-owner') | ||||||
|     expect(settings.repositoryPath).toBe(gitHubWorkspace) |     expect(settings.repositoryPath).toBe(gitHubWorkspace) | ||||||
|  |     expect(settings.setSafeDirectory).toBe(true) | ||||||
|   }) |   }) | ||||||
| 
 | 
 | ||||||
|   it('qualifies ref', async () => { |   it('qualifies ref', async () => { | ||||||
|  | |||||||
| @ -68,6 +68,9 @@ inputs: | |||||||
|       When the `ssh-key` input is not provided, SSH URLs beginning with `git@github.com:` are |       When the `ssh-key` input is not provided, SSH URLs beginning with `git@github.com:` are | ||||||
|       converted to HTTPS. |       converted to HTTPS. | ||||||
|     default: false |     default: false | ||||||
|  |   set-safe-directory: | ||||||
|  |     description: Add repository path as safe.directory for Git global config by running `git config --global --add safe.directory <path>` | ||||||
|  |     default: true | ||||||
| runs: | runs: | ||||||
|   using: node12 |   using: node12 | ||||||
|   main: dist/index.js |   main: dist/index.js | ||||||
|  | |||||||
							
								
								
									
										2946
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2946
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							| @ -543,6 +543,21 @@ var eos = function(stream, opts, callback) { | |||||||
| module.exports = eos; | module.exports = eos; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | /***/ }), | ||||||
|  | 
 | ||||||
|  | /***/ 4: | ||||||
|  | /***/ (function(__unusedmodule, exports) { | ||||||
|  | 
 | ||||||
|  | "use strict"; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Object.defineProperty(exports, "__esModule", { | ||||||
|  |   value: true | ||||||
|  | }); | ||||||
|  | exports.default = void 0; | ||||||
|  | var _default = '00000000-0000-0000-0000-000000000000'; | ||||||
|  | exports.default = _default; | ||||||
|  | 
 | ||||||
| /***/ }), | /***/ }), | ||||||
| 
 | 
 | ||||||
| /***/ 9: | /***/ 9: | ||||||
| @ -1295,6 +1310,92 @@ module.exports._parse = parse; | |||||||
| module.exports._enoent = enoent; | module.exports._enoent = enoent; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | /***/ }), | ||||||
|  | 
 | ||||||
|  | /***/ 25: | ||||||
|  | /***/ (function(__unusedmodule, exports, __webpack_require__) { | ||||||
|  | 
 | ||||||
|  | "use strict"; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Object.defineProperty(exports, "__esModule", { | ||||||
|  |   value: true | ||||||
|  | }); | ||||||
|  | Object.defineProperty(exports, "v1", { | ||||||
|  |   enumerable: true, | ||||||
|  |   get: function () { | ||||||
|  |     return _v.default; | ||||||
|  |   } | ||||||
|  | }); | ||||||
|  | Object.defineProperty(exports, "v3", { | ||||||
|  |   enumerable: true, | ||||||
|  |   get: function () { | ||||||
|  |     return _v2.default; | ||||||
|  |   } | ||||||
|  | }); | ||||||
|  | Object.defineProperty(exports, "v4", { | ||||||
|  |   enumerable: true, | ||||||
|  |   get: function () { | ||||||
|  |     return _v3.default; | ||||||
|  |   } | ||||||
|  | }); | ||||||
|  | Object.defineProperty(exports, "v5", { | ||||||
|  |   enumerable: true, | ||||||
|  |   get: function () { | ||||||
|  |     return _v4.default; | ||||||
|  |   } | ||||||
|  | }); | ||||||
|  | Object.defineProperty(exports, "NIL", { | ||||||
|  |   enumerable: true, | ||||||
|  |   get: function () { | ||||||
|  |     return _nil.default; | ||||||
|  |   } | ||||||
|  | }); | ||||||
|  | Object.defineProperty(exports, "version", { | ||||||
|  |   enumerable: true, | ||||||
|  |   get: function () { | ||||||
|  |     return _version.default; | ||||||
|  |   } | ||||||
|  | }); | ||||||
|  | Object.defineProperty(exports, "validate", { | ||||||
|  |   enumerable: true, | ||||||
|  |   get: function () { | ||||||
|  |     return _validate.default; | ||||||
|  |   } | ||||||
|  | }); | ||||||
|  | Object.defineProperty(exports, "stringify", { | ||||||
|  |   enumerable: true, | ||||||
|  |   get: function () { | ||||||
|  |     return _stringify.default; | ||||||
|  |   } | ||||||
|  | }); | ||||||
|  | Object.defineProperty(exports, "parse", { | ||||||
|  |   enumerable: true, | ||||||
|  |   get: function () { | ||||||
|  |     return _parse.default; | ||||||
|  |   } | ||||||
|  | }); | ||||||
|  | 
 | ||||||
|  | var _v = _interopRequireDefault(__webpack_require__(810)); | ||||||
|  | 
 | ||||||
|  | var _v2 = _interopRequireDefault(__webpack_require__(572)); | ||||||
|  | 
 | ||||||
|  | var _v3 = _interopRequireDefault(__webpack_require__(293)); | ||||||
|  | 
 | ||||||
|  | var _v4 = _interopRequireDefault(__webpack_require__(638)); | ||||||
|  | 
 | ||||||
|  | var _nil = _interopRequireDefault(__webpack_require__(4)); | ||||||
|  | 
 | ||||||
|  | var _version = _interopRequireDefault(__webpack_require__(135)); | ||||||
|  | 
 | ||||||
|  | var _validate = _interopRequireDefault(__webpack_require__(634)); | ||||||
|  | 
 | ||||||
|  | var _stringify = _interopRequireDefault(__webpack_require__(960)); | ||||||
|  | 
 | ||||||
|  | var _parse = _interopRequireDefault(__webpack_require__(204)); | ||||||
|  | 
 | ||||||
|  | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||||||
|  | 
 | ||||||
| /***/ }), | /***/ }), | ||||||
| 
 | 
 | ||||||
| /***/ 26: | /***/ 26: | ||||||
| @ -1784,13 +1885,6 @@ function getLastPage (octokit, link, headers) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| /***/ }), |  | ||||||
| 
 |  | ||||||
| /***/ 34: |  | ||||||
| /***/ (function(module) { |  | ||||||
| 
 |  | ||||||
| module.exports = require("https"); |  | ||||||
| 
 |  | ||||||
| /***/ }), | /***/ }), | ||||||
| 
 | 
 | ||||||
| /***/ 39: | /***/ 39: | ||||||
| @ -1889,6 +1983,63 @@ const windowsRelease = release => { | |||||||
| module.exports = windowsRelease; | module.exports = windowsRelease; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | /***/ }), | ||||||
|  | 
 | ||||||
|  | /***/ 68: | ||||||
|  | /***/ (function(__unusedmodule, exports) { | ||||||
|  | 
 | ||||||
|  | "use strict"; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Object.defineProperty(exports, '__esModule', { value: true }); | ||||||
|  | 
 | ||||||
|  | async function auth(token) { | ||||||
|  |   const tokenType = token.split(/\./).length === 3 ? "app" : /^v\d+\./.test(token) ? "installation" : "oauth"; | ||||||
|  |   return { | ||||||
|  |     type: "token", | ||||||
|  |     token: token, | ||||||
|  |     tokenType | ||||||
|  |   }; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Prefix token for usage in the Authorization header | ||||||
|  |  * | ||||||
|  |  * @param token OAuth token or JSON Web Token | ||||||
|  |  */ | ||||||
|  | function withAuthorizationPrefix(token) { | ||||||
|  |   if (token.split(/\./).length === 3) { | ||||||
|  |     return `bearer ${token}`; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   return `token ${token}`; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | async function hook(token, request, route, parameters) { | ||||||
|  |   const endpoint = request.endpoint.merge(route, parameters); | ||||||
|  |   endpoint.headers.authorization = withAuthorizationPrefix(token); | ||||||
|  |   return request(endpoint); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | const createTokenAuth = function createTokenAuth(token) { | ||||||
|  |   if (!token) { | ||||||
|  |     throw new Error("[@octokit/auth-token] No token passed to createTokenAuth"); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   if (typeof token !== "string") { | ||||||
|  |     throw new Error("[@octokit/auth-token] Token passed to createTokenAuth is not a string"); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   token = token.replace(/^(token|bearer) +/i, ""); | ||||||
|  |   return Object.assign(auth.bind(null, token), { | ||||||
|  |     hook: hook.bind(null, token) | ||||||
|  |   }); | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | exports.createTokenAuth = createTokenAuth; | ||||||
|  | //# sourceMappingURL=index.js.map
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| /***/ }), | /***/ }), | ||||||
| 
 | 
 | ||||||
| /***/ 70: | /***/ 70: | ||||||
| @ -1970,6 +2121,7 @@ exports.getServerUrl = getServerUrl; | |||||||
| // We use any as a valid input type
 | // We use any as a valid input type
 | ||||||
| /* eslint-disable @typescript-eslint/no-explicit-any */ | /* eslint-disable @typescript-eslint/no-explicit-any */ | ||||||
| Object.defineProperty(exports, "__esModule", { value: true }); | Object.defineProperty(exports, "__esModule", { value: true }); | ||||||
|  | exports.toCommandProperties = exports.toCommandValue = void 0; | ||||||
| /** | /** | ||||||
|  * Sanitizes an input into a string so it can be passed into issueCommand safely |  * Sanitizes an input into a string so it can be passed into issueCommand safely | ||||||
|  * @param input input to sanitize into a string |  * @param input input to sanitize into a string | ||||||
| @ -1984,6 +2136,26 @@ function toCommandValue(input) { | |||||||
|     return JSON.stringify(input); |     return JSON.stringify(input); | ||||||
| } | } | ||||||
| exports.toCommandValue = toCommandValue; | exports.toCommandValue = toCommandValue; | ||||||
|  | /** | ||||||
|  |  * | ||||||
|  |  * @param annotationProperties | ||||||
|  |  * @returns The command properties to send with the actual annotation command | ||||||
|  |  * See IssueCommandProperties: https://github.com/actions/runner/blob/main/src/Runner.Worker/ActionCommandManager.cs#L646
 | ||||||
|  |  */ | ||||||
|  | function toCommandProperties(annotationProperties) { | ||||||
|  |     if (!Object.keys(annotationProperties).length) { | ||||||
|  |         return {}; | ||||||
|  |     } | ||||||
|  |     return { | ||||||
|  |         title: annotationProperties.title, | ||||||
|  |         file: annotationProperties.file, | ||||||
|  |         line: annotationProperties.startLine, | ||||||
|  |         endLine: annotationProperties.endLine, | ||||||
|  |         col: annotationProperties.startColumn, | ||||||
|  |         endColumn: annotationProperties.endColumn | ||||||
|  |     }; | ||||||
|  | } | ||||||
|  | exports.toCommandProperties = toCommandProperties; | ||||||
| //# sourceMappingURL=utils.js.map
 | //# sourceMappingURL=utils.js.map
 | ||||||
| 
 | 
 | ||||||
| /***/ }), | /***/ }), | ||||||
| @ -1995,26 +2167,108 @@ module.exports = require("os"); | |||||||
| 
 | 
 | ||||||
| /***/ }), | /***/ }), | ||||||
| 
 | 
 | ||||||
|  | /***/ 95: | ||||||
|  | /***/ (function(__unusedmodule, exports) { | ||||||
|  | 
 | ||||||
|  | "use strict"; | ||||||
|  | 
 | ||||||
|  | Object.defineProperty(exports, "__esModule", { value: true }); | ||||||
|  | exports.checkBypass = exports.getProxyUrl = void 0; | ||||||
|  | function getProxyUrl(reqUrl) { | ||||||
|  |     const usingSsl = reqUrl.protocol === 'https:'; | ||||||
|  |     if (checkBypass(reqUrl)) { | ||||||
|  |         return undefined; | ||||||
|  |     } | ||||||
|  |     const proxyVar = (() => { | ||||||
|  |         if (usingSsl) { | ||||||
|  |             return process.env['https_proxy'] || process.env['HTTPS_PROXY']; | ||||||
|  |         } | ||||||
|  |         else { | ||||||
|  |             return process.env['http_proxy'] || process.env['HTTP_PROXY']; | ||||||
|  |         } | ||||||
|  |     })(); | ||||||
|  |     if (proxyVar) { | ||||||
|  |         return new URL(proxyVar); | ||||||
|  |     } | ||||||
|  |     else { | ||||||
|  |         return undefined; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | exports.getProxyUrl = getProxyUrl; | ||||||
|  | function checkBypass(reqUrl) { | ||||||
|  |     if (!reqUrl.hostname) { | ||||||
|  |         return false; | ||||||
|  |     } | ||||||
|  |     const noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || ''; | ||||||
|  |     if (!noProxy) { | ||||||
|  |         return false; | ||||||
|  |     } | ||||||
|  |     // Determine the request port
 | ||||||
|  |     let reqPort; | ||||||
|  |     if (reqUrl.port) { | ||||||
|  |         reqPort = Number(reqUrl.port); | ||||||
|  |     } | ||||||
|  |     else if (reqUrl.protocol === 'http:') { | ||||||
|  |         reqPort = 80; | ||||||
|  |     } | ||||||
|  |     else if (reqUrl.protocol === 'https:') { | ||||||
|  |         reqPort = 443; | ||||||
|  |     } | ||||||
|  |     // Format the request hostname and hostname with port
 | ||||||
|  |     const upperReqHosts = [reqUrl.hostname.toUpperCase()]; | ||||||
|  |     if (typeof reqPort === 'number') { | ||||||
|  |         upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`); | ||||||
|  |     } | ||||||
|  |     // Compare request host against noproxy
 | ||||||
|  |     for (const upperNoProxyItem of noProxy | ||||||
|  |         .split(',') | ||||||
|  |         .map(x => x.trim().toUpperCase()) | ||||||
|  |         .filter(x => x)) { | ||||||
|  |         if (upperReqHosts.some(x => x === upperNoProxyItem)) { | ||||||
|  |             return true; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     return false; | ||||||
|  | } | ||||||
|  | exports.checkBypass = checkBypass; | ||||||
|  | //# sourceMappingURL=proxy.js.map
 | ||||||
|  | 
 | ||||||
|  | /***/ }), | ||||||
|  | 
 | ||||||
| /***/ 102: | /***/ 102: | ||||||
| /***/ (function(__unusedmodule, exports, __webpack_require__) { | /***/ (function(__unusedmodule, exports, __webpack_require__) { | ||||||
| 
 | 
 | ||||||
| "use strict"; | "use strict"; | ||||||
| 
 | 
 | ||||||
| // For internal use, subject to change.
 | // For internal use, subject to change.
 | ||||||
|  | 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) { | var __importStar = (this && this.__importStar) || function (mod) { | ||||||
|     if (mod && mod.__esModule) return mod; |     if (mod && mod.__esModule) return mod; | ||||||
|     var result = {}; |     var result = {}; | ||||||
|     if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; |     if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); | ||||||
|     result["default"] = mod; |     __setModuleDefault(result, mod); | ||||||
|     return result; |     return result; | ||||||
| }; | }; | ||||||
| Object.defineProperty(exports, "__esModule", { value: true }); | Object.defineProperty(exports, "__esModule", { value: true }); | ||||||
|  | exports.prepareKeyValueMessage = exports.issueFileCommand = void 0; | ||||||
| // We use any as a valid input type
 | // We use any as a valid input type
 | ||||||
| /* eslint-disable @typescript-eslint/no-explicit-any */ | /* eslint-disable @typescript-eslint/no-explicit-any */ | ||||||
| const fs = __importStar(__webpack_require__(747)); | const fs = __importStar(__webpack_require__(747)); | ||||||
| const os = __importStar(__webpack_require__(87)); | const os = __importStar(__webpack_require__(87)); | ||||||
|  | const uuid_1 = __webpack_require__(25); | ||||||
| const utils_1 = __webpack_require__(82); | const utils_1 = __webpack_require__(82); | ||||||
| function issueCommand(command, message) { | function issueFileCommand(command, message) { | ||||||
|     const filePath = process.env[`GITHUB_${command}`]; |     const filePath = process.env[`GITHUB_${command}`]; | ||||||
|     if (!filePath) { |     if (!filePath) { | ||||||
|         throw new Error(`Unable to find environment variable for file command ${command}`); |         throw new Error(`Unable to find environment variable for file command ${command}`); | ||||||
| @ -2026,7 +2280,22 @@ function issueCommand(command, message) { | |||||||
|         encoding: 'utf8' |         encoding: 'utf8' | ||||||
|     }); |     }); | ||||||
| } | } | ||||||
| exports.issueCommand = issueCommand; | exports.issueFileCommand = issueFileCommand; | ||||||
|  | function prepareKeyValueMessage(key, value) { | ||||||
|  |     const delimiter = `ghadelimiter_${uuid_1.v4()}`; | ||||||
|  |     const convertedValue = utils_1.toCommandValue(value); | ||||||
|  |     // These should realistically never happen, but just in case someone finds a
 | ||||||
|  |     // way to exploit uuid generation let's not allow keys or values that contain
 | ||||||
|  |     // the delimiter.
 | ||||||
|  |     if (key.includes(delimiter)) { | ||||||
|  |         throw new Error(`Unexpected input: name should not contain the delimiter "${delimiter}"`); | ||||||
|  |     } | ||||||
|  |     if (convertedValue.includes(delimiter)) { | ||||||
|  |         throw new Error(`Unexpected input: value should not contain the delimiter "${delimiter}"`); | ||||||
|  |     } | ||||||
|  |     return `${key}<<${delimiter}${os.EOL}${convertedValue}${os.EOL}${delimiter}`; | ||||||
|  | } | ||||||
|  | exports.prepareKeyValueMessage = prepareKeyValueMessage; | ||||||
| //# sourceMappingURL=file-command.js.map
 | //# sourceMappingURL=file-command.js.map
 | ||||||
| 
 | 
 | ||||||
| /***/ }), | /***/ }), | ||||||
| @ -2981,6 +3250,119 @@ module.exports = require("child_process"); | |||||||
| 
 | 
 | ||||||
| /***/ }), | /***/ }), | ||||||
| 
 | 
 | ||||||
|  | /***/ 135: | ||||||
|  | /***/ (function(__unusedmodule, exports, __webpack_require__) { | ||||||
|  | 
 | ||||||
|  | "use strict"; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Object.defineProperty(exports, "__esModule", { | ||||||
|  |   value: true | ||||||
|  | }); | ||||||
|  | exports.default = void 0; | ||||||
|  | 
 | ||||||
|  | var _validate = _interopRequireDefault(__webpack_require__(634)); | ||||||
|  | 
 | ||||||
|  | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||||||
|  | 
 | ||||||
|  | function version(uuid) { | ||||||
|  |   if (!(0, _validate.default)(uuid)) { | ||||||
|  |     throw TypeError('Invalid UUID'); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   return parseInt(uuid.substr(14, 1), 16); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | var _default = version; | ||||||
|  | exports.default = _default; | ||||||
|  | 
 | ||||||
|  | /***/ }), | ||||||
|  | 
 | ||||||
|  | /***/ 136: | ||||||
|  | /***/ (function(__unusedmodule, exports, __webpack_require__) { | ||||||
|  | 
 | ||||||
|  | "use strict"; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Object.defineProperty(exports, "__esModule", { | ||||||
|  |   value: true | ||||||
|  | }); | ||||||
|  | exports.default = _default; | ||||||
|  | exports.URL = exports.DNS = void 0; | ||||||
|  | 
 | ||||||
|  | var _stringify = _interopRequireDefault(__webpack_require__(960)); | ||||||
|  | 
 | ||||||
|  | var _parse = _interopRequireDefault(__webpack_require__(204)); | ||||||
|  | 
 | ||||||
|  | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||||||
|  | 
 | ||||||
|  | function stringToBytes(str) { | ||||||
|  |   str = unescape(encodeURIComponent(str)); // UTF8 escape
 | ||||||
|  | 
 | ||||||
|  |   const bytes = []; | ||||||
|  | 
 | ||||||
|  |   for (let i = 0; i < str.length; ++i) { | ||||||
|  |     bytes.push(str.charCodeAt(i)); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   return bytes; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; | ||||||
|  | exports.DNS = DNS; | ||||||
|  | const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; | ||||||
|  | exports.URL = URL; | ||||||
|  | 
 | ||||||
|  | function _default(name, version, hashfunc) { | ||||||
|  |   function generateUUID(value, namespace, buf, offset) { | ||||||
|  |     if (typeof value === 'string') { | ||||||
|  |       value = stringToBytes(value); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     if (typeof namespace === 'string') { | ||||||
|  |       namespace = (0, _parse.default)(namespace); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     if (namespace.length !== 16) { | ||||||
|  |       throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); | ||||||
|  |     } // Compute hash of namespace and value, Per 4.3
 | ||||||
|  |     // Future: Use spread syntax when supported on all platforms, e.g. `bytes =
 | ||||||
|  |     // hashfunc([...namespace, ... value])`
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     let bytes = new Uint8Array(16 + value.length); | ||||||
|  |     bytes.set(namespace); | ||||||
|  |     bytes.set(value, namespace.length); | ||||||
|  |     bytes = hashfunc(bytes); | ||||||
|  |     bytes[6] = bytes[6] & 0x0f | version; | ||||||
|  |     bytes[8] = bytes[8] & 0x3f | 0x80; | ||||||
|  | 
 | ||||||
|  |     if (buf) { | ||||||
|  |       offset = offset || 0; | ||||||
|  | 
 | ||||||
|  |       for (let i = 0; i < 16; ++i) { | ||||||
|  |         buf[offset + i] = bytes[i]; | ||||||
|  |       } | ||||||
|  | 
 | ||||||
|  |       return buf; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     return (0, _stringify.default)(bytes); | ||||||
|  |   } // Function#name is not settable on some platforms (#270)
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |   try { | ||||||
|  |     generateUUID.name = name; // eslint-disable-next-line no-empty
 | ||||||
|  |   } catch (err) {} // For CommonJS default export support
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |   generateUUID.DNS = DNS; | ||||||
|  |   generateUUID.URL = URL; | ||||||
|  |   return generateUUID; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /***/ }), | ||||||
|  | 
 | ||||||
| /***/ 139: | /***/ 139: | ||||||
| /***/ (function(module, __unusedexports, __webpack_require__) { | /***/ (function(module, __unusedexports, __webpack_require__) { | ||||||
| 
 | 
 | ||||||
| @ -3005,7 +3387,7 @@ module.exports = function nodeRNG() { | |||||||
| var net = __webpack_require__(631); | var net = __webpack_require__(631); | ||||||
| var tls = __webpack_require__(16); | var tls = __webpack_require__(16); | ||||||
| var http = __webpack_require__(605); | var http = __webpack_require__(605); | ||||||
| var https = __webpack_require__(34); | var https = __webpack_require__(211); | ||||||
| var events = __webpack_require__(614); | var events = __webpack_require__(614); | ||||||
| var assert = __webpack_require__(357); | var assert = __webpack_require__(357); | ||||||
| var util = __webpack_require__(669); | var util = __webpack_require__(669); | ||||||
| @ -3592,49 +3974,60 @@ var __importStar = (this && this.__importStar) || function (mod) { | |||||||
|     return result; |     return result; | ||||||
| }; | }; | ||||||
| Object.defineProperty(exports, "__esModule", { value: true }); | Object.defineProperty(exports, "__esModule", { value: true }); | ||||||
| exports.setSshKnownHostsPath = exports.setSshKeyPath = exports.setRepositoryPath = exports.SshKnownHostsPath = exports.SshKeyPath = exports.RepositoryPath = exports.IsPost = void 0; | exports.setSafeDirectory = exports.setSshKnownHostsPath = exports.setSshKeyPath = exports.setRepositoryPath = exports.SshKnownHostsPath = exports.SshKeyPath = exports.PostSetSafeDirectory = exports.RepositoryPath = exports.IsPost = void 0; | ||||||
| const coreCommand = __importStar(__webpack_require__(431)); | const core = __importStar(__webpack_require__(470)); | ||||||
| /** | /** | ||||||
|  * Indicates whether the POST action is running |  * Indicates whether the POST action is running | ||||||
|  */ |  */ | ||||||
| exports.IsPost = !!process.env['STATE_isPost']; | exports.IsPost = !!core.getState('isPost'); | ||||||
| /** | /** | ||||||
|  * The repository path for the POST action. The value is empty during the MAIN action. |  * The repository path for the POST action. The value is empty during the MAIN action. | ||||||
|  */ |  */ | ||||||
| exports.RepositoryPath = process.env['STATE_repositoryPath'] || ''; | exports.RepositoryPath = core.getState('repositoryPath'); | ||||||
|  | /** | ||||||
|  |  * The set-safe-directory for the POST action. The value is set if input: 'safe-directory' is set during the MAIN action. | ||||||
|  |  */ | ||||||
|  | exports.PostSetSafeDirectory = core.getState('setSafeDirectory') === 'true'; | ||||||
| /** | /** | ||||||
|  * The SSH key path for the POST action. The value is empty during the MAIN action. |  * The SSH key path for the POST action. The value is empty during the MAIN action. | ||||||
|  */ |  */ | ||||||
| exports.SshKeyPath = process.env['STATE_sshKeyPath'] || ''; | exports.SshKeyPath = core.getState('sshKeyPath'); | ||||||
| /** | /** | ||||||
|  * The SSH known hosts path for the POST action. The value is empty during the MAIN action. |  * The SSH known hosts path for the POST action. The value is empty during the MAIN action. | ||||||
|  */ |  */ | ||||||
| exports.SshKnownHostsPath = process.env['STATE_sshKnownHostsPath'] || ''; | exports.SshKnownHostsPath = core.getState('sshKnownHostsPath'); | ||||||
| /** | /** | ||||||
|  * Save the repository path so the POST action can retrieve the value. |  * Save the repository path so the POST action can retrieve the value. | ||||||
|  */ |  */ | ||||||
| function setRepositoryPath(repositoryPath) { | function setRepositoryPath(repositoryPath) { | ||||||
|     coreCommand.issueCommand('save-state', { name: 'repositoryPath' }, repositoryPath); |     core.saveState('repositoryPath', repositoryPath); | ||||||
| } | } | ||||||
| exports.setRepositoryPath = setRepositoryPath; | exports.setRepositoryPath = setRepositoryPath; | ||||||
| /** | /** | ||||||
|  * Save the SSH key path so the POST action can retrieve the value. |  * Save the SSH key path so the POST action can retrieve the value. | ||||||
|  */ |  */ | ||||||
| function setSshKeyPath(sshKeyPath) { | function setSshKeyPath(sshKeyPath) { | ||||||
|     coreCommand.issueCommand('save-state', { name: 'sshKeyPath' }, sshKeyPath); |     core.saveState('sshKeyPath', sshKeyPath); | ||||||
| } | } | ||||||
| exports.setSshKeyPath = setSshKeyPath; | exports.setSshKeyPath = setSshKeyPath; | ||||||
| /** | /** | ||||||
|  * Save the SSH known hosts path so the POST action can retrieve the value. |  * Save the SSH known hosts path so the POST action can retrieve the value. | ||||||
|  */ |  */ | ||||||
| function setSshKnownHostsPath(sshKnownHostsPath) { | function setSshKnownHostsPath(sshKnownHostsPath) { | ||||||
|     coreCommand.issueCommand('save-state', { name: 'sshKnownHostsPath' }, sshKnownHostsPath); |     core.saveState('sshKnownHostsPath', sshKnownHostsPath); | ||||||
| } | } | ||||||
| exports.setSshKnownHostsPath = setSshKnownHostsPath; | exports.setSshKnownHostsPath = setSshKnownHostsPath; | ||||||
|  | /** | ||||||
|  |  * Save the sef-safe-directory input so the POST action can retrieve the value. | ||||||
|  |  */ | ||||||
|  | function setSafeDirectory() { | ||||||
|  |     core.saveState('setSafeDirectory', 'true'); | ||||||
|  | } | ||||||
|  | exports.setSafeDirectory = setSafeDirectory; | ||||||
| // Publish a variable so that when the POST action runs, it can determine it should run the cleanup logic.
 | // Publish a variable so that when the POST action runs, it can determine it should run the cleanup logic.
 | ||||||
| // This is necessary since we don't have a separate entry point.
 | // This is necessary since we don't have a separate entry point.
 | ||||||
| if (!exports.IsPost) { | if (!exports.IsPost) { | ||||||
|     coreCommand.issueCommand('save-state', { name: 'isPost' }, 'true'); |     core.saveState('isPost', 'true'); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -3711,7 +4104,7 @@ module.exports = bind.call(Function.call, Object.prototype.hasOwnProperty); | |||||||
| var net = __webpack_require__(631); | var net = __webpack_require__(631); | ||||||
| var tls = __webpack_require__(16); | var tls = __webpack_require__(16); | ||||||
| var http = __webpack_require__(605); | var http = __webpack_require__(605); | ||||||
| var https = __webpack_require__(34); | var https = __webpack_require__(211); | ||||||
| var events = __webpack_require__(614); | var events = __webpack_require__(614); | ||||||
| var assert = __webpack_require__(357); | var assert = __webpack_require__(357); | ||||||
| var util = __webpack_require__(669); | var util = __webpack_require__(669); | ||||||
| @ -3979,7 +4372,7 @@ exports.debug = debug; // for test | |||||||
| 
 | 
 | ||||||
| module.exports = authenticationPlugin; | module.exports = authenticationPlugin; | ||||||
| 
 | 
 | ||||||
| const { createTokenAuth } = __webpack_require__(813); | const { createTokenAuth } = __webpack_require__(68); | ||||||
| const { Deprecation } = __webpack_require__(692); | const { Deprecation } = __webpack_require__(692); | ||||||
| const once = __webpack_require__(969); | const once = __webpack_require__(969); | ||||||
| 
 | 
 | ||||||
| @ -4141,7 +4534,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge | |||||||
| Object.defineProperty(exports, "__esModule", { value: true }); | Object.defineProperty(exports, "__esModule", { value: true }); | ||||||
| const core = __importStar(__webpack_require__(470)); | const core = __importStar(__webpack_require__(470)); | ||||||
| const coreCommand = __importStar(__webpack_require__(431)); | const coreCommand = __importStar(__webpack_require__(431)); | ||||||
| const gitSourceProvider = __importStar(__webpack_require__(293)); | const gitSourceProvider = __importStar(__webpack_require__(853)); | ||||||
| const inputHelper = __importStar(__webpack_require__(821)); | const inputHelper = __importStar(__webpack_require__(821)); | ||||||
| const path = __importStar(__webpack_require__(622)); | const path = __importStar(__webpack_require__(622)); | ||||||
| const stateHelper = __importStar(__webpack_require__(153)); | const stateHelper = __importStar(__webpack_require__(153)); | ||||||
| @ -4189,33 +4582,62 @@ else { | |||||||
| 
 | 
 | ||||||
| /***/ }), | /***/ }), | ||||||
| 
 | 
 | ||||||
| /***/ 211: | /***/ 204: | ||||||
| /***/ (function(__unusedmodule, exports, __webpack_require__) { | /***/ (function(__unusedmodule, exports, __webpack_require__) { | ||||||
| 
 | 
 | ||||||
| "use strict"; | "use strict"; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| Object.defineProperty(exports, '__esModule', { value: true }); | Object.defineProperty(exports, "__esModule", { | ||||||
|  |   value: true | ||||||
|  | }); | ||||||
|  | exports.default = void 0; | ||||||
| 
 | 
 | ||||||
| function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } | var _validate = _interopRequireDefault(__webpack_require__(634)); | ||||||
| 
 | 
 | ||||||
| var osName = _interopDefault(__webpack_require__(2)); | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||||||
| 
 | 
 | ||||||
| function getUserAgent() { | function parse(uuid) { | ||||||
|   try { |   if (!(0, _validate.default)(uuid)) { | ||||||
|     return `Node.js/${process.version.substr(1)} (${osName()}; ${process.arch})`; |     throw TypeError('Invalid UUID'); | ||||||
|   } catch (error) { |  | ||||||
|     if (/wmic os get Caption/.test(error.message)) { |  | ||||||
|       return "Windows <version undetectable>"; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     return "<environment undetectable>"; |  | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
|  |   let v; | ||||||
|  |   const arr = new Uint8Array(16); // Parse ########-....-....-....-............
 | ||||||
|  | 
 | ||||||
|  |   arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; | ||||||
|  |   arr[1] = v >>> 16 & 0xff; | ||||||
|  |   arr[2] = v >>> 8 & 0xff; | ||||||
|  |   arr[3] = v & 0xff; // Parse ........-####-....-....-............
 | ||||||
|  | 
 | ||||||
|  |   arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; | ||||||
|  |   arr[5] = v & 0xff; // Parse ........-....-####-....-............
 | ||||||
|  | 
 | ||||||
|  |   arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; | ||||||
|  |   arr[7] = v & 0xff; // Parse ........-....-....-####-............
 | ||||||
|  | 
 | ||||||
|  |   arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; | ||||||
|  |   arr[9] = v & 0xff; // Parse ........-....-....-....-############
 | ||||||
|  |   // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes)
 | ||||||
|  | 
 | ||||||
|  |   arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; | ||||||
|  |   arr[11] = v / 0x100000000 & 0xff; | ||||||
|  |   arr[12] = v >>> 24 & 0xff; | ||||||
|  |   arr[13] = v >>> 16 & 0xff; | ||||||
|  |   arr[14] = v >>> 8 & 0xff; | ||||||
|  |   arr[15] = v & 0xff; | ||||||
|  |   return arr; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| exports.getUserAgent = getUserAgent; | var _default = parse; | ||||||
| //# sourceMappingURL=index.js.map
 | exports.default = _default; | ||||||
| 
 | 
 | ||||||
|  | /***/ }), | ||||||
|  | 
 | ||||||
|  | /***/ 211: | ||||||
|  | /***/ (function(module) { | ||||||
|  | 
 | ||||||
|  | module.exports = require("https"); | ||||||
| 
 | 
 | ||||||
| /***/ }), | /***/ }), | ||||||
| 
 | 
 | ||||||
| @ -6572,9 +6994,13 @@ class GitAuthHelper { | |||||||
|             yield this.configureToken(); |             yield this.configureToken(); | ||||||
|         }); |         }); | ||||||
|     } |     } | ||||||
|     configureGlobalAuth() { |     configureTempGlobalConfig() { | ||||||
|         var _a; |         var _a, _b; | ||||||
|         return __awaiter(this, void 0, void 0, function* () { |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|  |             // Already setup global config
 | ||||||
|  |             if (((_a = this.temporaryHomePath) === null || _a === void 0 ? void 0 : _a.length) > 0) { | ||||||
|  |                 return path.join(this.temporaryHomePath, '.gitconfig'); | ||||||
|  |             } | ||||||
|             // Create a temp home directory
 |             // Create a temp home directory
 | ||||||
|             const runnerTemp = process.env['RUNNER_TEMP'] || ''; |             const runnerTemp = process.env['RUNNER_TEMP'] || ''; | ||||||
|             assert.ok(runnerTemp, 'RUNNER_TEMP is not defined'); |             assert.ok(runnerTemp, 'RUNNER_TEMP is not defined'); | ||||||
| @ -6590,7 +7016,7 @@ class GitAuthHelper { | |||||||
|                 configExists = true; |                 configExists = true; | ||||||
|             } |             } | ||||||
|             catch (err) { |             catch (err) { | ||||||
|                 if (((_a = err) === null || _a === void 0 ? void 0 : _a.code) !== 'ENOENT') { |                 if (((_b = err) === null || _b === void 0 ? void 0 : _b.code) !== 'ENOENT') { | ||||||
|                     throw err; |                     throw err; | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
| @ -6601,10 +7027,17 @@ class GitAuthHelper { | |||||||
|             else { |             else { | ||||||
|                 yield fs.promises.writeFile(newGitConfigPath, ''); |                 yield fs.promises.writeFile(newGitConfigPath, ''); | ||||||
|             } |             } | ||||||
|  |             // Override HOME
 | ||||||
|  |             core.info(`Temporarily overriding HOME='${this.temporaryHomePath}' before making global git config changes`); | ||||||
|  |             this.git.setEnvironmentVariable('HOME', this.temporaryHomePath); | ||||||
|  |             return newGitConfigPath; | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  |     configureGlobalAuth() { | ||||||
|  |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|  |             // 'configureTempGlobalConfig' noops if already set, just returns the path
 | ||||||
|  |             const newGitConfigPath = yield this.configureTempGlobalConfig(); | ||||||
|             try { |             try { | ||||||
|                 // Override HOME
 |  | ||||||
|                 core.info(`Temporarily overriding HOME='${this.temporaryHomePath}' before making global git config changes`); |  | ||||||
|                 this.git.setEnvironmentVariable('HOME', this.temporaryHomePath); |  | ||||||
|                 // Configure the token
 |                 // Configure the token
 | ||||||
|                 yield this.configureToken(newGitConfigPath, true); |                 yield this.configureToken(newGitConfigPath, true); | ||||||
|                 // Configure HTTPS instead of SSH
 |                 // Configure HTTPS instead of SSH
 | ||||||
| @ -6657,11 +7090,14 @@ class GitAuthHelper { | |||||||
|             yield this.removeToken(); |             yield this.removeToken(); | ||||||
|         }); |         }); | ||||||
|     } |     } | ||||||
|     removeGlobalAuth() { |     removeGlobalConfig() { | ||||||
|  |         var _a; | ||||||
|         return __awaiter(this, void 0, void 0, function* () { |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|             core.debug(`Unsetting HOME override`); |             if (((_a = this.temporaryHomePath) === null || _a === void 0 ? void 0 : _a.length) > 0) { | ||||||
|             this.git.removeEnvironmentVariable('HOME'); |                 core.debug(`Unsetting HOME override`); | ||||||
|             yield io.rmRF(this.temporaryHomePath); |                 this.git.removeEnvironmentVariable('HOME'); | ||||||
|  |                 yield io.rmRF(this.temporaryHomePath); | ||||||
|  |             } | ||||||
|         }); |         }); | ||||||
|     } |     } | ||||||
|     configureSsh() { |     configureSsh() { | ||||||
| @ -7266,233 +7702,42 @@ class GitOutput { | |||||||
| 
 | 
 | ||||||
| "use strict"; | "use strict"; | ||||||
| 
 | 
 | ||||||
| var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | 
 | ||||||
|     if (k2 === undefined) k2 = k; | Object.defineProperty(exports, "__esModule", { | ||||||
|     Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); |   value: true | ||||||
| }) : (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) { | exports.default = void 0; | ||||||
|     if (mod && mod.__esModule) return mod; | 
 | ||||||
|     var result = {}; | var _rng = _interopRequireDefault(__webpack_require__(506)); | ||||||
|     if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); | 
 | ||||||
|     __setModuleDefault(result, mod); | var _stringify = _interopRequireDefault(__webpack_require__(960)); | ||||||
|     return result; | 
 | ||||||
| }; | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||||||
| var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | 
 | ||||||
|     function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } | function v4(options, buf, offset) { | ||||||
|     return new (P || (P = Promise))(function (resolve, reject) { |   options = options || {}; | ||||||
|         function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | 
 | ||||||
|         function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } |   const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
 | ||||||
|         function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } | 
 | ||||||
|         step((generator = generator.apply(thisArg, _arguments || [])).next()); | 
 | ||||||
|     }); |   rnds[6] = rnds[6] & 0x0f | 0x40; | ||||||
| }; |   rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided
 | ||||||
| Object.defineProperty(exports, "__esModule", { value: true }); | 
 | ||||||
| exports.cleanup = exports.getSource = void 0; |   if (buf) { | ||||||
| const core = __importStar(__webpack_require__(470)); |     offset = offset || 0; | ||||||
| const fsHelper = __importStar(__webpack_require__(618)); | 
 | ||||||
| const gitAuthHelper = __importStar(__webpack_require__(287)); |     for (let i = 0; i < 16; ++i) { | ||||||
| const gitCommandManager = __importStar(__webpack_require__(289)); |       buf[offset + i] = rnds[i]; | ||||||
| const gitDirectoryHelper = __importStar(__webpack_require__(438)); |     } | ||||||
| const githubApiHelper = __importStar(__webpack_require__(464)); | 
 | ||||||
| const io = __importStar(__webpack_require__(1)); |     return buf; | ||||||
| const path = __importStar(__webpack_require__(622)); |   } | ||||||
| const refHelper = __importStar(__webpack_require__(227)); | 
 | ||||||
| const stateHelper = __importStar(__webpack_require__(153)); |   return (0, _stringify.default)(rnds); | ||||||
| const urlHelper = __importStar(__webpack_require__(81)); |  | ||||||
| function getSource(settings) { |  | ||||||
|     return __awaiter(this, void 0, void 0, function* () { |  | ||||||
|         // Repository URL
 |  | ||||||
|         core.info(`Syncing repository: ${settings.repositoryOwner}/${settings.repositoryName}`); |  | ||||||
|         const repositoryUrl = urlHelper.getFetchUrl(settings); |  | ||||||
|         // Remove conflicting file path
 |  | ||||||
|         if (fsHelper.fileExistsSync(settings.repositoryPath)) { |  | ||||||
|             yield io.rmRF(settings.repositoryPath); |  | ||||||
|         } |  | ||||||
|         // Create directory
 |  | ||||||
|         let isExisting = true; |  | ||||||
|         if (!fsHelper.directoryExistsSync(settings.repositoryPath)) { |  | ||||||
|             isExisting = false; |  | ||||||
|             yield io.mkdirP(settings.repositoryPath); |  | ||||||
|         } |  | ||||||
|         // Git command manager
 |  | ||||||
|         core.startGroup('Getting Git version info'); |  | ||||||
|         const git = yield getGitCommandManager(settings); |  | ||||||
|         core.endGroup(); |  | ||||||
|         // Prepare existing directory, otherwise recreate
 |  | ||||||
|         if (isExisting) { |  | ||||||
|             yield gitDirectoryHelper.prepareExistingDirectory(git, settings.repositoryPath, repositoryUrl, settings.clean, settings.ref); |  | ||||||
|         } |  | ||||||
|         if (!git) { |  | ||||||
|             // Downloading using REST API
 |  | ||||||
|             core.info(`The repository will be downloaded using the GitHub REST API`); |  | ||||||
|             core.info(`To create a local Git repository instead, add Git ${gitCommandManager.MinimumGitVersion} or higher to the PATH`); |  | ||||||
|             if (settings.submodules) { |  | ||||||
|                 throw new Error(`Input 'submodules' not supported when falling back to download using the GitHub REST API. To create a local Git repository instead, add Git ${gitCommandManager.MinimumGitVersion} or higher to the PATH.`); |  | ||||||
|             } |  | ||||||
|             else if (settings.sshKey) { |  | ||||||
|                 throw new Error(`Input 'ssh-key' not supported when falling back to download using the GitHub REST API. To create a local Git repository instead, add Git ${gitCommandManager.MinimumGitVersion} or higher to the PATH.`); |  | ||||||
|             } |  | ||||||
|             yield githubApiHelper.downloadRepository(settings.authToken, settings.repositoryOwner, settings.repositoryName, settings.ref, settings.commit, settings.repositoryPath); |  | ||||||
|             return; |  | ||||||
|         } |  | ||||||
|         // Save state for POST action
 |  | ||||||
|         stateHelper.setRepositoryPath(settings.repositoryPath); |  | ||||||
|         // Initialize the repository
 |  | ||||||
|         if (!fsHelper.directoryExistsSync(path.join(settings.repositoryPath, '.git'))) { |  | ||||||
|             core.startGroup('Initializing the repository'); |  | ||||||
|             yield git.init(); |  | ||||||
|             yield git.remoteAdd('origin', repositoryUrl); |  | ||||||
|             core.endGroup(); |  | ||||||
|         } |  | ||||||
|         // Disable automatic garbage collection
 |  | ||||||
|         core.startGroup('Disabling automatic garbage collection'); |  | ||||||
|         if (!(yield git.tryDisableAutomaticGarbageCollection())) { |  | ||||||
|             core.warning(`Unable to turn off git automatic garbage collection. The git fetch operation may trigger garbage collection and cause a delay.`); |  | ||||||
|         } |  | ||||||
|         core.endGroup(); |  | ||||||
|         const authHelper = gitAuthHelper.createAuthHelper(git, settings); |  | ||||||
|         try { |  | ||||||
|             // Configure auth
 |  | ||||||
|             core.startGroup('Setting up auth'); |  | ||||||
|             yield authHelper.configureAuth(); |  | ||||||
|             core.endGroup(); |  | ||||||
|             // Determine the default branch
 |  | ||||||
|             if (!settings.ref && !settings.commit) { |  | ||||||
|                 core.startGroup('Determining the default branch'); |  | ||||||
|                 if (settings.sshKey) { |  | ||||||
|                     settings.ref = yield git.getDefaultBranch(repositoryUrl); |  | ||||||
|                 } |  | ||||||
|                 else { |  | ||||||
|                     settings.ref = yield githubApiHelper.getDefaultBranch(settings.authToken, settings.repositoryOwner, settings.repositoryName); |  | ||||||
|                 } |  | ||||||
|                 core.endGroup(); |  | ||||||
|             } |  | ||||||
|             // LFS install
 |  | ||||||
|             if (settings.lfs) { |  | ||||||
|                 yield git.lfsInstall(); |  | ||||||
|             } |  | ||||||
|             // Fetch
 |  | ||||||
|             core.startGroup('Fetching the repository'); |  | ||||||
|             if (settings.fetchDepth <= 0) { |  | ||||||
|                 // Fetch all branches and tags
 |  | ||||||
|                 let refSpec = refHelper.getRefSpecForAllHistory(settings.ref, settings.commit); |  | ||||||
|                 yield git.fetch(refSpec); |  | ||||||
|                 // When all history is fetched, the ref we're interested in may have moved to a different
 |  | ||||||
|                 // commit (push or force push). If so, fetch again with a targeted refspec.
 |  | ||||||
|                 if (!(yield refHelper.testRef(git, settings.ref, settings.commit))) { |  | ||||||
|                     refSpec = refHelper.getRefSpec(settings.ref, settings.commit); |  | ||||||
|                     yield git.fetch(refSpec); |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|             else { |  | ||||||
|                 const refSpec = refHelper.getRefSpec(settings.ref, settings.commit); |  | ||||||
|                 yield git.fetch(refSpec, settings.fetchDepth); |  | ||||||
|             } |  | ||||||
|             core.endGroup(); |  | ||||||
|             // Checkout info
 |  | ||||||
|             core.startGroup('Determining the checkout info'); |  | ||||||
|             const checkoutInfo = yield refHelper.getCheckoutInfo(git, settings.ref, settings.commit); |  | ||||||
|             core.endGroup(); |  | ||||||
|             // LFS fetch
 |  | ||||||
|             // Explicit lfs-fetch to avoid slow checkout (fetches one lfs object at a time).
 |  | ||||||
|             // Explicit lfs fetch will fetch lfs objects in parallel.
 |  | ||||||
|             if (settings.lfs) { |  | ||||||
|                 core.startGroup('Fetching LFS objects'); |  | ||||||
|                 yield git.lfsFetch(checkoutInfo.startPoint || checkoutInfo.ref); |  | ||||||
|                 core.endGroup(); |  | ||||||
|             } |  | ||||||
|             // Checkout
 |  | ||||||
|             core.startGroup('Checking out the ref'); |  | ||||||
|             yield git.checkout(checkoutInfo.ref, checkoutInfo.startPoint); |  | ||||||
|             core.endGroup(); |  | ||||||
|             // Submodules
 |  | ||||||
|             if (settings.submodules) { |  | ||||||
|                 try { |  | ||||||
|                     // Temporarily override global config
 |  | ||||||
|                     core.startGroup('Setting up auth for fetching submodules'); |  | ||||||
|                     yield authHelper.configureGlobalAuth(); |  | ||||||
|                     core.endGroup(); |  | ||||||
|                     // Checkout submodules
 |  | ||||||
|                     core.startGroup('Fetching submodules'); |  | ||||||
|                     yield git.submoduleSync(settings.nestedSubmodules); |  | ||||||
|                     yield git.submoduleUpdate(settings.fetchDepth, settings.nestedSubmodules); |  | ||||||
|                     yield git.submoduleForeach('git config --local gc.auto 0', settings.nestedSubmodules); |  | ||||||
|                     core.endGroup(); |  | ||||||
|                     // Persist credentials
 |  | ||||||
|                     if (settings.persistCredentials) { |  | ||||||
|                         core.startGroup('Persisting credentials for submodules'); |  | ||||||
|                         yield authHelper.configureSubmoduleAuth(); |  | ||||||
|                         core.endGroup(); |  | ||||||
|                     } |  | ||||||
|                 } |  | ||||||
|                 finally { |  | ||||||
|                     // Remove temporary global config override
 |  | ||||||
|                     yield authHelper.removeGlobalAuth(); |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|             // Get commit information
 |  | ||||||
|             const commitInfo = yield git.log1(); |  | ||||||
|             // Log commit sha
 |  | ||||||
|             yield git.log1("--format='%H'"); |  | ||||||
|             // Check for incorrect pull request merge commit
 |  | ||||||
|             yield refHelper.checkCommitInfo(settings.authToken, commitInfo, settings.repositoryOwner, settings.repositoryName, settings.ref, settings.commit); |  | ||||||
|         } |  | ||||||
|         finally { |  | ||||||
|             // Remove auth
 |  | ||||||
|             if (!settings.persistCredentials) { |  | ||||||
|                 core.startGroup('Removing auth'); |  | ||||||
|                 yield authHelper.removeAuth(); |  | ||||||
|                 core.endGroup(); |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|     }); |  | ||||||
| } |  | ||||||
| exports.getSource = getSource; |  | ||||||
| function cleanup(repositoryPath) { |  | ||||||
|     return __awaiter(this, void 0, void 0, function* () { |  | ||||||
|         // Repo exists?
 |  | ||||||
|         if (!repositoryPath || |  | ||||||
|             !fsHelper.fileExistsSync(path.join(repositoryPath, '.git', 'config'))) { |  | ||||||
|             return; |  | ||||||
|         } |  | ||||||
|         let git; |  | ||||||
|         try { |  | ||||||
|             git = yield gitCommandManager.createCommandManager(repositoryPath, false); |  | ||||||
|         } |  | ||||||
|         catch (_a) { |  | ||||||
|             return; |  | ||||||
|         } |  | ||||||
|         // Remove auth
 |  | ||||||
|         const authHelper = gitAuthHelper.createAuthHelper(git); |  | ||||||
|         yield authHelper.removeAuth(); |  | ||||||
|     }); |  | ||||||
| } |  | ||||||
| exports.cleanup = cleanup; |  | ||||||
| function getGitCommandManager(settings) { |  | ||||||
|     return __awaiter(this, void 0, void 0, function* () { |  | ||||||
|         core.info(`Working directory is '${settings.repositoryPath}'`); |  | ||||||
|         try { |  | ||||||
|             return yield gitCommandManager.createCommandManager(settings.repositoryPath, settings.lfs); |  | ||||||
|         } |  | ||||||
|         catch (err) { |  | ||||||
|             // Git is required for LFS
 |  | ||||||
|             if (settings.lfs) { |  | ||||||
|                 throw err; |  | ||||||
|             } |  | ||||||
|             // Otherwise fallback to REST API
 |  | ||||||
|             return undefined; |  | ||||||
|         } |  | ||||||
|     }); |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | var _default = v4; | ||||||
|  | exports.default = _default; | ||||||
| 
 | 
 | ||||||
| /***/ }), | /***/ }), | ||||||
| 
 | 
 | ||||||
| @ -7791,6 +8036,36 @@ isStream.transform = function (stream) { | |||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | /***/ }), | ||||||
|  | 
 | ||||||
|  | /***/ 329: | ||||||
|  | /***/ (function(__unusedmodule, exports, __webpack_require__) { | ||||||
|  | 
 | ||||||
|  | "use strict"; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Object.defineProperty(exports, "__esModule", { | ||||||
|  |   value: true | ||||||
|  | }); | ||||||
|  | exports.default = void 0; | ||||||
|  | 
 | ||||||
|  | var _crypto = _interopRequireDefault(__webpack_require__(417)); | ||||||
|  | 
 | ||||||
|  | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||||||
|  | 
 | ||||||
|  | function sha1(bytes) { | ||||||
|  |   if (Array.isArray(bytes)) { | ||||||
|  |     bytes = Buffer.from(bytes); | ||||||
|  |   } else if (typeof bytes === 'string') { | ||||||
|  |     bytes = Buffer.from(bytes, 'utf8'); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   return _crypto.default.createHash('sha1').update(bytes).digest(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | var _default = sha1; | ||||||
|  | exports.default = _default; | ||||||
|  | 
 | ||||||
| /***/ }), | /***/ }), | ||||||
| 
 | 
 | ||||||
| /***/ 330: | /***/ 330: | ||||||
| @ -8114,37 +8389,90 @@ module.exports = require("assert"); | |||||||
| /***/ }), | /***/ }), | ||||||
| 
 | 
 | ||||||
| /***/ 363: | /***/ 363: | ||||||
| /***/ (function(module) { | /***/ (function(__unusedmodule, exports) { | ||||||
| 
 | 
 | ||||||
| module.exports = register | "use strict"; | ||||||
| 
 | 
 | ||||||
| function register (state, name, method, options) { | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||||||
|   if (typeof method !== 'function') { |     function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } | ||||||
|     throw new Error('method for before hook must be a function') |     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); } } | ||||||
|   if (!options) { |         function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } | ||||||
|     options = {} |         step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||||||
|   } |     }); | ||||||
| 
 | }; | ||||||
|   if (Array.isArray(name)) { | Object.defineProperty(exports, "__esModule", { value: true }); | ||||||
|     return name.reverse().reduce(function (callback, name) { | exports.PersonalAccessTokenCredentialHandler = exports.BearerCredentialHandler = exports.BasicCredentialHandler = void 0; | ||||||
|       return register.bind(null, state, name, callback, options) | class BasicCredentialHandler { | ||||||
|     }, method)() |     constructor(username, password) { | ||||||
|   } |         this.username = username; | ||||||
| 
 |         this.password = password; | ||||||
|   return Promise.resolve() |     } | ||||||
|     .then(function () { |     prepareRequest(options) { | ||||||
|       if (!state.registry[name]) { |         if (!options.headers) { | ||||||
|         return method(options) |             throw Error('The request has no headers'); | ||||||
|       } |         } | ||||||
| 
 |         options.headers['Authorization'] = `Basic ${Buffer.from(`${this.username}:${this.password}`).toString('base64')}`; | ||||||
|       return (state.registry[name]).reduce(function (method, registered) { |     } | ||||||
|         return registered.hook.bind(null, method, options) |     // This handler cannot handle 401
 | ||||||
|       }, method)() |     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
 | ||||||
| 
 | 
 | ||||||
| /***/ }), | /***/ }), | ||||||
| 
 | 
 | ||||||
| @ -8621,6 +8949,36 @@ function readShebang(command) { | |||||||
| module.exports = readShebang; | module.exports = readShebang; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | /***/ }), | ||||||
|  | 
 | ||||||
|  | /***/ 392: | ||||||
|  | /***/ (function(__unusedmodule, exports, __webpack_require__) { | ||||||
|  | 
 | ||||||
|  | "use strict"; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Object.defineProperty(exports, '__esModule', { value: true }); | ||||||
|  | 
 | ||||||
|  | function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } | ||||||
|  | 
 | ||||||
|  | var osName = _interopDefault(__webpack_require__(2)); | ||||||
|  | 
 | ||||||
|  | function getUserAgent() { | ||||||
|  |   try { | ||||||
|  |     return `Node.js/${process.version.substr(1)} (${osName()}; ${process.arch})`; | ||||||
|  |   } catch (error) { | ||||||
|  |     if (/wmic os get Caption/.test(error.message)) { | ||||||
|  |       return "Windows <version undetectable>"; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     return "<environment undetectable>"; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | exports.getUserAgent = getUserAgent; | ||||||
|  | //# sourceMappingURL=index.js.map
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| /***/ }), | /***/ }), | ||||||
| 
 | 
 | ||||||
| /***/ 402: | /***/ 402: | ||||||
| @ -8660,9 +9018,10 @@ function Octokit(plugins, options) { | |||||||
| /***/ }), | /***/ }), | ||||||
| 
 | 
 | ||||||
| /***/ 413: | /***/ 413: | ||||||
| /***/ (function(module) { | /***/ (function(module, __unusedexports, __webpack_require__) { | ||||||
|  | 
 | ||||||
|  | module.exports = __webpack_require__(141); | ||||||
| 
 | 
 | ||||||
| module.exports = require("stream"); |  | ||||||
| 
 | 
 | ||||||
| /***/ }), | /***/ }), | ||||||
| 
 | 
 | ||||||
| @ -8739,14 +9098,27 @@ function octokitValidate(octokit) { | |||||||
| 
 | 
 | ||||||
| "use strict"; | "use strict"; | ||||||
| 
 | 
 | ||||||
|  | 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) { | var __importStar = (this && this.__importStar) || function (mod) { | ||||||
|     if (mod && mod.__esModule) return mod; |     if (mod && mod.__esModule) return mod; | ||||||
|     var result = {}; |     var result = {}; | ||||||
|     if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; |     if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); | ||||||
|     result["default"] = mod; |     __setModuleDefault(result, mod); | ||||||
|     return result; |     return result; | ||||||
| }; | }; | ||||||
| Object.defineProperty(exports, "__esModule", { value: true }); | Object.defineProperty(exports, "__esModule", { value: true }); | ||||||
|  | exports.issue = exports.issueCommand = void 0; | ||||||
| const os = __importStar(__webpack_require__(87)); | const os = __importStar(__webpack_require__(87)); | ||||||
| const utils_1 = __webpack_require__(82); | const utils_1 = __webpack_require__(82); | ||||||
| /** | /** | ||||||
| @ -9057,11 +9429,11 @@ Object.defineProperty(exports, '__esModule', { value: true }); | |||||||
| 
 | 
 | ||||||
| function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } | function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } | ||||||
| 
 | 
 | ||||||
| var Stream = _interopDefault(__webpack_require__(413)); | var Stream = _interopDefault(__webpack_require__(794)); | ||||||
| var http = _interopDefault(__webpack_require__(605)); | var http = _interopDefault(__webpack_require__(605)); | ||||||
| var Url = _interopDefault(__webpack_require__(835)); | var Url = _interopDefault(__webpack_require__(835)); | ||||||
| var whatwgUrl = _interopDefault(__webpack_require__(70)); | var whatwgUrl = _interopDefault(__webpack_require__(70)); | ||||||
| var https = _interopDefault(__webpack_require__(34)); | var https = _interopDefault(__webpack_require__(211)); | ||||||
| var zlib = _interopDefault(__webpack_require__(761)); | var zlib = _interopDefault(__webpack_require__(761)); | ||||||
| 
 | 
 | ||||||
| // Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js
 | // Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js
 | ||||||
| @ -11119,6 +11491,25 @@ exports.GitHub = GitHub; | |||||||
| 
 | 
 | ||||||
| "use strict"; | "use strict"; | ||||||
| 
 | 
 | ||||||
|  | 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) { | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||||||
|     function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } |     function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } | ||||||
|     return new (P || (P = Promise))(function (resolve, reject) { |     return new (P || (P = Promise))(function (resolve, reject) { | ||||||
| @ -11128,19 +11519,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge | |||||||
|         step((generator = generator.apply(thisArg, _arguments || [])).next()); |         step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||||||
|     }); |     }); | ||||||
| }; | }; | ||||||
| var __importStar = (this && this.__importStar) || function (mod) { |  | ||||||
|     if (mod && mod.__esModule) return mod; |  | ||||||
|     var result = {}; |  | ||||||
|     if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; |  | ||||||
|     result["default"] = mod; |  | ||||||
|     return result; |  | ||||||
| }; |  | ||||||
| Object.defineProperty(exports, "__esModule", { value: true }); | Object.defineProperty(exports, "__esModule", { value: true }); | ||||||
|  | exports.getIDToken = exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0; | ||||||
| const command_1 = __webpack_require__(431); | const command_1 = __webpack_require__(431); | ||||||
| const file_command_1 = __webpack_require__(102); | const file_command_1 = __webpack_require__(102); | ||||||
| const utils_1 = __webpack_require__(82); | const utils_1 = __webpack_require__(82); | ||||||
| const os = __importStar(__webpack_require__(87)); | const os = __importStar(__webpack_require__(87)); | ||||||
| const path = __importStar(__webpack_require__(622)); | const path = __importStar(__webpack_require__(622)); | ||||||
|  | const oidc_utils_1 = __webpack_require__(742); | ||||||
| /** | /** | ||||||
|  * The code to exit an action |  * The code to exit an action | ||||||
|  */ |  */ | ||||||
| @ -11169,13 +11555,9 @@ function exportVariable(name, val) { | |||||||
|     process.env[name] = convertedVal; |     process.env[name] = convertedVal; | ||||||
|     const filePath = process.env['GITHUB_ENV'] || ''; |     const filePath = process.env['GITHUB_ENV'] || ''; | ||||||
|     if (filePath) { |     if (filePath) { | ||||||
|         const delimiter = '_GitHubActionsFileCommandDelimeter_'; |         return file_command_1.issueFileCommand('ENV', file_command_1.prepareKeyValueMessage(name, val)); | ||||||
|         const commandValue = `${name}<<${delimiter}${os.EOL}${convertedVal}${os.EOL}${delimiter}`; |  | ||||||
|         file_command_1.issueCommand('ENV', commandValue); |  | ||||||
|     } |  | ||||||
|     else { |  | ||||||
|         command_1.issueCommand('set-env', { name }, convertedVal); |  | ||||||
|     } |     } | ||||||
|  |     command_1.issueCommand('set-env', { name }, convertedVal); | ||||||
| } | } | ||||||
| exports.exportVariable = exportVariable; | exports.exportVariable = exportVariable; | ||||||
| /** | /** | ||||||
| @ -11193,7 +11575,7 @@ exports.setSecret = setSecret; | |||||||
| function addPath(inputPath) { | function addPath(inputPath) { | ||||||
|     const filePath = process.env['GITHUB_PATH'] || ''; |     const filePath = process.env['GITHUB_PATH'] || ''; | ||||||
|     if (filePath) { |     if (filePath) { | ||||||
|         file_command_1.issueCommand('PATH', inputPath); |         file_command_1.issueFileCommand('PATH', inputPath); | ||||||
|     } |     } | ||||||
|     else { |     else { | ||||||
|         command_1.issueCommand('add-path', {}, inputPath); |         command_1.issueCommand('add-path', {}, inputPath); | ||||||
| @ -11202,7 +11584,9 @@ function addPath(inputPath) { | |||||||
| } | } | ||||||
| exports.addPath = addPath; | exports.addPath = addPath; | ||||||
| /** | /** | ||||||
|  * Gets the value of an input.  The value is also trimmed. |  * Gets the value of an input. | ||||||
|  |  * Unless trimWhitespace is set to false in InputOptions, the value is also trimmed. | ||||||
|  |  * Returns an empty string if the value is not defined. | ||||||
|  * |  * | ||||||
|  * @param     name     name of the input to get |  * @param     name     name of the input to get | ||||||
|  * @param     options  optional. See InputOptions. |  * @param     options  optional. See InputOptions. | ||||||
| @ -11213,9 +11597,52 @@ function getInput(name, options) { | |||||||
|     if (options && options.required && !val) { |     if (options && options.required && !val) { | ||||||
|         throw new Error(`Input required and not supplied: ${name}`); |         throw new Error(`Input required and not supplied: ${name}`); | ||||||
|     } |     } | ||||||
|  |     if (options && options.trimWhitespace === false) { | ||||||
|  |         return val; | ||||||
|  |     } | ||||||
|     return val.trim(); |     return val.trim(); | ||||||
| } | } | ||||||
| exports.getInput = getInput; | exports.getInput = getInput; | ||||||
|  | /** | ||||||
|  |  * Gets the values of an multiline input.  Each value is also trimmed. | ||||||
|  |  * | ||||||
|  |  * @param     name     name of the input to get | ||||||
|  |  * @param     options  optional. See InputOptions. | ||||||
|  |  * @returns   string[] | ||||||
|  |  * | ||||||
|  |  */ | ||||||
|  | function getMultilineInput(name, options) { | ||||||
|  |     const inputs = getInput(name, options) | ||||||
|  |         .split('\n') | ||||||
|  |         .filter(x => x !== ''); | ||||||
|  |     if (options && options.trimWhitespace === false) { | ||||||
|  |         return inputs; | ||||||
|  |     } | ||||||
|  |     return inputs.map(input => input.trim()); | ||||||
|  | } | ||||||
|  | exports.getMultilineInput = getMultilineInput; | ||||||
|  | /** | ||||||
|  |  * Gets the input value of the boolean type in the YAML 1.2 "core schema" specification. | ||||||
|  |  * Support boolean input list: `true | True | TRUE | false | False | FALSE` . | ||||||
|  |  * The return value is also in boolean type. | ||||||
|  |  * ref: https://yaml.org/spec/1.2/spec.html#id2804923
 | ||||||
|  |  * | ||||||
|  |  * @param     name     name of the input to get | ||||||
|  |  * @param     options  optional. See InputOptions. | ||||||
|  |  * @returns   boolean | ||||||
|  |  */ | ||||||
|  | function getBooleanInput(name, options) { | ||||||
|  |     const trueValue = ['true', 'True', 'TRUE']; | ||||||
|  |     const falseValue = ['false', 'False', 'FALSE']; | ||||||
|  |     const val = getInput(name, options); | ||||||
|  |     if (trueValue.includes(val)) | ||||||
|  |         return true; | ||||||
|  |     if (falseValue.includes(val)) | ||||||
|  |         return false; | ||||||
|  |     throw new TypeError(`Input does not meet YAML 1.2 "Core Schema" specification: ${name}\n` + | ||||||
|  |         `Support boolean input list: \`true | True | TRUE | false | False | FALSE\``); | ||||||
|  | } | ||||||
|  | exports.getBooleanInput = getBooleanInput; | ||||||
| /** | /** | ||||||
|  * Sets the value of an output. |  * Sets the value of an output. | ||||||
|  * |  * | ||||||
| @ -11224,7 +11651,12 @@ exports.getInput = getInput; | |||||||
|  */ |  */ | ||||||
| // eslint-disable-next-line @typescript-eslint/no-explicit-any
 | // eslint-disable-next-line @typescript-eslint/no-explicit-any
 | ||||||
| function setOutput(name, value) { | function setOutput(name, value) { | ||||||
|     command_1.issueCommand('set-output', { name }, value); |     const filePath = process.env['GITHUB_OUTPUT'] || ''; | ||||||
|  |     if (filePath) { | ||||||
|  |         return file_command_1.issueFileCommand('OUTPUT', file_command_1.prepareKeyValueMessage(name, value)); | ||||||
|  |     } | ||||||
|  |     process.stdout.write(os.EOL); | ||||||
|  |     command_1.issueCommand('set-output', { name }, utils_1.toCommandValue(value)); | ||||||
| } | } | ||||||
| exports.setOutput = setOutput; | exports.setOutput = setOutput; | ||||||
| /** | /** | ||||||
| @ -11270,19 +11702,30 @@ exports.debug = debug; | |||||||
| /** | /** | ||||||
|  * Adds an error issue |  * Adds an error issue | ||||||
|  * @param message error issue message. Errors will be converted to string via toString() |  * @param message error issue message. Errors will be converted to string via toString() | ||||||
|  |  * @param properties optional properties to add to the annotation. | ||||||
|  */ |  */ | ||||||
| function error(message) { | function error(message, properties = {}) { | ||||||
|     command_1.issue('error', message instanceof Error ? message.toString() : message); |     command_1.issueCommand('error', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message); | ||||||
| } | } | ||||||
| exports.error = error; | exports.error = error; | ||||||
| /** | /** | ||||||
|  * Adds an warning issue |  * Adds a warning issue | ||||||
|  * @param message warning issue message. Errors will be converted to string via toString() |  * @param message warning issue message. Errors will be converted to string via toString() | ||||||
|  |  * @param properties optional properties to add to the annotation. | ||||||
|  */ |  */ | ||||||
| function warning(message) { | function warning(message, properties = {}) { | ||||||
|     command_1.issue('warning', message instanceof Error ? message.toString() : message); |     command_1.issueCommand('warning', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message); | ||||||
| } | } | ||||||
| exports.warning = warning; | exports.warning = warning; | ||||||
|  | /** | ||||||
|  |  * Adds a notice issue | ||||||
|  |  * @param message notice issue message. Errors will be converted to string via toString() | ||||||
|  |  * @param properties optional properties to add to the annotation. | ||||||
|  |  */ | ||||||
|  | function notice(message, properties = {}) { | ||||||
|  |     command_1.issueCommand('notice', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message); | ||||||
|  | } | ||||||
|  | exports.notice = notice; | ||||||
| /** | /** | ||||||
|  * Writes info to log with console.log. |  * Writes info to log with console.log. | ||||||
|  * @param message info message |  * @param message info message | ||||||
| @ -11342,7 +11785,11 @@ exports.group = group; | |||||||
|  */ |  */ | ||||||
| // eslint-disable-next-line @typescript-eslint/no-explicit-any
 | // eslint-disable-next-line @typescript-eslint/no-explicit-any
 | ||||||
| function saveState(name, value) { | function saveState(name, value) { | ||||||
|     command_1.issueCommand('save-state', { name }, value); |     const filePath = process.env['GITHUB_STATE'] || ''; | ||||||
|  |     if (filePath) { | ||||||
|  |         return file_command_1.issueFileCommand('STATE', file_command_1.prepareKeyValueMessage(name, value)); | ||||||
|  |     } | ||||||
|  |     command_1.issueCommand('save-state', { name }, utils_1.toCommandValue(value)); | ||||||
| } | } | ||||||
| exports.saveState = saveState; | exports.saveState = saveState; | ||||||
| /** | /** | ||||||
| @ -11355,6 +11802,29 @@ function getState(name) { | |||||||
|     return process.env[`STATE_${name}`] || ''; |     return process.env[`STATE_${name}`] || ''; | ||||||
| } | } | ||||||
| exports.getState = getState; | exports.getState = getState; | ||||||
|  | function getIDToken(aud) { | ||||||
|  |     return __awaiter(this, void 0, void 0, function* () { | ||||||
|  |         return yield oidc_utils_1.OidcClient.getIDToken(aud); | ||||||
|  |     }); | ||||||
|  | } | ||||||
|  | exports.getIDToken = getIDToken; | ||||||
|  | /** | ||||||
|  |  * Summary exports | ||||||
|  |  */ | ||||||
|  | var summary_1 = __webpack_require__(665); | ||||||
|  | Object.defineProperty(exports, "summary", { enumerable: true, get: function () { return summary_1.summary; } }); | ||||||
|  | /** | ||||||
|  |  * @deprecated use core.summary | ||||||
|  |  */ | ||||||
|  | var summary_2 = __webpack_require__(665); | ||||||
|  | Object.defineProperty(exports, "markdownSummary", { enumerable: true, get: function () { return summary_2.markdownSummary; } }); | ||||||
|  | /** | ||||||
|  |  * Path exports | ||||||
|  |  */ | ||||||
|  | var path_utils_1 = __webpack_require__(573); | ||||||
|  | Object.defineProperty(exports, "toPosixPath", { enumerable: true, get: function () { return path_utils_1.toPosixPath; } }); | ||||||
|  | Object.defineProperty(exports, "toWin32Path", { enumerable: true, get: function () { return path_utils_1.toWin32Path; } }); | ||||||
|  | Object.defineProperty(exports, "toPlatformPath", { enumerable: true, get: function () { return path_utils_1.toPlatformPath; } }); | ||||||
| //# sourceMappingURL=core.js.map
 | //# sourceMappingURL=core.js.map
 | ||||||
| 
 | 
 | ||||||
| /***/ }), | /***/ }), | ||||||
| @ -11532,6 +12002,72 @@ exports.RequestError = RequestError; | |||||||
| //# sourceMappingURL=index.js.map
 | //# sourceMappingURL=index.js.map
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | /***/ }), | ||||||
|  | 
 | ||||||
|  | /***/ 501: | ||||||
|  | /***/ (function(module) { | ||||||
|  | 
 | ||||||
|  | module.exports = register | ||||||
|  | 
 | ||||||
|  | function register (state, name, method, options) { | ||||||
|  |   if (typeof method !== 'function') { | ||||||
|  |     throw new Error('method for before hook must be a function') | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   if (!options) { | ||||||
|  |     options = {} | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   if (Array.isArray(name)) { | ||||||
|  |     return name.reverse().reduce(function (callback, name) { | ||||||
|  |       return register.bind(null, state, name, callback, options) | ||||||
|  |     }, method)() | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   return Promise.resolve() | ||||||
|  |     .then(function () { | ||||||
|  |       if (!state.registry[name]) { | ||||||
|  |         return method(options) | ||||||
|  |       } | ||||||
|  | 
 | ||||||
|  |       return (state.registry[name]).reduce(function (method, registered) { | ||||||
|  |         return registered.hook.bind(null, method, options) | ||||||
|  |       }, method)() | ||||||
|  |     }) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /***/ }), | ||||||
|  | 
 | ||||||
|  | /***/ 506: | ||||||
|  | /***/ (function(__unusedmodule, exports, __webpack_require__) { | ||||||
|  | 
 | ||||||
|  | "use strict"; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Object.defineProperty(exports, "__esModule", { | ||||||
|  |   value: true | ||||||
|  | }); | ||||||
|  | exports.default = rng; | ||||||
|  | 
 | ||||||
|  | var _crypto = _interopRequireDefault(__webpack_require__(417)); | ||||||
|  | 
 | ||||||
|  | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||||||
|  | 
 | ||||||
|  | const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate
 | ||||||
|  | 
 | ||||||
|  | let poolPtr = rnds8Pool.length; | ||||||
|  | 
 | ||||||
|  | function rng() { | ||||||
|  |   if (poolPtr > rnds8Pool.length - 16) { | ||||||
|  |     _crypto.default.randomFillSync(rnds8Pool); | ||||||
|  | 
 | ||||||
|  |     poolPtr = 0; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   return rnds8Pool.slice(poolPtr, poolPtr += 16); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| /***/ }), | /***/ }), | ||||||
| 
 | 
 | ||||||
| /***/ 510: | /***/ 510: | ||||||
| @ -11590,7 +12126,7 @@ function addHook (state, kind, name, hook) { | |||||||
| /***/ 523: | /***/ 523: | ||||||
| /***/ (function(module, __unusedexports, __webpack_require__) { | /***/ (function(module, __unusedexports, __webpack_require__) { | ||||||
| 
 | 
 | ||||||
| var register = __webpack_require__(363) | var register = __webpack_require__(501) | ||||||
| var addHook = __webpack_require__(510) | var addHook = __webpack_require__(510) | ||||||
| var removeHook = __webpack_require__(763) | var removeHook = __webpack_require__(763) | ||||||
| 
 | 
 | ||||||
| @ -11649,6 +12185,21 @@ module.exports.Singular = Hook.Singular | |||||||
| module.exports.Collection = Hook.Collection | module.exports.Collection = Hook.Collection | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | /***/ }), | ||||||
|  | 
 | ||||||
|  | /***/ 525: | ||||||
|  | /***/ (function(__unusedmodule, exports) { | ||||||
|  | 
 | ||||||
|  | "use strict"; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Object.defineProperty(exports, "__esModule", { | ||||||
|  |   value: true | ||||||
|  | }); | ||||||
|  | exports.default = void 0; | ||||||
|  | var _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i; | ||||||
|  | exports.default = _default; | ||||||
|  | 
 | ||||||
| /***/ }), | /***/ }), | ||||||
| 
 | 
 | ||||||
| /***/ 528: | /***/ 528: | ||||||
| @ -12147,7 +12698,7 @@ function hasFirstPage (link) { | |||||||
| Object.defineProperty(exports, "__esModule", { value: true }); | Object.defineProperty(exports, "__esModule", { value: true }); | ||||||
| const url = __webpack_require__(835); | const url = __webpack_require__(835); | ||||||
| const http = __webpack_require__(605); | const http = __webpack_require__(605); | ||||||
| const https = __webpack_require__(34); | const https = __webpack_require__(211); | ||||||
| const pm = __webpack_require__(950); | const pm = __webpack_require__(950); | ||||||
| let tunnel; | let tunnel; | ||||||
| var HttpCodes; | var HttpCodes; | ||||||
| @ -12963,6 +13514,94 @@ function parse(command, args, options) { | |||||||
| module.exports = parse; | module.exports = parse; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | /***/ }), | ||||||
|  | 
 | ||||||
|  | /***/ 572: | ||||||
|  | /***/ (function(__unusedmodule, exports, __webpack_require__) { | ||||||
|  | 
 | ||||||
|  | "use strict"; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Object.defineProperty(exports, "__esModule", { | ||||||
|  |   value: true | ||||||
|  | }); | ||||||
|  | exports.default = void 0; | ||||||
|  | 
 | ||||||
|  | var _v = _interopRequireDefault(__webpack_require__(136)); | ||||||
|  | 
 | ||||||
|  | var _md = _interopRequireDefault(__webpack_require__(659)); | ||||||
|  | 
 | ||||||
|  | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||||||
|  | 
 | ||||||
|  | const v3 = (0, _v.default)('v3', 0x30, _md.default); | ||||||
|  | var _default = v3; | ||||||
|  | exports.default = _default; | ||||||
|  | 
 | ||||||
|  | /***/ }), | ||||||
|  | 
 | ||||||
|  | /***/ 573: | ||||||
|  | /***/ (function(__unusedmodule, exports, __webpack_require__) { | ||||||
|  | 
 | ||||||
|  | "use strict"; | ||||||
|  | 
 | ||||||
|  | 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; | ||||||
|  | }; | ||||||
|  | Object.defineProperty(exports, "__esModule", { value: true }); | ||||||
|  | exports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = void 0; | ||||||
|  | const path = __importStar(__webpack_require__(622)); | ||||||
|  | /** | ||||||
|  |  * toPosixPath converts the given path to the posix form. On Windows, \\ will be | ||||||
|  |  * replaced with /. | ||||||
|  |  * | ||||||
|  |  * @param pth. Path to transform. | ||||||
|  |  * @return string Posix path. | ||||||
|  |  */ | ||||||
|  | function toPosixPath(pth) { | ||||||
|  |     return pth.replace(/[\\]/g, '/'); | ||||||
|  | } | ||||||
|  | exports.toPosixPath = toPosixPath; | ||||||
|  | /** | ||||||
|  |  * toWin32Path converts the given path to the win32 form. On Linux, / will be | ||||||
|  |  * replaced with \\. | ||||||
|  |  * | ||||||
|  |  * @param pth. Path to transform. | ||||||
|  |  * @return string Win32 path. | ||||||
|  |  */ | ||||||
|  | function toWin32Path(pth) { | ||||||
|  |     return pth.replace(/[/]/g, '\\'); | ||||||
|  | } | ||||||
|  | exports.toWin32Path = toWin32Path; | ||||||
|  | /** | ||||||
|  |  * toPlatformPath converts the given path to a platform-specific path. It does | ||||||
|  |  * this by replacing instances of / and \ with the platform-specific path | ||||||
|  |  * separator. | ||||||
|  |  * | ||||||
|  |  * @param pth The path to platformize. | ||||||
|  |  * @return string The platform-specific path. | ||||||
|  |  */ | ||||||
|  | function toPlatformPath(pth) { | ||||||
|  |     return pth.replace(/[/\\]/g, path.sep); | ||||||
|  | } | ||||||
|  | exports.toPlatformPath = toPlatformPath; | ||||||
|  | //# sourceMappingURL=path-utils.js.map
 | ||||||
|  | 
 | ||||||
| /***/ }), | /***/ }), | ||||||
| 
 | 
 | ||||||
| /***/ 577: | /***/ 577: | ||||||
| @ -13532,6 +14171,53 @@ module.exports = require("net"); | |||||||
| 
 | 
 | ||||||
| /***/ }), | /***/ }), | ||||||
| 
 | 
 | ||||||
|  | /***/ 634: | ||||||
|  | /***/ (function(__unusedmodule, exports, __webpack_require__) { | ||||||
|  | 
 | ||||||
|  | "use strict"; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Object.defineProperty(exports, "__esModule", { | ||||||
|  |   value: true | ||||||
|  | }); | ||||||
|  | exports.default = void 0; | ||||||
|  | 
 | ||||||
|  | var _regex = _interopRequireDefault(__webpack_require__(525)); | ||||||
|  | 
 | ||||||
|  | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||||||
|  | 
 | ||||||
|  | function validate(uuid) { | ||||||
|  |   return typeof uuid === 'string' && _regex.default.test(uuid); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | var _default = validate; | ||||||
|  | exports.default = _default; | ||||||
|  | 
 | ||||||
|  | /***/ }), | ||||||
|  | 
 | ||||||
|  | /***/ 638: | ||||||
|  | /***/ (function(__unusedmodule, exports, __webpack_require__) { | ||||||
|  | 
 | ||||||
|  | "use strict"; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Object.defineProperty(exports, "__esModule", { | ||||||
|  |   value: true | ||||||
|  | }); | ||||||
|  | exports.default = void 0; | ||||||
|  | 
 | ||||||
|  | var _v = _interopRequireDefault(__webpack_require__(136)); | ||||||
|  | 
 | ||||||
|  | var _sha = _interopRequireDefault(__webpack_require__(329)); | ||||||
|  | 
 | ||||||
|  | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||||||
|  | 
 | ||||||
|  | const v5 = (0, _v.default)('v5', 0x50, _sha.default); | ||||||
|  | var _default = v5; | ||||||
|  | exports.default = _default; | ||||||
|  | 
 | ||||||
|  | /***/ }), | ||||||
|  | 
 | ||||||
| /***/ 642: | /***/ 642: | ||||||
| /***/ (function(__unusedmodule, exports, __webpack_require__) { | /***/ (function(__unusedmodule, exports, __webpack_require__) { | ||||||
| 
 | 
 | ||||||
| @ -15290,6 +15976,326 @@ function coerce (version, options) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | /***/ }), | ||||||
|  | 
 | ||||||
|  | /***/ 659: | ||||||
|  | /***/ (function(__unusedmodule, exports, __webpack_require__) { | ||||||
|  | 
 | ||||||
|  | "use strict"; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Object.defineProperty(exports, "__esModule", { | ||||||
|  |   value: true | ||||||
|  | }); | ||||||
|  | exports.default = void 0; | ||||||
|  | 
 | ||||||
|  | var _crypto = _interopRequireDefault(__webpack_require__(417)); | ||||||
|  | 
 | ||||||
|  | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||||||
|  | 
 | ||||||
|  | function md5(bytes) { | ||||||
|  |   if (Array.isArray(bytes)) { | ||||||
|  |     bytes = Buffer.from(bytes); | ||||||
|  |   } else if (typeof bytes === 'string') { | ||||||
|  |     bytes = Buffer.from(bytes, 'utf8'); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   return _crypto.default.createHash('md5').update(bytes).digest(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | var _default = md5; | ||||||
|  | exports.default = _default; | ||||||
|  | 
 | ||||||
|  | /***/ }), | ||||||
|  | 
 | ||||||
|  | /***/ 665: | ||||||
|  | /***/ (function(__unusedmodule, exports, __webpack_require__) { | ||||||
|  | 
 | ||||||
|  | "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.summary = exports.markdownSummary = exports.SUMMARY_DOCS_URL = exports.SUMMARY_ENV_VAR = void 0; | ||||||
|  | const os_1 = __webpack_require__(87); | ||||||
|  | const fs_1 = __webpack_require__(747); | ||||||
|  | const { access, appendFile, writeFile } = fs_1.promises; | ||||||
|  | exports.SUMMARY_ENV_VAR = 'GITHUB_STEP_SUMMARY'; | ||||||
|  | exports.SUMMARY_DOCS_URL = 'https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary'; | ||||||
|  | class Summary { | ||||||
|  |     constructor() { | ||||||
|  |         this._buffer = ''; | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * Finds the summary file path from the environment, rejects if env var is not found or file does not exist | ||||||
|  |      * Also checks r/w permissions. | ||||||
|  |      * | ||||||
|  |      * @returns step summary file path | ||||||
|  |      */ | ||||||
|  |     filePath() { | ||||||
|  |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|  |             if (this._filePath) { | ||||||
|  |                 return this._filePath; | ||||||
|  |             } | ||||||
|  |             const pathFromEnv = process.env[exports.SUMMARY_ENV_VAR]; | ||||||
|  |             if (!pathFromEnv) { | ||||||
|  |                 throw new Error(`Unable to find environment variable for $${exports.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.`); | ||||||
|  |             } | ||||||
|  |             try { | ||||||
|  |                 yield access(pathFromEnv, fs_1.constants.R_OK | fs_1.constants.W_OK); | ||||||
|  |             } | ||||||
|  |             catch (_a) { | ||||||
|  |                 throw new Error(`Unable to access summary file: '${pathFromEnv}'. Check if the file has correct read/write permissions.`); | ||||||
|  |             } | ||||||
|  |             this._filePath = pathFromEnv; | ||||||
|  |             return this._filePath; | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * Wraps content in an HTML tag, adding any HTML attributes | ||||||
|  |      * | ||||||
|  |      * @param {string} tag HTML tag to wrap | ||||||
|  |      * @param {string | null} content content within the tag | ||||||
|  |      * @param {[attribute: string]: string} attrs key-value list of HTML attributes to add | ||||||
|  |      * | ||||||
|  |      * @returns {string} content wrapped in HTML element | ||||||
|  |      */ | ||||||
|  |     wrap(tag, content, attrs = {}) { | ||||||
|  |         const htmlAttrs = Object.entries(attrs) | ||||||
|  |             .map(([key, value]) => ` ${key}="${value}"`) | ||||||
|  |             .join(''); | ||||||
|  |         if (!content) { | ||||||
|  |             return `<${tag}${htmlAttrs}>`; | ||||||
|  |         } | ||||||
|  |         return `<${tag}${htmlAttrs}>${content}</${tag}>`; | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * Writes text in the buffer to the summary buffer file and empties buffer. Will append by default. | ||||||
|  |      * | ||||||
|  |      * @param {SummaryWriteOptions} [options] (optional) options for write operation | ||||||
|  |      * | ||||||
|  |      * @returns {Promise<Summary>} summary instance | ||||||
|  |      */ | ||||||
|  |     write(options) { | ||||||
|  |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|  |             const overwrite = !!(options === null || options === void 0 ? void 0 : options.overwrite); | ||||||
|  |             const filePath = yield this.filePath(); | ||||||
|  |             const writeFunc = overwrite ? writeFile : appendFile; | ||||||
|  |             yield writeFunc(filePath, this._buffer, { encoding: 'utf8' }); | ||||||
|  |             return this.emptyBuffer(); | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * Clears the summary buffer and wipes the summary file | ||||||
|  |      * | ||||||
|  |      * @returns {Summary} summary instance | ||||||
|  |      */ | ||||||
|  |     clear() { | ||||||
|  |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|  |             return this.emptyBuffer().write({ overwrite: true }); | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * Returns the current summary buffer as a string | ||||||
|  |      * | ||||||
|  |      * @returns {string} string of summary buffer | ||||||
|  |      */ | ||||||
|  |     stringify() { | ||||||
|  |         return this._buffer; | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * If the summary buffer is empty | ||||||
|  |      * | ||||||
|  |      * @returns {boolen} true if the buffer is empty | ||||||
|  |      */ | ||||||
|  |     isEmptyBuffer() { | ||||||
|  |         return this._buffer.length === 0; | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * Resets the summary buffer without writing to summary file | ||||||
|  |      * | ||||||
|  |      * @returns {Summary} summary instance | ||||||
|  |      */ | ||||||
|  |     emptyBuffer() { | ||||||
|  |         this._buffer = ''; | ||||||
|  |         return this; | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * Adds raw text to the summary buffer | ||||||
|  |      * | ||||||
|  |      * @param {string} text content to add | ||||||
|  |      * @param {boolean} [addEOL=false] (optional) append an EOL to the raw text (default: false) | ||||||
|  |      * | ||||||
|  |      * @returns {Summary} summary instance | ||||||
|  |      */ | ||||||
|  |     addRaw(text, addEOL = false) { | ||||||
|  |         this._buffer += text; | ||||||
|  |         return addEOL ? this.addEOL() : this; | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * Adds the operating system-specific end-of-line marker to the buffer | ||||||
|  |      * | ||||||
|  |      * @returns {Summary} summary instance | ||||||
|  |      */ | ||||||
|  |     addEOL() { | ||||||
|  |         return this.addRaw(os_1.EOL); | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * Adds an HTML codeblock to the summary buffer | ||||||
|  |      * | ||||||
|  |      * @param {string} code content to render within fenced code block | ||||||
|  |      * @param {string} lang (optional) language to syntax highlight code | ||||||
|  |      * | ||||||
|  |      * @returns {Summary} summary instance | ||||||
|  |      */ | ||||||
|  |     addCodeBlock(code, lang) { | ||||||
|  |         const attrs = Object.assign({}, (lang && { lang })); | ||||||
|  |         const element = this.wrap('pre', this.wrap('code', code), attrs); | ||||||
|  |         return this.addRaw(element).addEOL(); | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * Adds an HTML list to the summary buffer | ||||||
|  |      * | ||||||
|  |      * @param {string[]} items list of items to render | ||||||
|  |      * @param {boolean} [ordered=false] (optional) if the rendered list should be ordered or not (default: false) | ||||||
|  |      * | ||||||
|  |      * @returns {Summary} summary instance | ||||||
|  |      */ | ||||||
|  |     addList(items, ordered = false) { | ||||||
|  |         const tag = ordered ? 'ol' : 'ul'; | ||||||
|  |         const listItems = items.map(item => this.wrap('li', item)).join(''); | ||||||
|  |         const element = this.wrap(tag, listItems); | ||||||
|  |         return this.addRaw(element).addEOL(); | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * Adds an HTML table to the summary buffer | ||||||
|  |      * | ||||||
|  |      * @param {SummaryTableCell[]} rows table rows | ||||||
|  |      * | ||||||
|  |      * @returns {Summary} summary instance | ||||||
|  |      */ | ||||||
|  |     addTable(rows) { | ||||||
|  |         const tableBody = rows | ||||||
|  |             .map(row => { | ||||||
|  |             const cells = row | ||||||
|  |                 .map(cell => { | ||||||
|  |                 if (typeof cell === 'string') { | ||||||
|  |                     return this.wrap('td', cell); | ||||||
|  |                 } | ||||||
|  |                 const { header, data, colspan, rowspan } = cell; | ||||||
|  |                 const tag = header ? 'th' : 'td'; | ||||||
|  |                 const attrs = Object.assign(Object.assign({}, (colspan && { colspan })), (rowspan && { rowspan })); | ||||||
|  |                 return this.wrap(tag, data, attrs); | ||||||
|  |             }) | ||||||
|  |                 .join(''); | ||||||
|  |             return this.wrap('tr', cells); | ||||||
|  |         }) | ||||||
|  |             .join(''); | ||||||
|  |         const element = this.wrap('table', tableBody); | ||||||
|  |         return this.addRaw(element).addEOL(); | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * Adds a collapsable HTML details element to the summary buffer | ||||||
|  |      * | ||||||
|  |      * @param {string} label text for the closed state | ||||||
|  |      * @param {string} content collapsable content | ||||||
|  |      * | ||||||
|  |      * @returns {Summary} summary instance | ||||||
|  |      */ | ||||||
|  |     addDetails(label, content) { | ||||||
|  |         const element = this.wrap('details', this.wrap('summary', label) + content); | ||||||
|  |         return this.addRaw(element).addEOL(); | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * Adds an HTML image tag to the summary buffer | ||||||
|  |      * | ||||||
|  |      * @param {string} src path to the image you to embed | ||||||
|  |      * @param {string} alt text description of the image | ||||||
|  |      * @param {SummaryImageOptions} options (optional) addition image attributes | ||||||
|  |      * | ||||||
|  |      * @returns {Summary} summary instance | ||||||
|  |      */ | ||||||
|  |     addImage(src, alt, options) { | ||||||
|  |         const { width, height } = options || {}; | ||||||
|  |         const attrs = Object.assign(Object.assign({}, (width && { width })), (height && { height })); | ||||||
|  |         const element = this.wrap('img', null, Object.assign({ src, alt }, attrs)); | ||||||
|  |         return this.addRaw(element).addEOL(); | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * Adds an HTML section heading element | ||||||
|  |      * | ||||||
|  |      * @param {string} text heading text | ||||||
|  |      * @param {number | string} [level=1] (optional) the heading level, default: 1 | ||||||
|  |      * | ||||||
|  |      * @returns {Summary} summary instance | ||||||
|  |      */ | ||||||
|  |     addHeading(text, level) { | ||||||
|  |         const tag = `h${level}`; | ||||||
|  |         const allowedTag = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(tag) | ||||||
|  |             ? tag | ||||||
|  |             : 'h1'; | ||||||
|  |         const element = this.wrap(allowedTag, text); | ||||||
|  |         return this.addRaw(element).addEOL(); | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * Adds an HTML thematic break (<hr>) to the summary buffer | ||||||
|  |      * | ||||||
|  |      * @returns {Summary} summary instance | ||||||
|  |      */ | ||||||
|  |     addSeparator() { | ||||||
|  |         const element = this.wrap('hr', null); | ||||||
|  |         return this.addRaw(element).addEOL(); | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * Adds an HTML line break (<br>) to the summary buffer | ||||||
|  |      * | ||||||
|  |      * @returns {Summary} summary instance | ||||||
|  |      */ | ||||||
|  |     addBreak() { | ||||||
|  |         const element = this.wrap('br', null); | ||||||
|  |         return this.addRaw(element).addEOL(); | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * Adds an HTML blockquote to the summary buffer | ||||||
|  |      * | ||||||
|  |      * @param {string} text quote text | ||||||
|  |      * @param {string} cite (optional) citation url | ||||||
|  |      * | ||||||
|  |      * @returns {Summary} summary instance | ||||||
|  |      */ | ||||||
|  |     addQuote(text, cite) { | ||||||
|  |         const attrs = Object.assign({}, (cite && { cite })); | ||||||
|  |         const element = this.wrap('blockquote', text, attrs); | ||||||
|  |         return this.addRaw(element).addEOL(); | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * Adds an HTML anchor tag to the summary buffer | ||||||
|  |      * | ||||||
|  |      * @param {string} text link text/content | ||||||
|  |      * @param {string} href hyperlink | ||||||
|  |      * | ||||||
|  |      * @returns {Summary} summary instance | ||||||
|  |      */ | ||||||
|  |     addLink(text, href) { | ||||||
|  |         const element = this.wrap('a', text, { href }); | ||||||
|  |         return this.addRaw(element).addEOL(); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | const _summary = new Summary(); | ||||||
|  | /** | ||||||
|  |  * @deprecated use `core.summary` | ||||||
|  |  */ | ||||||
|  | exports.markdownSummary = _summary; | ||||||
|  | exports.summary = _summary; | ||||||
|  | //# sourceMappingURL=summary.js.map
 | ||||||
|  | 
 | ||||||
| /***/ }), | /***/ }), | ||||||
| 
 | 
 | ||||||
| /***/ 669: | /***/ 669: | ||||||
| @ -16003,66 +17009,86 @@ module.exports = Function.prototype.bind || implementation; | |||||||
| /***/ }), | /***/ }), | ||||||
| 
 | 
 | ||||||
| /***/ 742: | /***/ 742: | ||||||
| /***/ (function(module, __unusedexports, __webpack_require__) { | /***/ (function(__unusedmodule, exports, __webpack_require__) { | ||||||
| 
 | 
 | ||||||
| var fs = __webpack_require__(747) | "use strict"; | ||||||
| var core |  | ||||||
| if (process.platform === 'win32' || global.TESTING_WINDOWS) { |  | ||||||
|   core = __webpack_require__(818) |  | ||||||
| } else { |  | ||||||
|   core = __webpack_require__(197) |  | ||||||
| } |  | ||||||
| 
 | 
 | ||||||
| module.exports = isexe | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||||||
| isexe.sync = sync |     function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } | ||||||
| 
 |     return new (P || (P = Promise))(function (resolve, reject) { | ||||||
| function isexe (path, options, cb) { |         function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||||||
|   if (typeof options === 'function') { |         function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||||||
|     cb = options |         function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } | ||||||
|     options = {} |         step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||||||
|   } |     }); | ||||||
| 
 | }; | ||||||
|   if (!cb) { | Object.defineProperty(exports, "__esModule", { value: true }); | ||||||
|     if (typeof Promise !== 'function') { | exports.OidcClient = void 0; | ||||||
|       throw new TypeError('callback not provided') | const http_client_1 = __webpack_require__(993); | ||||||
|  | const auth_1 = __webpack_require__(363); | ||||||
|  | const core_1 = __webpack_require__(470); | ||||||
|  | class OidcClient { | ||||||
|  |     static createHttpClient(allowRetry = true, maxRetry = 10) { | ||||||
|  |         const requestOptions = { | ||||||
|  |             allowRetries: allowRetry, | ||||||
|  |             maxRetries: maxRetry | ||||||
|  |         }; | ||||||
|  |         return new http_client_1.HttpClient('actions/oidc-client', [new auth_1.BearerCredentialHandler(OidcClient.getRequestToken())], requestOptions); | ||||||
|     } |     } | ||||||
| 
 |     static getRequestToken() { | ||||||
|     return new Promise(function (resolve, reject) { |         const token = process.env['ACTIONS_ID_TOKEN_REQUEST_TOKEN']; | ||||||
|       isexe(path, options || {}, function (er, is) { |         if (!token) { | ||||||
|         if (er) { |             throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable'); | ||||||
|           reject(er) |  | ||||||
|         } else { |  | ||||||
|           resolve(is) |  | ||||||
|         } |         } | ||||||
|       }) |         return token; | ||||||
|     }) |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   core(path, options || {}, function (er, is) { |  | ||||||
|     // ignore EACCES because that just means we aren't allowed to run it
 |  | ||||||
|     if (er) { |  | ||||||
|       if (er.code === 'EACCES' || options && options.ignoreErrors) { |  | ||||||
|         er = null |  | ||||||
|         is = false |  | ||||||
|       } |  | ||||||
|     } |     } | ||||||
|     cb(er, is) |     static getIDTokenUrl() { | ||||||
|   }) |         const runtimeUrl = process.env['ACTIONS_ID_TOKEN_REQUEST_URL']; | ||||||
| } |         if (!runtimeUrl) { | ||||||
| 
 |             throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable'); | ||||||
| function sync (path, options) { |         } | ||||||
|   // my kingdom for a filtered catch
 |         return runtimeUrl; | ||||||
|   try { |     } | ||||||
|     return core.sync(path, options || {}) |     static getCall(id_token_url) { | ||||||
|   } catch (er) { |         var _a; | ||||||
|     if (options && options.ignoreErrors || er.code === 'EACCES') { |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|       return false |             const httpclient = OidcClient.createHttpClient(); | ||||||
|     } else { |             const res = yield httpclient | ||||||
|       throw er |                 .getJson(id_token_url) | ||||||
|  |                 .catch(error => { | ||||||
|  |                 throw new Error(`Failed to get ID Token. \n 
 | ||||||
|  |         Error Code : ${error.statusCode}\n  | ||||||
|  |         Error Message: ${error.result.message}`);
 | ||||||
|  |             }); | ||||||
|  |             const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value; | ||||||
|  |             if (!id_token) { | ||||||
|  |                 throw new Error('Response json body do not have ID Token field'); | ||||||
|  |             } | ||||||
|  |             return id_token; | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  |     static getIDToken(audience) { | ||||||
|  |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|  |             try { | ||||||
|  |                 // New ID Token is requested from action service
 | ||||||
|  |                 let id_token_url = OidcClient.getIDTokenUrl(); | ||||||
|  |                 if (audience) { | ||||||
|  |                     const encodedAudience = encodeURIComponent(audience); | ||||||
|  |                     id_token_url = `${id_token_url}&audience=${encodedAudience}`; | ||||||
|  |                 } | ||||||
|  |                 core_1.debug(`ID token url is ${id_token_url}`); | ||||||
|  |                 const id_token = yield OidcClient.getCall(id_token_url); | ||||||
|  |                 core_1.setSecret(id_token); | ||||||
|  |                 return id_token; | ||||||
|  |             } | ||||||
|  |             catch (error) { | ||||||
|  |                 throw new Error(`Error message: ${error.message}`); | ||||||
|  |             } | ||||||
|  |         }); | ||||||
|     } |     } | ||||||
|   } |  | ||||||
| } | } | ||||||
| 
 | exports.OidcClient = OidcClient; | ||||||
|  | //# sourceMappingURL=oidc-utils.js.map
 | ||||||
| 
 | 
 | ||||||
| /***/ }), | /***/ }), | ||||||
| 
 | 
 | ||||||
| @ -16139,7 +17165,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); | |||||||
| function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } | function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } | ||||||
| 
 | 
 | ||||||
| var endpoint = __webpack_require__(385); | var endpoint = __webpack_require__(385); | ||||||
| var universalUserAgent = __webpack_require__(211); | var universalUserAgent = __webpack_require__(392); | ||||||
| var isPlainObject = _interopDefault(__webpack_require__(696)); | var isPlainObject = _interopDefault(__webpack_require__(696)); | ||||||
| var nodeFetch = _interopDefault(__webpack_require__(454)); | var nodeFetch = _interopDefault(__webpack_require__(454)); | ||||||
| var requestError = __webpack_require__(463); | var requestError = __webpack_require__(463); | ||||||
| @ -16825,6 +17851,13 @@ module.exports = { | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | /***/ }), | ||||||
|  | 
 | ||||||
|  | /***/ 794: | ||||||
|  | /***/ (function(module) { | ||||||
|  | 
 | ||||||
|  | module.exports = require("stream"); | ||||||
|  | 
 | ||||||
| /***/ }), | /***/ }), | ||||||
| 
 | 
 | ||||||
| /***/ 796: | /***/ 796: | ||||||
| @ -16857,59 +17890,180 @@ exports.getUserAgent = getUserAgent; | |||||||
| 
 | 
 | ||||||
| /***/ }), | /***/ }), | ||||||
| 
 | 
 | ||||||
| /***/ 813: | /***/ 810: | ||||||
| /***/ (function(__unusedmodule, exports) { | /***/ (function(__unusedmodule, exports, __webpack_require__) { | ||||||
| 
 | 
 | ||||||
| "use strict"; | "use strict"; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| Object.defineProperty(exports, '__esModule', { value: true }); | Object.defineProperty(exports, "__esModule", { | ||||||
|  |   value: true | ||||||
|  | }); | ||||||
|  | exports.default = void 0; | ||||||
| 
 | 
 | ||||||
| async function auth(token) { | var _rng = _interopRequireDefault(__webpack_require__(506)); | ||||||
|   const tokenType = token.split(/\./).length === 3 ? "app" : /^v\d+\./.test(token) ? "installation" : "oauth"; |  | ||||||
|   return { |  | ||||||
|     type: "token", |  | ||||||
|     token: token, |  | ||||||
|     tokenType |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
| 
 | 
 | ||||||
| /** | var _stringify = _interopRequireDefault(__webpack_require__(960)); | ||||||
|  * Prefix token for usage in the Authorization header | 
 | ||||||
|  * | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||||||
|  * @param token OAuth token or JSON Web Token | 
 | ||||||
|  */ | // **`v1()` - Generate time-based UUID**
 | ||||||
| function withAuthorizationPrefix(token) { | //
 | ||||||
|   if (token.split(/\./).length === 3) { | // Inspired by https://github.com/LiosK/UUID.js
 | ||||||
|     return `bearer ${token}`; | // and http://docs.python.org/library/uuid.html
 | ||||||
|  | let _nodeId; | ||||||
|  | 
 | ||||||
|  | let _clockseq; // Previous uuid creation time
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | let _lastMSecs = 0; | ||||||
|  | let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details
 | ||||||
|  | 
 | ||||||
|  | function v1(options, buf, offset) { | ||||||
|  |   let i = buf && offset || 0; | ||||||
|  |   const b = buf || new Array(16); | ||||||
|  |   options = options || {}; | ||||||
|  |   let node = options.node || _nodeId; | ||||||
|  |   let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not
 | ||||||
|  |   // specified.  We do this lazily to minimize issues related to insufficient
 | ||||||
|  |   // system entropy.  See #189
 | ||||||
|  | 
 | ||||||
|  |   if (node == null || clockseq == null) { | ||||||
|  |     const seedBytes = options.random || (options.rng || _rng.default)(); | ||||||
|  | 
 | ||||||
|  |     if (node == null) { | ||||||
|  |       // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)
 | ||||||
|  |       node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     if (clockseq == null) { | ||||||
|  |       // Per 4.2.2, randomize (14 bit) clockseq
 | ||||||
|  |       clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; | ||||||
|  |     } | ||||||
|  |   } // UUID timestamps are 100 nano-second units since the Gregorian epoch,
 | ||||||
|  |   // (1582-10-15 00:00).  JSNumbers aren't precise enough for this, so
 | ||||||
|  |   // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'
 | ||||||
|  |   // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |   let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock
 | ||||||
|  |   // cycle to simulate higher resolution clock
 | ||||||
|  | 
 | ||||||
|  |   let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)
 | ||||||
|  | 
 | ||||||
|  |   const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression
 | ||||||
|  | 
 | ||||||
|  |   if (dt < 0 && options.clockseq === undefined) { | ||||||
|  |     clockseq = clockseq + 1 & 0x3fff; | ||||||
|  |   } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new
 | ||||||
|  |   // time interval
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |   if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { | ||||||
|  |     nsecs = 0; | ||||||
|  |   } // Per 4.2.1.2 Throw error if too many uuids are requested
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |   if (nsecs >= 10000) { | ||||||
|  |     throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   return `token ${token}`; |   _lastMSecs = msecs; | ||||||
| } |   _lastNSecs = nsecs; | ||||||
|  |   _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch
 | ||||||
| 
 | 
 | ||||||
| async function hook(token, request, route, parameters) { |   msecs += 12219292800000; // `time_low`
 | ||||||
|   const endpoint = request.endpoint.merge(route, parameters); |  | ||||||
|   endpoint.headers.authorization = withAuthorizationPrefix(token); |  | ||||||
|   return request(endpoint); |  | ||||||
| } |  | ||||||
| 
 | 
 | ||||||
| const createTokenAuth = function createTokenAuth(token) { |   const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; | ||||||
|   if (!token) { |   b[i++] = tl >>> 24 & 0xff; | ||||||
|     throw new Error("[@octokit/auth-token] No token passed to createTokenAuth"); |   b[i++] = tl >>> 16 & 0xff; | ||||||
|  |   b[i++] = tl >>> 8 & 0xff; | ||||||
|  |   b[i++] = tl & 0xff; // `time_mid`
 | ||||||
|  | 
 | ||||||
|  |   const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; | ||||||
|  |   b[i++] = tmh >>> 8 & 0xff; | ||||||
|  |   b[i++] = tmh & 0xff; // `time_high_and_version`
 | ||||||
|  | 
 | ||||||
|  |   b[i++] = tmh >>> 24 & 0xf | 0x10; // include version
 | ||||||
|  | 
 | ||||||
|  |   b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)
 | ||||||
|  | 
 | ||||||
|  |   b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`
 | ||||||
|  | 
 | ||||||
|  |   b[i++] = clockseq & 0xff; // `node`
 | ||||||
|  | 
 | ||||||
|  |   for (let n = 0; n < 6; ++n) { | ||||||
|  |     b[i + n] = node[n]; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   if (typeof token !== "string") { |   return buf || (0, _stringify.default)(b); | ||||||
|     throw new Error("[@octokit/auth-token] Token passed to createTokenAuth is not a string"); | } | ||||||
|  | 
 | ||||||
|  | var _default = v1; | ||||||
|  | exports.default = _default; | ||||||
|  | 
 | ||||||
|  | /***/ }), | ||||||
|  | 
 | ||||||
|  | /***/ 813: | ||||||
|  | /***/ (function(module, __unusedexports, __webpack_require__) { | ||||||
|  | 
 | ||||||
|  | var fs = __webpack_require__(747) | ||||||
|  | var core | ||||||
|  | if (process.platform === 'win32' || global.TESTING_WINDOWS) { | ||||||
|  |   core = __webpack_require__(818) | ||||||
|  | } else { | ||||||
|  |   core = __webpack_require__(197) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | module.exports = isexe | ||||||
|  | isexe.sync = sync | ||||||
|  | 
 | ||||||
|  | function isexe (path, options, cb) { | ||||||
|  |   if (typeof options === 'function') { | ||||||
|  |     cb = options | ||||||
|  |     options = {} | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   token = token.replace(/^(token|bearer) +/i, ""); |   if (!cb) { | ||||||
|   return Object.assign(auth.bind(null, token), { |     if (typeof Promise !== 'function') { | ||||||
|     hook: hook.bind(null, token) |       throw new TypeError('callback not provided') | ||||||
|   }); |     } | ||||||
| }; |  | ||||||
| 
 | 
 | ||||||
| exports.createTokenAuth = createTokenAuth; |     return new Promise(function (resolve, reject) { | ||||||
| //# sourceMappingURL=index.js.map
 |       isexe(path, options || {}, function (er, is) { | ||||||
|  |         if (er) { | ||||||
|  |           reject(er) | ||||||
|  |         } else { | ||||||
|  |           resolve(is) | ||||||
|  |         } | ||||||
|  |       }) | ||||||
|  |     }) | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   core(path, options || {}, function (er, is) { | ||||||
|  |     // ignore EACCES because that just means we aren't allowed to run it
 | ||||||
|  |     if (er) { | ||||||
|  |       if (er.code === 'EACCES' || options && options.ignoreErrors) { | ||||||
|  |         er = null | ||||||
|  |         is = false | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     cb(er, is) | ||||||
|  |   }) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function sync (path, options) { | ||||||
|  |   // my kingdom for a filtered catch
 | ||||||
|  |   try { | ||||||
|  |     return core.sync(path, options || {}) | ||||||
|  |   } catch (er) { | ||||||
|  |     if (options && options.ignoreErrors || er.code === 'EACCES') { | ||||||
|  |       return false | ||||||
|  |     } else { | ||||||
|  |       throw er | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| /***/ }), | /***/ }), | ||||||
| @ -16926,7 +18080,7 @@ var isWindows = process.platform === 'win32' || | |||||||
| 
 | 
 | ||||||
| var path = __webpack_require__(622) | var path = __webpack_require__(622) | ||||||
| var COLON = isWindows ? ';' : ':' | var COLON = isWindows ? ';' : ':' | ||||||
| var isexe = __webpack_require__(742) | var isexe = __webpack_require__(813) | ||||||
| 
 | 
 | ||||||
| function getNotFoundError (cmd) { | function getNotFoundError (cmd) { | ||||||
|   var er = new Error('not found: ' + cmd) |   var er = new Error('not found: ' + cmd) | ||||||
| @ -17244,6 +18398,9 @@ function getInputs() { | |||||||
|             (core.getInput('persist-credentials') || 'false').toUpperCase() === 'TRUE'; |             (core.getInput('persist-credentials') || 'false').toUpperCase() === 'TRUE'; | ||||||
|         // Workflow organization ID
 |         // Workflow organization ID
 | ||||||
|         result.workflowOrganizationId = yield workflowContextHelper.getOrganizationId(); |         result.workflowOrganizationId = yield workflowContextHelper.getOrganizationId(); | ||||||
|  |         // Set safe.directory in git global config.
 | ||||||
|  |         result.setSafeDirectory = | ||||||
|  |             (core.getInput('set-safe-directory') || 'true').toUpperCase() === 'TRUE'; | ||||||
|         return result; |         return result; | ||||||
|     }); |     }); | ||||||
| } | } | ||||||
| @ -30516,6 +31673,273 @@ function paginationMethodsPlugin (octokit) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | /***/ }), | ||||||
|  | 
 | ||||||
|  | /***/ 853: | ||||||
|  | /***/ (function(__unusedmodule, exports, __webpack_require__) { | ||||||
|  | 
 | ||||||
|  | "use strict"; | ||||||
|  | 
 | ||||||
|  | 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.prototype.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.cleanup = exports.getSource = void 0; | ||||||
|  | const core = __importStar(__webpack_require__(470)); | ||||||
|  | const fsHelper = __importStar(__webpack_require__(618)); | ||||||
|  | const gitAuthHelper = __importStar(__webpack_require__(287)); | ||||||
|  | const gitCommandManager = __importStar(__webpack_require__(289)); | ||||||
|  | const gitDirectoryHelper = __importStar(__webpack_require__(438)); | ||||||
|  | const githubApiHelper = __importStar(__webpack_require__(464)); | ||||||
|  | const io = __importStar(__webpack_require__(1)); | ||||||
|  | const path = __importStar(__webpack_require__(622)); | ||||||
|  | const refHelper = __importStar(__webpack_require__(227)); | ||||||
|  | const stateHelper = __importStar(__webpack_require__(153)); | ||||||
|  | const urlHelper = __importStar(__webpack_require__(81)); | ||||||
|  | function getSource(settings) { | ||||||
|  |     return __awaiter(this, void 0, void 0, function* () { | ||||||
|  |         // Repository URL
 | ||||||
|  |         core.info(`Syncing repository: ${settings.repositoryOwner}/${settings.repositoryName}`); | ||||||
|  |         const repositoryUrl = urlHelper.getFetchUrl(settings); | ||||||
|  |         // Remove conflicting file path
 | ||||||
|  |         if (fsHelper.fileExistsSync(settings.repositoryPath)) { | ||||||
|  |             yield io.rmRF(settings.repositoryPath); | ||||||
|  |         } | ||||||
|  |         // Create directory
 | ||||||
|  |         let isExisting = true; | ||||||
|  |         if (!fsHelper.directoryExistsSync(settings.repositoryPath)) { | ||||||
|  |             isExisting = false; | ||||||
|  |             yield io.mkdirP(settings.repositoryPath); | ||||||
|  |         } | ||||||
|  |         // Git command manager
 | ||||||
|  |         core.startGroup('Getting Git version info'); | ||||||
|  |         const git = yield getGitCommandManager(settings); | ||||||
|  |         core.endGroup(); | ||||||
|  |         let authHelper = null; | ||||||
|  |         try { | ||||||
|  |             if (git) { | ||||||
|  |                 authHelper = gitAuthHelper.createAuthHelper(git, settings); | ||||||
|  |                 if (settings.setSafeDirectory) { | ||||||
|  |                     // Setup the repository path as a safe directory, so if we pass this into a container job with a different user it doesn't fail
 | ||||||
|  |                     // Otherwise all git commands we run in a container fail
 | ||||||
|  |                     yield authHelper.configureTempGlobalConfig(); | ||||||
|  |                     core.info(`Adding repository directory to the temporary git global config as a safe directory`); | ||||||
|  |                     yield git | ||||||
|  |                         .config('safe.directory', settings.repositoryPath, true, true) | ||||||
|  |                         .catch(error => { | ||||||
|  |                         core.info(`Failed to initialize safe directory with error: ${error}`); | ||||||
|  |                     }); | ||||||
|  |                     stateHelper.setSafeDirectory(); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             // Prepare existing directory, otherwise recreate
 | ||||||
|  |             if (isExisting) { | ||||||
|  |                 yield gitDirectoryHelper.prepareExistingDirectory(git, settings.repositoryPath, repositoryUrl, settings.clean, settings.ref); | ||||||
|  |             } | ||||||
|  |             if (!git) { | ||||||
|  |                 // Downloading using REST API
 | ||||||
|  |                 core.info(`The repository will be downloaded using the GitHub REST API`); | ||||||
|  |                 core.info(`To create a local Git repository instead, add Git ${gitCommandManager.MinimumGitVersion} or higher to the PATH`); | ||||||
|  |                 if (settings.submodules) { | ||||||
|  |                     throw new Error(`Input 'submodules' not supported when falling back to download using the GitHub REST API. To create a local Git repository instead, add Git ${gitCommandManager.MinimumGitVersion} or higher to the PATH.`); | ||||||
|  |                 } | ||||||
|  |                 else if (settings.sshKey) { | ||||||
|  |                     throw new Error(`Input 'ssh-key' not supported when falling back to download using the GitHub REST API. To create a local Git repository instead, add Git ${gitCommandManager.MinimumGitVersion} or higher to the PATH.`); | ||||||
|  |                 } | ||||||
|  |                 yield githubApiHelper.downloadRepository(settings.authToken, settings.repositoryOwner, settings.repositoryName, settings.ref, settings.commit, settings.repositoryPath); | ||||||
|  |                 return; | ||||||
|  |             } | ||||||
|  |             // Save state for POST action
 | ||||||
|  |             stateHelper.setRepositoryPath(settings.repositoryPath); | ||||||
|  |             // Initialize the repository
 | ||||||
|  |             if (!fsHelper.directoryExistsSync(path.join(settings.repositoryPath, '.git'))) { | ||||||
|  |                 core.startGroup('Initializing the repository'); | ||||||
|  |                 yield git.init(); | ||||||
|  |                 yield git.remoteAdd('origin', repositoryUrl); | ||||||
|  |                 core.endGroup(); | ||||||
|  |             } | ||||||
|  |             // Disable automatic garbage collection
 | ||||||
|  |             core.startGroup('Disabling automatic garbage collection'); | ||||||
|  |             if (!(yield git.tryDisableAutomaticGarbageCollection())) { | ||||||
|  |                 core.warning(`Unable to turn off git automatic garbage collection. The git fetch operation may trigger garbage collection and cause a delay.`); | ||||||
|  |             } | ||||||
|  |             core.endGroup(); | ||||||
|  |             // If we didn't initialize it above, do it now
 | ||||||
|  |             if (!authHelper) { | ||||||
|  |                 authHelper = gitAuthHelper.createAuthHelper(git, settings); | ||||||
|  |             } | ||||||
|  |             // Configure auth
 | ||||||
|  |             core.startGroup('Setting up auth'); | ||||||
|  |             yield authHelper.configureAuth(); | ||||||
|  |             core.endGroup(); | ||||||
|  |             // Determine the default branch
 | ||||||
|  |             if (!settings.ref && !settings.commit) { | ||||||
|  |                 core.startGroup('Determining the default branch'); | ||||||
|  |                 if (settings.sshKey) { | ||||||
|  |                     settings.ref = yield git.getDefaultBranch(repositoryUrl); | ||||||
|  |                 } | ||||||
|  |                 else { | ||||||
|  |                     settings.ref = yield githubApiHelper.getDefaultBranch(settings.authToken, settings.repositoryOwner, settings.repositoryName); | ||||||
|  |                 } | ||||||
|  |                 core.endGroup(); | ||||||
|  |             } | ||||||
|  |             // LFS install
 | ||||||
|  |             if (settings.lfs) { | ||||||
|  |                 yield git.lfsInstall(); | ||||||
|  |             } | ||||||
|  |             // Fetch
 | ||||||
|  |             core.startGroup('Fetching the repository'); | ||||||
|  |             if (settings.fetchDepth <= 0) { | ||||||
|  |                 // Fetch all branches and tags
 | ||||||
|  |                 let refSpec = refHelper.getRefSpecForAllHistory(settings.ref, settings.commit); | ||||||
|  |                 yield git.fetch(refSpec); | ||||||
|  |                 // When all history is fetched, the ref we're interested in may have moved to a different
 | ||||||
|  |                 // commit (push or force push). If so, fetch again with a targeted refspec.
 | ||||||
|  |                 if (!(yield refHelper.testRef(git, settings.ref, settings.commit))) { | ||||||
|  |                     refSpec = refHelper.getRefSpec(settings.ref, settings.commit); | ||||||
|  |                     yield git.fetch(refSpec); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             else { | ||||||
|  |                 const refSpec = refHelper.getRefSpec(settings.ref, settings.commit); | ||||||
|  |                 yield git.fetch(refSpec, settings.fetchDepth); | ||||||
|  |             } | ||||||
|  |             core.endGroup(); | ||||||
|  |             // Checkout info
 | ||||||
|  |             core.startGroup('Determining the checkout info'); | ||||||
|  |             const checkoutInfo = yield refHelper.getCheckoutInfo(git, settings.ref, settings.commit); | ||||||
|  |             core.endGroup(); | ||||||
|  |             // LFS fetch
 | ||||||
|  |             // Explicit lfs-fetch to avoid slow checkout (fetches one lfs object at a time).
 | ||||||
|  |             // Explicit lfs fetch will fetch lfs objects in parallel.
 | ||||||
|  |             if (settings.lfs) { | ||||||
|  |                 core.startGroup('Fetching LFS objects'); | ||||||
|  |                 yield git.lfsFetch(checkoutInfo.startPoint || checkoutInfo.ref); | ||||||
|  |                 core.endGroup(); | ||||||
|  |             } | ||||||
|  |             // Checkout
 | ||||||
|  |             core.startGroup('Checking out the ref'); | ||||||
|  |             yield git.checkout(checkoutInfo.ref, checkoutInfo.startPoint); | ||||||
|  |             core.endGroup(); | ||||||
|  |             // Submodules
 | ||||||
|  |             if (settings.submodules) { | ||||||
|  |                 // Temporarily override global config
 | ||||||
|  |                 core.startGroup('Setting up auth for fetching submodules'); | ||||||
|  |                 yield authHelper.configureGlobalAuth(); | ||||||
|  |                 core.endGroup(); | ||||||
|  |                 // Checkout submodules
 | ||||||
|  |                 core.startGroup('Fetching submodules'); | ||||||
|  |                 yield git.submoduleSync(settings.nestedSubmodules); | ||||||
|  |                 yield git.submoduleUpdate(settings.fetchDepth, settings.nestedSubmodules); | ||||||
|  |                 yield git.submoduleForeach('git config --local gc.auto 0', settings.nestedSubmodules); | ||||||
|  |                 core.endGroup(); | ||||||
|  |                 // Persist credentials
 | ||||||
|  |                 if (settings.persistCredentials) { | ||||||
|  |                     core.startGroup('Persisting credentials for submodules'); | ||||||
|  |                     yield authHelper.configureSubmoduleAuth(); | ||||||
|  |                     core.endGroup(); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             // Get commit information
 | ||||||
|  |             const commitInfo = yield git.log1(); | ||||||
|  |             // Log commit sha
 | ||||||
|  |             yield git.log1("--format='%H'"); | ||||||
|  |             // Check for incorrect pull request merge commit
 | ||||||
|  |             yield refHelper.checkCommitInfo(settings.authToken, commitInfo, settings.repositoryOwner, settings.repositoryName, settings.ref, settings.commit); | ||||||
|  |         } | ||||||
|  |         finally { | ||||||
|  |             // Remove auth
 | ||||||
|  |             if (authHelper) { | ||||||
|  |                 if (!settings.persistCredentials) { | ||||||
|  |                     core.startGroup('Removing auth'); | ||||||
|  |                     yield authHelper.removeAuth(); | ||||||
|  |                     core.endGroup(); | ||||||
|  |                 } | ||||||
|  |                 authHelper.removeGlobalConfig(); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     }); | ||||||
|  | } | ||||||
|  | exports.getSource = getSource; | ||||||
|  | function cleanup(repositoryPath) { | ||||||
|  |     return __awaiter(this, void 0, void 0, function* () { | ||||||
|  |         // Repo exists?
 | ||||||
|  |         if (!repositoryPath || | ||||||
|  |             !fsHelper.fileExistsSync(path.join(repositoryPath, '.git', 'config'))) { | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  |         let git; | ||||||
|  |         try { | ||||||
|  |             git = yield gitCommandManager.createCommandManager(repositoryPath, false); | ||||||
|  |         } | ||||||
|  |         catch (_a) { | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  |         // Remove auth
 | ||||||
|  |         const authHelper = gitAuthHelper.createAuthHelper(git); | ||||||
|  |         try { | ||||||
|  |             if (stateHelper.PostSetSafeDirectory) { | ||||||
|  |                 // Setup the repository path as a safe directory, so if we pass this into a container job with a different user it doesn't fail
 | ||||||
|  |                 // Otherwise all git commands we run in a container fail
 | ||||||
|  |                 yield authHelper.configureTempGlobalConfig(); | ||||||
|  |                 core.info(`Adding repository directory to the temporary git global config as a safe directory`); | ||||||
|  |                 yield git | ||||||
|  |                     .config('safe.directory', repositoryPath, true, true) | ||||||
|  |                     .catch(error => { | ||||||
|  |                     core.info(`Failed to initialize safe directory with error: ${error}`); | ||||||
|  |                 }); | ||||||
|  |             } | ||||||
|  |             yield authHelper.removeAuth(); | ||||||
|  |         } | ||||||
|  |         finally { | ||||||
|  |             yield authHelper.removeGlobalConfig(); | ||||||
|  |         } | ||||||
|  |     }); | ||||||
|  | } | ||||||
|  | exports.cleanup = cleanup; | ||||||
|  | function getGitCommandManager(settings) { | ||||||
|  |     return __awaiter(this, void 0, void 0, function* () { | ||||||
|  |         core.info(`Working directory is '${settings.repositoryPath}'`); | ||||||
|  |         try { | ||||||
|  |             return yield gitCommandManager.createCommandManager(settings.repositoryPath, settings.lfs); | ||||||
|  |         } | ||||||
|  |         catch (err) { | ||||||
|  |             // Git is required for LFS
 | ||||||
|  |             if (settings.lfs) { | ||||||
|  |                 throw err; | ||||||
|  |             } | ||||||
|  |             // Otherwise fallback to REST API
 | ||||||
|  |             return undefined; | ||||||
|  |         } | ||||||
|  |     }); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| /***/ }), | /***/ }), | ||||||
| 
 | 
 | ||||||
| /***/ 854: | /***/ 854: | ||||||
| @ -31470,14 +32894,6 @@ function registerPlugin(plugins, pluginFunction) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| /***/ }), |  | ||||||
| 
 |  | ||||||
| /***/ 856: |  | ||||||
| /***/ (function(module, __unusedexports, __webpack_require__) { |  | ||||||
| 
 |  | ||||||
| module.exports = __webpack_require__(141); |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| /***/ }), | /***/ }), | ||||||
| 
 | 
 | ||||||
| /***/ 863: | /***/ 863: | ||||||
| @ -31585,7 +33001,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge | |||||||
| Object.defineProperty(exports, "__esModule", { value: true }); | Object.defineProperty(exports, "__esModule", { value: true }); | ||||||
| const url = __webpack_require__(835); | const url = __webpack_require__(835); | ||||||
| const http = __webpack_require__(605); | const http = __webpack_require__(605); | ||||||
| const https = __webpack_require__(34); | const https = __webpack_require__(211); | ||||||
| const util = __webpack_require__(729); | const util = __webpack_require__(729); | ||||||
| let fs; | let fs; | ||||||
| let tunnel; | let tunnel; | ||||||
| @ -31980,7 +33396,7 @@ class HttpClient { | |||||||
|         if (useProxy) { |         if (useProxy) { | ||||||
|             // If using proxy, need tunnel
 |             // If using proxy, need tunnel
 | ||||||
|             if (!tunnel) { |             if (!tunnel) { | ||||||
|                 tunnel = __webpack_require__(856); |                 tunnel = __webpack_require__(413); | ||||||
|             } |             } | ||||||
|             const agentOptions = { |             const agentOptions = { | ||||||
|                 maxSockets: maxSockets, |                 maxSockets: maxSockets, | ||||||
| @ -35758,6 +37174,52 @@ module.exports.sync = (cmd, args, opts) => { | |||||||
| module.exports.shellSync = (cmd, opts) => handleShell(module.exports.sync, cmd, opts); | module.exports.shellSync = (cmd, opts) => handleShell(module.exports.sync, cmd, opts); | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | /***/ }), | ||||||
|  | 
 | ||||||
|  | /***/ 960: | ||||||
|  | /***/ (function(__unusedmodule, exports, __webpack_require__) { | ||||||
|  | 
 | ||||||
|  | "use strict"; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Object.defineProperty(exports, "__esModule", { | ||||||
|  |   value: true | ||||||
|  | }); | ||||||
|  | exports.default = void 0; | ||||||
|  | 
 | ||||||
|  | var _validate = _interopRequireDefault(__webpack_require__(634)); | ||||||
|  | 
 | ||||||
|  | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Convert array of 16 byte values to UUID string format of the form: | ||||||
|  |  * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX | ||||||
|  |  */ | ||||||
|  | const byteToHex = []; | ||||||
|  | 
 | ||||||
|  | for (let i = 0; i < 256; ++i) { | ||||||
|  |   byteToHex.push((i + 0x100).toString(16).substr(1)); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function stringify(arr, offset = 0) { | ||||||
|  |   // Note: Be careful editing this code!  It's been tuned for performance
 | ||||||
|  |   // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434
 | ||||||
|  |   const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID.  If this throws, it's likely due to one
 | ||||||
|  |   // of the following:
 | ||||||
|  |   // - One or more input array values don't map to a hex octet (leading to
 | ||||||
|  |   // "undefined" in the uuid)
 | ||||||
|  |   // - Invalid input values for the RFC `version` or `variant` fields
 | ||||||
|  | 
 | ||||||
|  |   if (!(0, _validate.default)(uuid)) { | ||||||
|  |     throw TypeError('Stringified UUID is invalid'); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   return uuid; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | var _default = stringify; | ||||||
|  | exports.default = _default; | ||||||
|  | 
 | ||||||
| /***/ }), | /***/ }), | ||||||
| 
 | 
 | ||||||
| /***/ 966: | /***/ 966: | ||||||
| @ -35765,7 +37227,7 @@ module.exports.shellSync = (cmd, opts) => handleShell(module.exports.sync, cmd, | |||||||
| 
 | 
 | ||||||
| "use strict"; | "use strict"; | ||||||
| 
 | 
 | ||||||
| const {PassThrough} = __webpack_require__(413); | const {PassThrough} = __webpack_require__(794); | ||||||
| 
 | 
 | ||||||
| module.exports = options => { | module.exports = options => { | ||||||
| 	options = Object.assign({}, options); | 	options = Object.assign({}, options); | ||||||
| @ -36179,6 +37641,618 @@ function authenticationRequestError(state, error, options) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | /***/ }), | ||||||
|  | 
 | ||||||
|  | /***/ 993: | ||||||
|  | /***/ (function(__unusedmodule, exports, __webpack_require__) { | ||||||
|  | 
 | ||||||
|  | "use strict"; | ||||||
|  | 
 | ||||||
|  | /* eslint-disable @typescript-eslint/no-explicit-any */ | ||||||
|  | var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||||||
|  |     if (k2 === undefined) k2 = k; | ||||||
|  |     Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); | ||||||
|  | }) : (function(o, m, k, k2) { | ||||||
|  |     if (k2 === undefined) k2 = k; | ||||||
|  |     o[k2] = m[k]; | ||||||
|  | })); | ||||||
|  | var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { | ||||||
|  |     Object.defineProperty(o, "default", { enumerable: true, value: v }); | ||||||
|  | }) : function(o, v) { | ||||||
|  |     o["default"] = v; | ||||||
|  | }); | ||||||
|  | var __importStar = (this && this.__importStar) || function (mod) { | ||||||
|  |     if (mod && mod.__esModule) return mod; | ||||||
|  |     var result = {}; | ||||||
|  |     if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); | ||||||
|  |     __setModuleDefault(result, mod); | ||||||
|  |     return result; | ||||||
|  | }; | ||||||
|  | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||||||
|  |     function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } | ||||||
|  |     return new (P || (P = Promise))(function (resolve, reject) { | ||||||
|  |         function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||||||
|  |         function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||||||
|  |         function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } | ||||||
|  |         step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||||||
|  |     }); | ||||||
|  | }; | ||||||
|  | Object.defineProperty(exports, "__esModule", { value: true }); | ||||||
|  | exports.HttpClient = exports.isHttps = exports.HttpClientResponse = exports.HttpClientError = exports.getProxyUrl = exports.MediaTypes = exports.Headers = exports.HttpCodes = void 0; | ||||||
|  | const http = __importStar(__webpack_require__(605)); | ||||||
|  | const https = __importStar(__webpack_require__(211)); | ||||||
|  | const pm = __importStar(__webpack_require__(95)); | ||||||
|  | const tunnel = __importStar(__webpack_require__(413)); | ||||||
|  | var HttpCodes; | ||||||
|  | (function (HttpCodes) { | ||||||
|  |     HttpCodes[HttpCodes["OK"] = 200] = "OK"; | ||||||
|  |     HttpCodes[HttpCodes["MultipleChoices"] = 300] = "MultipleChoices"; | ||||||
|  |     HttpCodes[HttpCodes["MovedPermanently"] = 301] = "MovedPermanently"; | ||||||
|  |     HttpCodes[HttpCodes["ResourceMoved"] = 302] = "ResourceMoved"; | ||||||
|  |     HttpCodes[HttpCodes["SeeOther"] = 303] = "SeeOther"; | ||||||
|  |     HttpCodes[HttpCodes["NotModified"] = 304] = "NotModified"; | ||||||
|  |     HttpCodes[HttpCodes["UseProxy"] = 305] = "UseProxy"; | ||||||
|  |     HttpCodes[HttpCodes["SwitchProxy"] = 306] = "SwitchProxy"; | ||||||
|  |     HttpCodes[HttpCodes["TemporaryRedirect"] = 307] = "TemporaryRedirect"; | ||||||
|  |     HttpCodes[HttpCodes["PermanentRedirect"] = 308] = "PermanentRedirect"; | ||||||
|  |     HttpCodes[HttpCodes["BadRequest"] = 400] = "BadRequest"; | ||||||
|  |     HttpCodes[HttpCodes["Unauthorized"] = 401] = "Unauthorized"; | ||||||
|  |     HttpCodes[HttpCodes["PaymentRequired"] = 402] = "PaymentRequired"; | ||||||
|  |     HttpCodes[HttpCodes["Forbidden"] = 403] = "Forbidden"; | ||||||
|  |     HttpCodes[HttpCodes["NotFound"] = 404] = "NotFound"; | ||||||
|  |     HttpCodes[HttpCodes["MethodNotAllowed"] = 405] = "MethodNotAllowed"; | ||||||
|  |     HttpCodes[HttpCodes["NotAcceptable"] = 406] = "NotAcceptable"; | ||||||
|  |     HttpCodes[HttpCodes["ProxyAuthenticationRequired"] = 407] = "ProxyAuthenticationRequired"; | ||||||
|  |     HttpCodes[HttpCodes["RequestTimeout"] = 408] = "RequestTimeout"; | ||||||
|  |     HttpCodes[HttpCodes["Conflict"] = 409] = "Conflict"; | ||||||
|  |     HttpCodes[HttpCodes["Gone"] = 410] = "Gone"; | ||||||
|  |     HttpCodes[HttpCodes["TooManyRequests"] = 429] = "TooManyRequests"; | ||||||
|  |     HttpCodes[HttpCodes["InternalServerError"] = 500] = "InternalServerError"; | ||||||
|  |     HttpCodes[HttpCodes["NotImplemented"] = 501] = "NotImplemented"; | ||||||
|  |     HttpCodes[HttpCodes["BadGateway"] = 502] = "BadGateway"; | ||||||
|  |     HttpCodes[HttpCodes["ServiceUnavailable"] = 503] = "ServiceUnavailable"; | ||||||
|  |     HttpCodes[HttpCodes["GatewayTimeout"] = 504] = "GatewayTimeout"; | ||||||
|  | })(HttpCodes = exports.HttpCodes || (exports.HttpCodes = {})); | ||||||
|  | var Headers; | ||||||
|  | (function (Headers) { | ||||||
|  |     Headers["Accept"] = "accept"; | ||||||
|  |     Headers["ContentType"] = "content-type"; | ||||||
|  | })(Headers = exports.Headers || (exports.Headers = {})); | ||||||
|  | var MediaTypes; | ||||||
|  | (function (MediaTypes) { | ||||||
|  |     MediaTypes["ApplicationJson"] = "application/json"; | ||||||
|  | })(MediaTypes = exports.MediaTypes || (exports.MediaTypes = {})); | ||||||
|  | /** | ||||||
|  |  * Returns the proxy URL, depending upon the supplied url and proxy environment variables. | ||||||
|  |  * @param serverUrl  The server URL where the request will be sent. For example, https://api.github.com
 | ||||||
|  |  */ | ||||||
|  | function getProxyUrl(serverUrl) { | ||||||
|  |     const proxyUrl = pm.getProxyUrl(new URL(serverUrl)); | ||||||
|  |     return proxyUrl ? proxyUrl.href : ''; | ||||||
|  | } | ||||||
|  | exports.getProxyUrl = getProxyUrl; | ||||||
|  | const HttpRedirectCodes = [ | ||||||
|  |     HttpCodes.MovedPermanently, | ||||||
|  |     HttpCodes.ResourceMoved, | ||||||
|  |     HttpCodes.SeeOther, | ||||||
|  |     HttpCodes.TemporaryRedirect, | ||||||
|  |     HttpCodes.PermanentRedirect | ||||||
|  | ]; | ||||||
|  | const HttpResponseRetryCodes = [ | ||||||
|  |     HttpCodes.BadGateway, | ||||||
|  |     HttpCodes.ServiceUnavailable, | ||||||
|  |     HttpCodes.GatewayTimeout | ||||||
|  | ]; | ||||||
|  | const RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD']; | ||||||
|  | const ExponentialBackoffCeiling = 10; | ||||||
|  | const ExponentialBackoffTimeSlice = 5; | ||||||
|  | class HttpClientError extends Error { | ||||||
|  |     constructor(message, statusCode) { | ||||||
|  |         super(message); | ||||||
|  |         this.name = 'HttpClientError'; | ||||||
|  |         this.statusCode = statusCode; | ||||||
|  |         Object.setPrototypeOf(this, HttpClientError.prototype); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | exports.HttpClientError = HttpClientError; | ||||||
|  | class HttpClientResponse { | ||||||
|  |     constructor(message) { | ||||||
|  |         this.message = message; | ||||||
|  |     } | ||||||
|  |     readBody() { | ||||||
|  |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|  |             return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () { | ||||||
|  |                 let output = Buffer.alloc(0); | ||||||
|  |                 this.message.on('data', (chunk) => { | ||||||
|  |                     output = Buffer.concat([output, chunk]); | ||||||
|  |                 }); | ||||||
|  |                 this.message.on('end', () => { | ||||||
|  |                     resolve(output.toString()); | ||||||
|  |                 }); | ||||||
|  |             })); | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | exports.HttpClientResponse = HttpClientResponse; | ||||||
|  | function isHttps(requestUrl) { | ||||||
|  |     const parsedUrl = new URL(requestUrl); | ||||||
|  |     return parsedUrl.protocol === 'https:'; | ||||||
|  | } | ||||||
|  | exports.isHttps = isHttps; | ||||||
|  | class HttpClient { | ||||||
|  |     constructor(userAgent, handlers, requestOptions) { | ||||||
|  |         this._ignoreSslError = false; | ||||||
|  |         this._allowRedirects = true; | ||||||
|  |         this._allowRedirectDowngrade = false; | ||||||
|  |         this._maxRedirects = 50; | ||||||
|  |         this._allowRetries = false; | ||||||
|  |         this._maxRetries = 1; | ||||||
|  |         this._keepAlive = false; | ||||||
|  |         this._disposed = false; | ||||||
|  |         this.userAgent = userAgent; | ||||||
|  |         this.handlers = handlers || []; | ||||||
|  |         this.requestOptions = requestOptions; | ||||||
|  |         if (requestOptions) { | ||||||
|  |             if (requestOptions.ignoreSslError != null) { | ||||||
|  |                 this._ignoreSslError = requestOptions.ignoreSslError; | ||||||
|  |             } | ||||||
|  |             this._socketTimeout = requestOptions.socketTimeout; | ||||||
|  |             if (requestOptions.allowRedirects != null) { | ||||||
|  |                 this._allowRedirects = requestOptions.allowRedirects; | ||||||
|  |             } | ||||||
|  |             if (requestOptions.allowRedirectDowngrade != null) { | ||||||
|  |                 this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade; | ||||||
|  |             } | ||||||
|  |             if (requestOptions.maxRedirects != null) { | ||||||
|  |                 this._maxRedirects = Math.max(requestOptions.maxRedirects, 0); | ||||||
|  |             } | ||||||
|  |             if (requestOptions.keepAlive != null) { | ||||||
|  |                 this._keepAlive = requestOptions.keepAlive; | ||||||
|  |             } | ||||||
|  |             if (requestOptions.allowRetries != null) { | ||||||
|  |                 this._allowRetries = requestOptions.allowRetries; | ||||||
|  |             } | ||||||
|  |             if (requestOptions.maxRetries != null) { | ||||||
|  |                 this._maxRetries = requestOptions.maxRetries; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     options(requestUrl, additionalHeaders) { | ||||||
|  |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|  |             return this.request('OPTIONS', requestUrl, null, additionalHeaders || {}); | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  |     get(requestUrl, additionalHeaders) { | ||||||
|  |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|  |             return this.request('GET', requestUrl, null, additionalHeaders || {}); | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  |     del(requestUrl, additionalHeaders) { | ||||||
|  |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|  |             return this.request('DELETE', requestUrl, null, additionalHeaders || {}); | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  |     post(requestUrl, data, additionalHeaders) { | ||||||
|  |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|  |             return this.request('POST', requestUrl, data, additionalHeaders || {}); | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  |     patch(requestUrl, data, additionalHeaders) { | ||||||
|  |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|  |             return this.request('PATCH', requestUrl, data, additionalHeaders || {}); | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  |     put(requestUrl, data, additionalHeaders) { | ||||||
|  |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|  |             return this.request('PUT', requestUrl, data, additionalHeaders || {}); | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  |     head(requestUrl, additionalHeaders) { | ||||||
|  |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|  |             return this.request('HEAD', requestUrl, null, additionalHeaders || {}); | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  |     sendStream(verb, requestUrl, stream, additionalHeaders) { | ||||||
|  |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|  |             return this.request(verb, requestUrl, stream, additionalHeaders); | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * Gets a typed object from an endpoint | ||||||
|  |      * Be aware that not found returns a null.  Other errors (4xx, 5xx) reject the promise | ||||||
|  |      */ | ||||||
|  |     getJson(requestUrl, additionalHeaders = {}) { | ||||||
|  |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|  |             additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); | ||||||
|  |             const res = yield this.get(requestUrl, additionalHeaders); | ||||||
|  |             return this._processResponse(res, this.requestOptions); | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  |     postJson(requestUrl, obj, additionalHeaders = {}) { | ||||||
|  |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|  |             const data = JSON.stringify(obj, null, 2); | ||||||
|  |             additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); | ||||||
|  |             additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); | ||||||
|  |             const res = yield this.post(requestUrl, data, additionalHeaders); | ||||||
|  |             return this._processResponse(res, this.requestOptions); | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  |     putJson(requestUrl, obj, additionalHeaders = {}) { | ||||||
|  |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|  |             const data = JSON.stringify(obj, null, 2); | ||||||
|  |             additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); | ||||||
|  |             additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); | ||||||
|  |             const res = yield this.put(requestUrl, data, additionalHeaders); | ||||||
|  |             return this._processResponse(res, this.requestOptions); | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  |     patchJson(requestUrl, obj, additionalHeaders = {}) { | ||||||
|  |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|  |             const data = JSON.stringify(obj, null, 2); | ||||||
|  |             additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); | ||||||
|  |             additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); | ||||||
|  |             const res = yield this.patch(requestUrl, data, additionalHeaders); | ||||||
|  |             return this._processResponse(res, this.requestOptions); | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * Makes a raw http request. | ||||||
|  |      * All other methods such as get, post, patch, and request ultimately call this. | ||||||
|  |      * Prefer get, del, post and patch | ||||||
|  |      */ | ||||||
|  |     request(verb, requestUrl, data, headers) { | ||||||
|  |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|  |             if (this._disposed) { | ||||||
|  |                 throw new Error('Client has already been disposed.'); | ||||||
|  |             } | ||||||
|  |             const parsedUrl = new URL(requestUrl); | ||||||
|  |             let info = this._prepareRequest(verb, parsedUrl, headers); | ||||||
|  |             // Only perform retries on reads since writes may not be idempotent.
 | ||||||
|  |             const maxTries = this._allowRetries && RetryableHttpVerbs.includes(verb) | ||||||
|  |                 ? this._maxRetries + 1 | ||||||
|  |                 : 1; | ||||||
|  |             let numTries = 0; | ||||||
|  |             let response; | ||||||
|  |             do { | ||||||
|  |                 response = yield this.requestRaw(info, data); | ||||||
|  |                 // Check if it's an authentication challenge
 | ||||||
|  |                 if (response && | ||||||
|  |                     response.message && | ||||||
|  |                     response.message.statusCode === HttpCodes.Unauthorized) { | ||||||
|  |                     let authenticationHandler; | ||||||
|  |                     for (const handler of this.handlers) { | ||||||
|  |                         if (handler.canHandleAuthentication(response)) { | ||||||
|  |                             authenticationHandler = handler; | ||||||
|  |                             break; | ||||||
|  |                         } | ||||||
|  |                     } | ||||||
|  |                     if (authenticationHandler) { | ||||||
|  |                         return authenticationHandler.handleAuthentication(this, info, data); | ||||||
|  |                     } | ||||||
|  |                     else { | ||||||
|  |                         // We have received an unauthorized response but have no handlers to handle it.
 | ||||||
|  |                         // Let the response return to the caller.
 | ||||||
|  |                         return response; | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|  |                 let redirectsRemaining = this._maxRedirects; | ||||||
|  |                 while (response.message.statusCode && | ||||||
|  |                     HttpRedirectCodes.includes(response.message.statusCode) && | ||||||
|  |                     this._allowRedirects && | ||||||
|  |                     redirectsRemaining > 0) { | ||||||
|  |                     const redirectUrl = response.message.headers['location']; | ||||||
|  |                     if (!redirectUrl) { | ||||||
|  |                         // if there's no location to redirect to, we won't
 | ||||||
|  |                         break; | ||||||
|  |                     } | ||||||
|  |                     const parsedRedirectUrl = new URL(redirectUrl); | ||||||
|  |                     if (parsedUrl.protocol === 'https:' && | ||||||
|  |                         parsedUrl.protocol !== parsedRedirectUrl.protocol && | ||||||
|  |                         !this._allowRedirectDowngrade) { | ||||||
|  |                         throw new Error('Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.'); | ||||||
|  |                     } | ||||||
|  |                     // we need to finish reading the response before reassigning response
 | ||||||
|  |                     // which will leak the open socket.
 | ||||||
|  |                     yield response.readBody(); | ||||||
|  |                     // strip authorization header if redirected to a different hostname
 | ||||||
|  |                     if (parsedRedirectUrl.hostname !== parsedUrl.hostname) { | ||||||
|  |                         for (const header in headers) { | ||||||
|  |                             // header names are case insensitive
 | ||||||
|  |                             if (header.toLowerCase() === 'authorization') { | ||||||
|  |                                 delete headers[header]; | ||||||
|  |                             } | ||||||
|  |                         } | ||||||
|  |                     } | ||||||
|  |                     // let's make the request with the new redirectUrl
 | ||||||
|  |                     info = this._prepareRequest(verb, parsedRedirectUrl, headers); | ||||||
|  |                     response = yield this.requestRaw(info, data); | ||||||
|  |                     redirectsRemaining--; | ||||||
|  |                 } | ||||||
|  |                 if (!response.message.statusCode || | ||||||
|  |                     !HttpResponseRetryCodes.includes(response.message.statusCode)) { | ||||||
|  |                     // If not a retry code, return immediately instead of retrying
 | ||||||
|  |                     return response; | ||||||
|  |                 } | ||||||
|  |                 numTries += 1; | ||||||
|  |                 if (numTries < maxTries) { | ||||||
|  |                     yield response.readBody(); | ||||||
|  |                     yield this._performExponentialBackoff(numTries); | ||||||
|  |                 } | ||||||
|  |             } while (numTries < maxTries); | ||||||
|  |             return response; | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * Needs to be called if keepAlive is set to true in request options. | ||||||
|  |      */ | ||||||
|  |     dispose() { | ||||||
|  |         if (this._agent) { | ||||||
|  |             this._agent.destroy(); | ||||||
|  |         } | ||||||
|  |         this._disposed = true; | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * Raw request. | ||||||
|  |      * @param info | ||||||
|  |      * @param data | ||||||
|  |      */ | ||||||
|  |     requestRaw(info, data) { | ||||||
|  |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|  |             return new Promise((resolve, reject) => { | ||||||
|  |                 function callbackForResult(err, res) { | ||||||
|  |                     if (err) { | ||||||
|  |                         reject(err); | ||||||
|  |                     } | ||||||
|  |                     else if (!res) { | ||||||
|  |                         // If `err` is not passed, then `res` must be passed.
 | ||||||
|  |                         reject(new Error('Unknown error')); | ||||||
|  |                     } | ||||||
|  |                     else { | ||||||
|  |                         resolve(res); | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|  |                 this.requestRawWithCallback(info, data, callbackForResult); | ||||||
|  |             }); | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * Raw request with callback. | ||||||
|  |      * @param info | ||||||
|  |      * @param data | ||||||
|  |      * @param onResult | ||||||
|  |      */ | ||||||
|  |     requestRawWithCallback(info, data, onResult) { | ||||||
|  |         if (typeof data === 'string') { | ||||||
|  |             if (!info.options.headers) { | ||||||
|  |                 info.options.headers = {}; | ||||||
|  |             } | ||||||
|  |             info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8'); | ||||||
|  |         } | ||||||
|  |         let callbackCalled = false; | ||||||
|  |         function handleResult(err, res) { | ||||||
|  |             if (!callbackCalled) { | ||||||
|  |                 callbackCalled = true; | ||||||
|  |                 onResult(err, res); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         const req = info.httpModule.request(info.options, (msg) => { | ||||||
|  |             const res = new HttpClientResponse(msg); | ||||||
|  |             handleResult(undefined, res); | ||||||
|  |         }); | ||||||
|  |         let socket; | ||||||
|  |         req.on('socket', sock => { | ||||||
|  |             socket = sock; | ||||||
|  |         }); | ||||||
|  |         // If we ever get disconnected, we want the socket to timeout eventually
 | ||||||
|  |         req.setTimeout(this._socketTimeout || 3 * 60000, () => { | ||||||
|  |             if (socket) { | ||||||
|  |                 socket.end(); | ||||||
|  |             } | ||||||
|  |             handleResult(new Error(`Request timeout: ${info.options.path}`)); | ||||||
|  |         }); | ||||||
|  |         req.on('error', function (err) { | ||||||
|  |             // err has statusCode property
 | ||||||
|  |             // res should have headers
 | ||||||
|  |             handleResult(err); | ||||||
|  |         }); | ||||||
|  |         if (data && typeof data === 'string') { | ||||||
|  |             req.write(data, 'utf8'); | ||||||
|  |         } | ||||||
|  |         if (data && typeof data !== 'string') { | ||||||
|  |             data.on('close', function () { | ||||||
|  |                 req.end(); | ||||||
|  |             }); | ||||||
|  |             data.pipe(req); | ||||||
|  |         } | ||||||
|  |         else { | ||||||
|  |             req.end(); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * Gets an http agent. This function is useful when you need an http agent that handles | ||||||
|  |      * routing through a proxy server - depending upon the url and proxy environment variables. | ||||||
|  |      * @param serverUrl  The server URL where the request will be sent. For example, https://api.github.com
 | ||||||
|  |      */ | ||||||
|  |     getAgent(serverUrl) { | ||||||
|  |         const parsedUrl = new URL(serverUrl); | ||||||
|  |         return this._getAgent(parsedUrl); | ||||||
|  |     } | ||||||
|  |     _prepareRequest(method, requestUrl, headers) { | ||||||
|  |         const info = {}; | ||||||
|  |         info.parsedUrl = requestUrl; | ||||||
|  |         const usingSsl = info.parsedUrl.protocol === 'https:'; | ||||||
|  |         info.httpModule = usingSsl ? https : http; | ||||||
|  |         const defaultPort = usingSsl ? 443 : 80; | ||||||
|  |         info.options = {}; | ||||||
|  |         info.options.host = info.parsedUrl.hostname; | ||||||
|  |         info.options.port = info.parsedUrl.port | ||||||
|  |             ? parseInt(info.parsedUrl.port) | ||||||
|  |             : defaultPort; | ||||||
|  |         info.options.path = | ||||||
|  |             (info.parsedUrl.pathname || '') + (info.parsedUrl.search || ''); | ||||||
|  |         info.options.method = method; | ||||||
|  |         info.options.headers = this._mergeHeaders(headers); | ||||||
|  |         if (this.userAgent != null) { | ||||||
|  |             info.options.headers['user-agent'] = this.userAgent; | ||||||
|  |         } | ||||||
|  |         info.options.agent = this._getAgent(info.parsedUrl); | ||||||
|  |         // gives handlers an opportunity to participate
 | ||||||
|  |         if (this.handlers) { | ||||||
|  |             for (const handler of this.handlers) { | ||||||
|  |                 handler.prepareRequest(info.options); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return info; | ||||||
|  |     } | ||||||
|  |     _mergeHeaders(headers) { | ||||||
|  |         if (this.requestOptions && this.requestOptions.headers) { | ||||||
|  |             return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers || {})); | ||||||
|  |         } | ||||||
|  |         return lowercaseKeys(headers || {}); | ||||||
|  |     } | ||||||
|  |     _getExistingOrDefaultHeader(additionalHeaders, header, _default) { | ||||||
|  |         let clientHeader; | ||||||
|  |         if (this.requestOptions && this.requestOptions.headers) { | ||||||
|  |             clientHeader = lowercaseKeys(this.requestOptions.headers)[header]; | ||||||
|  |         } | ||||||
|  |         return additionalHeaders[header] || clientHeader || _default; | ||||||
|  |     } | ||||||
|  |     _getAgent(parsedUrl) { | ||||||
|  |         let agent; | ||||||
|  |         const proxyUrl = pm.getProxyUrl(parsedUrl); | ||||||
|  |         const useProxy = proxyUrl && proxyUrl.hostname; | ||||||
|  |         if (this._keepAlive && useProxy) { | ||||||
|  |             agent = this._proxyAgent; | ||||||
|  |         } | ||||||
|  |         if (this._keepAlive && !useProxy) { | ||||||
|  |             agent = this._agent; | ||||||
|  |         } | ||||||
|  |         // if agent is already assigned use that agent.
 | ||||||
|  |         if (agent) { | ||||||
|  |             return agent; | ||||||
|  |         } | ||||||
|  |         const usingSsl = parsedUrl.protocol === 'https:'; | ||||||
|  |         let maxSockets = 100; | ||||||
|  |         if (this.requestOptions) { | ||||||
|  |             maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets; | ||||||
|  |         } | ||||||
|  |         // This is `useProxy` again, but we need to check `proxyURl` directly for TypeScripts's flow analysis.
 | ||||||
|  |         if (proxyUrl && proxyUrl.hostname) { | ||||||
|  |             const agentOptions = { | ||||||
|  |                 maxSockets, | ||||||
|  |                 keepAlive: this._keepAlive, | ||||||
|  |                 proxy: Object.assign(Object.assign({}, ((proxyUrl.username || proxyUrl.password) && { | ||||||
|  |                     proxyAuth: `${proxyUrl.username}:${proxyUrl.password}` | ||||||
|  |                 })), { host: proxyUrl.hostname, port: proxyUrl.port }) | ||||||
|  |             }; | ||||||
|  |             let tunnelAgent; | ||||||
|  |             const overHttps = proxyUrl.protocol === 'https:'; | ||||||
|  |             if (usingSsl) { | ||||||
|  |                 tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp; | ||||||
|  |             } | ||||||
|  |             else { | ||||||
|  |                 tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp; | ||||||
|  |             } | ||||||
|  |             agent = tunnelAgent(agentOptions); | ||||||
|  |             this._proxyAgent = agent; | ||||||
|  |         } | ||||||
|  |         // if reusing agent across request and tunneling agent isn't assigned create a new agent
 | ||||||
|  |         if (this._keepAlive && !agent) { | ||||||
|  |             const options = { keepAlive: this._keepAlive, maxSockets }; | ||||||
|  |             agent = usingSsl ? new https.Agent(options) : new http.Agent(options); | ||||||
|  |             this._agent = agent; | ||||||
|  |         } | ||||||
|  |         // if not using private agent and tunnel agent isn't setup then use global agent
 | ||||||
|  |         if (!agent) { | ||||||
|  |             agent = usingSsl ? https.globalAgent : http.globalAgent; | ||||||
|  |         } | ||||||
|  |         if (usingSsl && this._ignoreSslError) { | ||||||
|  |             // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process
 | ||||||
|  |             // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options
 | ||||||
|  |             // we have to cast it to any and change it directly
 | ||||||
|  |             agent.options = Object.assign(agent.options || {}, { | ||||||
|  |                 rejectUnauthorized: false | ||||||
|  |             }); | ||||||
|  |         } | ||||||
|  |         return agent; | ||||||
|  |     } | ||||||
|  |     _performExponentialBackoff(retryNumber) { | ||||||
|  |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|  |             retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber); | ||||||
|  |             const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber); | ||||||
|  |             return new Promise(resolve => setTimeout(() => resolve(), ms)); | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  |     _processResponse(res, options) { | ||||||
|  |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|  |             return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { | ||||||
|  |                 const statusCode = res.message.statusCode || 0; | ||||||
|  |                 const response = { | ||||||
|  |                     statusCode, | ||||||
|  |                     result: null, | ||||||
|  |                     headers: {} | ||||||
|  |                 }; | ||||||
|  |                 // not found leads to null obj returned
 | ||||||
|  |                 if (statusCode === HttpCodes.NotFound) { | ||||||
|  |                     resolve(response); | ||||||
|  |                 } | ||||||
|  |                 // get the result from the body
 | ||||||
|  |                 function dateTimeDeserializer(key, value) { | ||||||
|  |                     if (typeof value === 'string') { | ||||||
|  |                         const a = new Date(value); | ||||||
|  |                         if (!isNaN(a.valueOf())) { | ||||||
|  |                             return a; | ||||||
|  |                         } | ||||||
|  |                     } | ||||||
|  |                     return value; | ||||||
|  |                 } | ||||||
|  |                 let obj; | ||||||
|  |                 let contents; | ||||||
|  |                 try { | ||||||
|  |                     contents = yield res.readBody(); | ||||||
|  |                     if (contents && contents.length > 0) { | ||||||
|  |                         if (options && options.deserializeDates) { | ||||||
|  |                             obj = JSON.parse(contents, dateTimeDeserializer); | ||||||
|  |                         } | ||||||
|  |                         else { | ||||||
|  |                             obj = JSON.parse(contents); | ||||||
|  |                         } | ||||||
|  |                         response.result = obj; | ||||||
|  |                     } | ||||||
|  |                     response.headers = res.message.headers; | ||||||
|  |                 } | ||||||
|  |                 catch (err) { | ||||||
|  |                     // Invalid resource (contents not json);  leaving result obj null
 | ||||||
|  |                 } | ||||||
|  |                 // note that 3xx redirects are handled by the http layer.
 | ||||||
|  |                 if (statusCode > 299) { | ||||||
|  |                     let msg; | ||||||
|  |                     // if exception/error in body, attempt to get better error
 | ||||||
|  |                     if (obj && obj.message) { | ||||||
|  |                         msg = obj.message; | ||||||
|  |                     } | ||||||
|  |                     else if (contents && contents.length > 0) { | ||||||
|  |                         // it may be the case that the exception is in the body message as string
 | ||||||
|  |                         msg = contents; | ||||||
|  |                     } | ||||||
|  |                     else { | ||||||
|  |                         msg = `Failed request: (${statusCode})`; | ||||||
|  |                     } | ||||||
|  |                     const err = new HttpClientError(msg, statusCode); | ||||||
|  |                     err.result = response.result; | ||||||
|  |                     reject(err); | ||||||
|  |                 } | ||||||
|  |                 else { | ||||||
|  |                     resolve(response); | ||||||
|  |                 } | ||||||
|  |             })); | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | exports.HttpClient = HttpClient; | ||||||
|  | const lowercaseKeys = (obj) => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {}); | ||||||
|  | //# sourceMappingURL=index.js.map
 | ||||||
|  | 
 | ||||||
| /***/ }) | /***/ }) | ||||||
| 
 | 
 | ||||||
| /******/ }); | /******/ }); | ||||||
							
								
								
									
										25
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										25
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @ -5,9 +5,28 @@ | |||||||
|   "requires": true, |   "requires": true, | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|     "@actions/core": { |     "@actions/core": { | ||||||
|       "version": "1.2.6", |       "version": "1.10.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.2.6.tgz", |       "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.0.tgz", | ||||||
|       "integrity": "sha512-ZQYitnqiyBc3D+k7LsgSBmMDVkOVidaagDG7j3fOym77jNunWRuYx7VSHa9GNfFZh+zh61xsCjRj4JxMZlDqTA==" |       "integrity": "sha512-2aZDDa3zrrZbP5ZYg159sNoLRb61nQ7awl5pSvIq5Qpj81vwDzdMRKzkWJGJuwVvWpvZKx7vspJALyvaaIQyug==", | ||||||
|  |       "requires": { | ||||||
|  |         "@actions/http-client": "^2.0.1", | ||||||
|  |         "uuid": "^8.3.2" | ||||||
|  |       }, | ||||||
|  |       "dependencies": { | ||||||
|  |         "@actions/http-client": { | ||||||
|  |           "version": "2.0.1", | ||||||
|  |           "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.0.1.tgz", | ||||||
|  |           "integrity": "sha512-PIXiMVtz6VvyaRsGY268qvj57hXQEpsYogYOu2nrQhlf+XCGmZstmuZBbAybUl1nQGnvS1k1eEsQ69ZoD7xlSw==", | ||||||
|  |           "requires": { | ||||||
|  |             "tunnel": "^0.0.6" | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         "uuid": { | ||||||
|  |           "version": "8.3.2", | ||||||
|  |           "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", | ||||||
|  |           "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" | ||||||
|  |         } | ||||||
|  |       } | ||||||
|     }, |     }, | ||||||
|     "@actions/exec": { |     "@actions/exec": { | ||||||
|       "version": "1.0.1", |       "version": "1.0.1", | ||||||
|  | |||||||
| @ -28,7 +28,7 @@ | |||||||
|   }, |   }, | ||||||
|   "homepage": "https://github.com/actions/checkout#readme", |   "homepage": "https://github.com/actions/checkout#readme", | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|     "@actions/core": "^1.2.6", |     "@actions/core": "^1.10.0", | ||||||
|     "@actions/exec": "^1.0.1", |     "@actions/exec": "^1.0.1", | ||||||
|     "@actions/github": "^2.2.0", |     "@actions/github": "^2.2.0", | ||||||
|     "@actions/io": "^1.0.1", |     "@actions/io": "^1.0.1", | ||||||
|  | |||||||
| @ -19,8 +19,9 @@ export interface IGitAuthHelper { | |||||||
|   configureAuth(): Promise<void> |   configureAuth(): Promise<void> | ||||||
|   configureGlobalAuth(): Promise<void> |   configureGlobalAuth(): Promise<void> | ||||||
|   configureSubmoduleAuth(): Promise<void> |   configureSubmoduleAuth(): Promise<void> | ||||||
|  |   configureTempGlobalConfig(): Promise<string> | ||||||
|   removeAuth(): Promise<void> |   removeAuth(): Promise<void> | ||||||
|   removeGlobalAuth(): Promise<void> |   removeGlobalConfig(): Promise<void> | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export function createAuthHelper( | export function createAuthHelper( | ||||||
| @ -80,7 +81,11 @@ class GitAuthHelper { | |||||||
|     await this.configureToken() |     await this.configureToken() | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   async configureGlobalAuth(): Promise<void> { |   async configureTempGlobalConfig(): Promise<string> { | ||||||
|  |     // Already setup global config
 | ||||||
|  |     if (this.temporaryHomePath?.length > 0) { | ||||||
|  |       return path.join(this.temporaryHomePath, '.gitconfig') | ||||||
|  |     } | ||||||
|     // Create a temp home directory
 |     // Create a temp home directory
 | ||||||
|     const runnerTemp = process.env['RUNNER_TEMP'] || '' |     const runnerTemp = process.env['RUNNER_TEMP'] || '' | ||||||
|     assert.ok(runnerTemp, 'RUNNER_TEMP is not defined') |     assert.ok(runnerTemp, 'RUNNER_TEMP is not defined') | ||||||
| @ -110,13 +115,19 @@ class GitAuthHelper { | |||||||
|       await fs.promises.writeFile(newGitConfigPath, '') |       await fs.promises.writeFile(newGitConfigPath, '') | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     try { |     // Override HOME
 | ||||||
|       // Override HOME
 |     core.info( | ||||||
|       core.info( |       `Temporarily overriding HOME='${this.temporaryHomePath}' before making global git config changes` | ||||||
|         `Temporarily overriding HOME='${this.temporaryHomePath}' before making global git config changes` |     ) | ||||||
|       ) |     this.git.setEnvironmentVariable('HOME', this.temporaryHomePath) | ||||||
|       this.git.setEnvironmentVariable('HOME', this.temporaryHomePath) |  | ||||||
| 
 | 
 | ||||||
|  |     return newGitConfigPath | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   async configureGlobalAuth(): Promise<void> { | ||||||
|  |     // 'configureTempGlobalConfig' noops if already set, just returns the path
 | ||||||
|  |     const newGitConfigPath = await this.configureTempGlobalConfig() | ||||||
|  |     try { | ||||||
|       // Configure the token
 |       // Configure the token
 | ||||||
|       await this.configureToken(newGitConfigPath, true) |       await this.configureToken(newGitConfigPath, true) | ||||||
| 
 | 
 | ||||||
| @ -181,10 +192,12 @@ class GitAuthHelper { | |||||||
|     await this.removeToken() |     await this.removeToken() | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   async removeGlobalAuth(): Promise<void> { |   async removeGlobalConfig(): Promise<void> { | ||||||
|     core.debug(`Unsetting HOME override`) |     if (this.temporaryHomePath?.length > 0) { | ||||||
|     this.git.removeEnvironmentVariable('HOME') |       core.debug(`Unsetting HOME override`) | ||||||
|     await io.rmRF(this.temporaryHomePath) |       this.git.removeEnvironmentVariable('HOME') | ||||||
|  |       await io.rmRF(this.temporaryHomePath) | ||||||
|  |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   private async configureSsh(): Promise<void> { |   private async configureSsh(): Promise<void> { | ||||||
|  | |||||||
| @ -36,68 +36,94 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> { | |||||||
|   const git = await getGitCommandManager(settings) |   const git = await getGitCommandManager(settings) | ||||||
|   core.endGroup() |   core.endGroup() | ||||||
| 
 | 
 | ||||||
|   // Prepare existing directory, otherwise recreate
 |   let authHelper: gitAuthHelper.IGitAuthHelper | null = null | ||||||
|   if (isExisting) { |   try { | ||||||
|     await gitDirectoryHelper.prepareExistingDirectory( |     if (git) { | ||||||
|       git, |       authHelper = gitAuthHelper.createAuthHelper(git, settings) | ||||||
|       settings.repositoryPath, |       if (settings.setSafeDirectory) { | ||||||
|       repositoryUrl, |         // Setup the repository path as a safe directory, so if we pass this into a container job with a different user it doesn't fail
 | ||||||
|       settings.clean, |         // Otherwise all git commands we run in a container fail
 | ||||||
|       settings.ref |         await authHelper.configureTempGlobalConfig() | ||||||
|     ) |         core.info( | ||||||
|   } |           `Adding repository directory to the temporary git global config as a safe directory` | ||||||
|  |         ) | ||||||
| 
 | 
 | ||||||
|   if (!git) { |         await git | ||||||
|     // Downloading using REST API
 |           .config('safe.directory', settings.repositoryPath, true, true) | ||||||
|     core.info(`The repository will be downloaded using the GitHub REST API`) |           .catch(error => { | ||||||
|     core.info( |             core.info( | ||||||
|       `To create a local Git repository instead, add Git ${gitCommandManager.MinimumGitVersion} or higher to the PATH` |               `Failed to initialize safe directory with error: ${error}` | ||||||
|     ) |             ) | ||||||
|     if (settings.submodules) { |           }) | ||||||
|       throw new Error( | 
 | ||||||
|         `Input 'submodules' not supported when falling back to download using the GitHub REST API. To create a local Git repository instead, add Git ${gitCommandManager.MinimumGitVersion} or higher to the PATH.` |         stateHelper.setSafeDirectory() | ||||||
|       ) |       } | ||||||
|     } else if (settings.sshKey) { |     } | ||||||
|       throw new Error( | 
 | ||||||
|         `Input 'ssh-key' not supported when falling back to download using the GitHub REST API. To create a local Git repository instead, add Git ${gitCommandManager.MinimumGitVersion} or higher to the PATH.` |     // Prepare existing directory, otherwise recreate
 | ||||||
|  |     if (isExisting) { | ||||||
|  |       await gitDirectoryHelper.prepareExistingDirectory( | ||||||
|  |         git, | ||||||
|  |         settings.repositoryPath, | ||||||
|  |         repositoryUrl, | ||||||
|  |         settings.clean, | ||||||
|  |         settings.ref | ||||||
|       ) |       ) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     await githubApiHelper.downloadRepository( |     if (!git) { | ||||||
|       settings.authToken, |       // Downloading using REST API
 | ||||||
|       settings.repositoryOwner, |       core.info(`The repository will be downloaded using the GitHub REST API`) | ||||||
|       settings.repositoryName, |       core.info( | ||||||
|       settings.ref, |         `To create a local Git repository instead, add Git ${gitCommandManager.MinimumGitVersion} or higher to the PATH` | ||||||
|       settings.commit, |       ) | ||||||
|       settings.repositoryPath |       if (settings.submodules) { | ||||||
|     ) |         throw new Error( | ||||||
|     return |           `Input 'submodules' not supported when falling back to download using the GitHub REST API. To create a local Git repository instead, add Git ${gitCommandManager.MinimumGitVersion} or higher to the PATH.` | ||||||
|   } |         ) | ||||||
|  |       } else if (settings.sshKey) { | ||||||
|  |         throw new Error( | ||||||
|  |           `Input 'ssh-key' not supported when falling back to download using the GitHub REST API. To create a local Git repository instead, add Git ${gitCommandManager.MinimumGitVersion} or higher to the PATH.` | ||||||
|  |         ) | ||||||
|  |       } | ||||||
| 
 | 
 | ||||||
|   // Save state for POST action
 |       await githubApiHelper.downloadRepository( | ||||||
|   stateHelper.setRepositoryPath(settings.repositoryPath) |         settings.authToken, | ||||||
|  |         settings.repositoryOwner, | ||||||
|  |         settings.repositoryName, | ||||||
|  |         settings.ref, | ||||||
|  |         settings.commit, | ||||||
|  |         settings.repositoryPath | ||||||
|  |       ) | ||||||
|  |       return | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|   // Initialize the repository
 |     // Save state for POST action
 | ||||||
|   if ( |     stateHelper.setRepositoryPath(settings.repositoryPath) | ||||||
|     !fsHelper.directoryExistsSync(path.join(settings.repositoryPath, '.git')) | 
 | ||||||
|   ) { |     // Initialize the repository
 | ||||||
|     core.startGroup('Initializing the repository') |     if ( | ||||||
|     await git.init() |       !fsHelper.directoryExistsSync(path.join(settings.repositoryPath, '.git')) | ||||||
|     await git.remoteAdd('origin', repositoryUrl) |     ) { | ||||||
|  |       core.startGroup('Initializing the repository') | ||||||
|  |       await git.init() | ||||||
|  |       await git.remoteAdd('origin', repositoryUrl) | ||||||
|  |       core.endGroup() | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     // Disable automatic garbage collection
 | ||||||
|  |     core.startGroup('Disabling automatic garbage collection') | ||||||
|  |     if (!(await git.tryDisableAutomaticGarbageCollection())) { | ||||||
|  |       core.warning( | ||||||
|  |         `Unable to turn off git automatic garbage collection. The git fetch operation may trigger garbage collection and cause a delay.` | ||||||
|  |       ) | ||||||
|  |     } | ||||||
|     core.endGroup() |     core.endGroup() | ||||||
|   } |  | ||||||
| 
 | 
 | ||||||
|   // Disable automatic garbage collection
 |     // If we didn't initialize it above, do it now
 | ||||||
|   core.startGroup('Disabling automatic garbage collection') |     if (!authHelper) { | ||||||
|   if (!(await git.tryDisableAutomaticGarbageCollection())) { |       authHelper = gitAuthHelper.createAuthHelper(git, settings) | ||||||
|     core.warning( |     } | ||||||
|       `Unable to turn off git automatic garbage collection. The git fetch operation may trigger garbage collection and cause a delay.` |  | ||||||
|     ) |  | ||||||
|   } |  | ||||||
|   core.endGroup() |  | ||||||
| 
 |  | ||||||
|   const authHelper = gitAuthHelper.createAuthHelper(git, settings) |  | ||||||
|   try { |  | ||||||
|     // Configure auth
 |     // Configure auth
 | ||||||
|     core.startGroup('Setting up auth') |     core.startGroup('Setting up auth') | ||||||
|     await authHelper.configureAuth() |     await authHelper.configureAuth() | ||||||
| @ -170,34 +196,26 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> { | |||||||
| 
 | 
 | ||||||
|     // Submodules
 |     // Submodules
 | ||||||
|     if (settings.submodules) { |     if (settings.submodules) { | ||||||
|       try { |       // Temporarily override global config
 | ||||||
|         // Temporarily override global config
 |       core.startGroup('Setting up auth for fetching submodules') | ||||||
|         core.startGroup('Setting up auth for fetching submodules') |       await authHelper.configureGlobalAuth() | ||||||
|         await authHelper.configureGlobalAuth() |       core.endGroup() | ||||||
|         core.endGroup() |  | ||||||
| 
 | 
 | ||||||
|         // Checkout submodules
 |       // Checkout submodules
 | ||||||
|         core.startGroup('Fetching submodules') |       core.startGroup('Fetching submodules') | ||||||
|         await git.submoduleSync(settings.nestedSubmodules) |       await git.submoduleSync(settings.nestedSubmodules) | ||||||
|         await git.submoduleUpdate( |       await git.submoduleUpdate(settings.fetchDepth, settings.nestedSubmodules) | ||||||
|           settings.fetchDepth, |       await git.submoduleForeach( | ||||||
|           settings.nestedSubmodules |         'git config --local gc.auto 0', | ||||||
|         ) |         settings.nestedSubmodules | ||||||
|         await git.submoduleForeach( |       ) | ||||||
|           'git config --local gc.auto 0', |       core.endGroup() | ||||||
|           settings.nestedSubmodules |  | ||||||
|         ) |  | ||||||
|         core.endGroup() |  | ||||||
| 
 | 
 | ||||||
|         // Persist credentials
 |       // Persist credentials
 | ||||||
|         if (settings.persistCredentials) { |       if (settings.persistCredentials) { | ||||||
|           core.startGroup('Persisting credentials for submodules') |         core.startGroup('Persisting credentials for submodules') | ||||||
|           await authHelper.configureSubmoduleAuth() |         await authHelper.configureSubmoduleAuth() | ||||||
|           core.endGroup() |         core.endGroup() | ||||||
|         } |  | ||||||
|       } finally { |  | ||||||
|         // Remove temporary global config override
 |  | ||||||
|         await authHelper.removeGlobalAuth() |  | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -218,10 +236,13 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> { | |||||||
|     ) |     ) | ||||||
|   } finally { |   } finally { | ||||||
|     // Remove auth
 |     // Remove auth
 | ||||||
|     if (!settings.persistCredentials) { |     if (authHelper) { | ||||||
|       core.startGroup('Removing auth') |       if (!settings.persistCredentials) { | ||||||
|       await authHelper.removeAuth() |         core.startGroup('Removing auth') | ||||||
|       core.endGroup() |         await authHelper.removeAuth() | ||||||
|  |         core.endGroup() | ||||||
|  |       } | ||||||
|  |       authHelper.removeGlobalConfig() | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| } | } | ||||||
| @ -244,7 +265,26 @@ export async function cleanup(repositoryPath: string): Promise<void> { | |||||||
| 
 | 
 | ||||||
|   // Remove auth
 |   // Remove auth
 | ||||||
|   const authHelper = gitAuthHelper.createAuthHelper(git) |   const authHelper = gitAuthHelper.createAuthHelper(git) | ||||||
|   await authHelper.removeAuth() |   try { | ||||||
|  |     if (stateHelper.PostSetSafeDirectory) { | ||||||
|  |       // Setup the repository path as a safe directory, so if we pass this into a container job with a different user it doesn't fail
 | ||||||
|  |       // Otherwise all git commands we run in a container fail
 | ||||||
|  |       await authHelper.configureTempGlobalConfig() | ||||||
|  |       core.info( | ||||||
|  |         `Adding repository directory to the temporary git global config as a safe directory` | ||||||
|  |       ) | ||||||
|  | 
 | ||||||
|  |       await git | ||||||
|  |         .config('safe.directory', repositoryPath, true, true) | ||||||
|  |         .catch(error => { | ||||||
|  |           core.info(`Failed to initialize safe directory with error: ${error}`) | ||||||
|  |         }) | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     await authHelper.removeAuth() | ||||||
|  |   } finally { | ||||||
|  |     await authHelper.removeGlobalConfig() | ||||||
|  |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| async function getGitCommandManager( | async function getGitCommandManager( | ||||||
|  | |||||||
| @ -78,4 +78,9 @@ export interface IGitSourceSettings { | |||||||
|    * Organization ID for the currently running workflow (used for auth settings) |    * Organization ID for the currently running workflow (used for auth settings) | ||||||
|    */ |    */ | ||||||
|   workflowOrganizationId: number | undefined |   workflowOrganizationId: number | undefined | ||||||
|  | 
 | ||||||
|  |   /** | ||||||
|  |    * Indicates whether to add repositoryPath as safe.directory in git global config | ||||||
|  |    */ | ||||||
|  |   setSafeDirectory: boolean | ||||||
| } | } | ||||||
|  | |||||||
| @ -122,5 +122,8 @@ export async function getInputs(): Promise<IGitSourceSettings> { | |||||||
|   // Workflow organization ID
 |   // Workflow organization ID
 | ||||||
|   result.workflowOrganizationId = await workflowContextHelper.getOrganizationId() |   result.workflowOrganizationId = await workflowContextHelper.getOrganizationId() | ||||||
| 
 | 
 | ||||||
|  |   // Set safe.directory in git global config.
 | ||||||
|  |   result.setSafeDirectory = | ||||||
|  |     (core.getInput('set-safe-directory') || 'true').toUpperCase() === 'TRUE' | ||||||
|   return result |   return result | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,58 +1,60 @@ | |||||||
| import * as coreCommand from '@actions/core/lib/command' | import * as core from '@actions/core' | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * Indicates whether the POST action is running |  * Indicates whether the POST action is running | ||||||
|  */ |  */ | ||||||
| export const IsPost = !!process.env['STATE_isPost'] | export const IsPost = !!core.getState('isPost') | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * The repository path for the POST action. The value is empty during the MAIN action. |  * The repository path for the POST action. The value is empty during the MAIN action. | ||||||
|  */ |  */ | ||||||
| export const RepositoryPath = | export const RepositoryPath = core.getState('repositoryPath') | ||||||
|   (process.env['STATE_repositoryPath'] as string) || '' | 
 | ||||||
|  | /** | ||||||
|  |  * The set-safe-directory for the POST action. The value is set if input: 'safe-directory' is set during the MAIN action. | ||||||
|  |  */ | ||||||
|  | export const PostSetSafeDirectory = core.getState('setSafeDirectory') === 'true' | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * The SSH key path for the POST action. The value is empty during the MAIN action. |  * The SSH key path for the POST action. The value is empty during the MAIN action. | ||||||
|  */ |  */ | ||||||
| export const SshKeyPath = (process.env['STATE_sshKeyPath'] as string) || '' | export const SshKeyPath = core.getState('sshKeyPath') | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * The SSH known hosts path for the POST action. The value is empty during the MAIN action. |  * The SSH known hosts path for the POST action. The value is empty during the MAIN action. | ||||||
|  */ |  */ | ||||||
| export const SshKnownHostsPath = | export const SshKnownHostsPath = core.getState('sshKnownHostsPath') | ||||||
|   (process.env['STATE_sshKnownHostsPath'] as string) || '' |  | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * Save the repository path so the POST action can retrieve the value. |  * Save the repository path so the POST action can retrieve the value. | ||||||
|  */ |  */ | ||||||
| export function setRepositoryPath(repositoryPath: string) { | export function setRepositoryPath(repositoryPath: string) { | ||||||
|   coreCommand.issueCommand( |   core.saveState('repositoryPath', repositoryPath) | ||||||
|     'save-state', |  | ||||||
|     {name: 'repositoryPath'}, |  | ||||||
|     repositoryPath |  | ||||||
|   ) |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * Save the SSH key path so the POST action can retrieve the value. |  * Save the SSH key path so the POST action can retrieve the value. | ||||||
|  */ |  */ | ||||||
| export function setSshKeyPath(sshKeyPath: string) { | export function setSshKeyPath(sshKeyPath: string) { | ||||||
|   coreCommand.issueCommand('save-state', {name: 'sshKeyPath'}, sshKeyPath) |   core.saveState('sshKeyPath', sshKeyPath) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * Save the SSH known hosts path so the POST action can retrieve the value. |  * Save the SSH known hosts path so the POST action can retrieve the value. | ||||||
|  */ |  */ | ||||||
| export function setSshKnownHostsPath(sshKnownHostsPath: string) { | export function setSshKnownHostsPath(sshKnownHostsPath: string) { | ||||||
|   coreCommand.issueCommand( |   core.saveState('sshKnownHostsPath', sshKnownHostsPath) | ||||||
|     'save-state', | } | ||||||
|     {name: 'sshKnownHostsPath'}, | 
 | ||||||
|     sshKnownHostsPath | /** | ||||||
|   ) |  * Save the sef-safe-directory input so the POST action can retrieve the value. | ||||||
|  |  */ | ||||||
|  | export function setSafeDirectory() { | ||||||
|  |   core.saveState('setSafeDirectory', 'true') | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // Publish a variable so that when the POST action runs, it can determine it should run the cleanup logic.
 | // Publish a variable so that when the POST action runs, it can determine it should run the cleanup logic.
 | ||||||
| // This is necessary since we don't have a separate entry point.
 | // This is necessary since we don't have a separate entry point.
 | ||||||
| if (!IsPost) { | if (!IsPost) { | ||||||
|   coreCommand.issueCommand('save-state', {name: 'isPost'}, 'true') |   core.saveState('isPost', 'true') | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user