mirror of
				https://github.com/actions/download-artifact.git
				synced 2025-10-31 16:03:40 +00:00 
			
		
		
		
	V2 Updates (#36)
* Update README with compatibilty differences between v1 and v2 * NPM package updates and rebuild index.js * Update README * Compat update
This commit is contained in:
		
							parent
							
								
									6849460513
								
							
						
					
					
						commit
						d0b19596d3
					
				
							
								
								
									
										25
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								README.md
									
									
									
									
									
								
							| @ -44,6 +44,31 @@ steps: | ||||
|   run: ls -R | ||||
|   working-directory: path/to/artifact | ||||
| ``` | ||||
| 
 | ||||
| ## Compatibility between `v1` and `v2` | ||||
| 
 | ||||
| When using `download-artifact@v1`, a directory denoted by the name of the artifact would be created if the `path` input was not provided. All of the contents would be downloaded to this directory. | ||||
| ``` | ||||
|    current/working/directory/ | ||||
|       my-artifact/ | ||||
|           ... contents of my-artifact | ||||
| ``` | ||||
| 
 | ||||
| With `v2`, there is no longer an extra directory that is created if the `path` input is not provided. All the contents are downloaded to the current working directory. | ||||
| ``` | ||||
|    current/working/directory/ | ||||
|       ... contents of my-artifact | ||||
| ``` | ||||
| 
 | ||||
| To maintain the same behavior for `v2`, you can set the `path` to the name of the artifact so an extra directory gets created. | ||||
| ``` | ||||
| - uses: actions/download-artifact@v2 | ||||
|   with: | ||||
|     name: my-artifact | ||||
|     path: my-artifact | ||||
| ``` | ||||
| 
 | ||||
| 
 | ||||
| # Download All Artifacts | ||||
| 
 | ||||
| If the `name` input parameter is not provided, all artifacts will be downloaded. To differentiate between downloaded artifacts, a directory denoted by the artifacts name will be created for each individual artifact. | ||||
|  | ||||
							
								
								
									
										149
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										149
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							| @ -2563,7 +2563,9 @@ class BasicCredentialHandler { | ||||
|         this.password = password; | ||||
|     } | ||||
|     prepareRequest(options) { | ||||
|         options.headers['Authorization'] = 'Basic ' + Buffer.from(this.username + ':' + this.password).toString('base64'); | ||||
|         options.headers['Authorization'] = | ||||
|             'Basic ' + | ||||
|                 Buffer.from(this.username + ':' + this.password).toString('base64'); | ||||
|     } | ||||
|     // This handler cannot handle 401
 | ||||
|     canHandleAuthentication(response) { | ||||
| @ -2599,7 +2601,8 @@ class PersonalAccessTokenCredentialHandler { | ||||
|     // currently implements pre-authorization
 | ||||
|     // TODO: support preAuth = false where it hooks on 401
 | ||||
|     prepareRequest(options) { | ||||
|         options.headers['Authorization'] = 'Basic ' + Buffer.from('PAT:' + this.token).toString('base64'); | ||||
|         options.headers['Authorization'] = | ||||
|             'Basic ' + Buffer.from('PAT:' + this.token).toString('base64'); | ||||
|     } | ||||
|     // This handler cannot handle 401
 | ||||
|     canHandleAuthentication(response) { | ||||
| @ -4511,14 +4514,28 @@ class Command { | ||||
|         return cmdStr; | ||||
|     } | ||||
| } | ||||
| /** | ||||
|  * Sanitizes an input into a string so it can be passed into issueCommand safely | ||||
|  * @param input input to sanitize into a string | ||||
|  */ | ||||
| function toCommandValue(input) { | ||||
|     if (input === null || input === undefined) { | ||||
|         return ''; | ||||
|     } | ||||
|     else if (typeof input === 'string' || input instanceof String) { | ||||
|         return input; | ||||
|     } | ||||
|     return JSON.stringify(input); | ||||
| } | ||||
| exports.toCommandValue = toCommandValue; | ||||
| function escapeData(s) { | ||||
|     return (s || '') | ||||
|     return toCommandValue(s) | ||||
|         .replace(/%/g, '%25') | ||||
|         .replace(/\r/g, '%0D') | ||||
|         .replace(/\n/g, '%0A'); | ||||
| } | ||||
| function escapeProperty(s) { | ||||
|     return (s || '') | ||||
|     return toCommandValue(s) | ||||
|         .replace(/%/g, '%25') | ||||
|         .replace(/\r/g, '%0D') | ||||
|         .replace(/\n/g, '%0A') | ||||
| @ -4611,11 +4628,13 @@ var ExitCode; | ||||
| /** | ||||
|  * Sets env variable for this action and future actions in the job | ||||
|  * @param name the name of the variable to set | ||||
|  * @param val the value of the variable | ||||
|  * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify | ||||
|  */ | ||||
| // eslint-disable-next-line @typescript-eslint/no-explicit-any
 | ||||
| function exportVariable(name, val) { | ||||
|     process.env[name] = val; | ||||
|     command_1.issueCommand('set-env', { name }, val); | ||||
|     const convertedVal = command_1.toCommandValue(val); | ||||
|     process.env[name] = convertedVal; | ||||
|     command_1.issueCommand('set-env', { name }, convertedVal); | ||||
| } | ||||
| exports.exportVariable = exportVariable; | ||||
| /** | ||||
| @ -4654,12 +4673,22 @@ exports.getInput = getInput; | ||||
|  * Sets the value of an output. | ||||
|  * | ||||
|  * @param     name     name of the output to set | ||||
|  * @param     value    value to store | ||||
|  * @param     value    value to store. Non-string values will be converted to a string via JSON.stringify | ||||
|  */ | ||||
| // eslint-disable-next-line @typescript-eslint/no-explicit-any
 | ||||
| function setOutput(name, value) { | ||||
|     command_1.issueCommand('set-output', { name }, value); | ||||
| } | ||||
| exports.setOutput = setOutput; | ||||
| /** | ||||
|  * Enables or disables the echoing of commands into stdout for the rest of the step. | ||||
|  * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set. | ||||
|  * | ||||
|  */ | ||||
| function setCommandEcho(enabled) { | ||||
|     command_1.issue('echo', enabled ? 'on' : 'off'); | ||||
| } | ||||
| exports.setCommandEcho = setCommandEcho; | ||||
| //-----------------------------------------------------------------------
 | ||||
| // Results
 | ||||
| //-----------------------------------------------------------------------
 | ||||
| @ -4693,18 +4722,18 @@ function debug(message) { | ||||
| exports.debug = debug; | ||||
| /** | ||||
|  * Adds an error issue | ||||
|  * @param message error issue message | ||||
|  * @param message error issue message. Errors will be converted to string via toString() | ||||
|  */ | ||||
| function error(message) { | ||||
|     command_1.issue('error', message); | ||||
|     command_1.issue('error', message instanceof Error ? message.toString() : message); | ||||
| } | ||||
| exports.error = error; | ||||
| /** | ||||
|  * Adds an warning issue | ||||
|  * @param message warning issue message | ||||
|  * @param message warning issue message. Errors will be converted to string via toString() | ||||
|  */ | ||||
| function warning(message) { | ||||
|     command_1.issue('warning', message); | ||||
|     command_1.issue('warning', message instanceof Error ? message.toString() : message); | ||||
| } | ||||
| exports.warning = warning; | ||||
| /** | ||||
| @ -4762,8 +4791,9 @@ exports.group = group; | ||||
|  * Saves state for current action, the state can only be retrieved by this action's post job execution. | ||||
|  * | ||||
|  * @param     name     name of the state to store | ||||
|  * @param     value    value to store | ||||
|  * @param     value    value to store. Non-string values will be converted to a string via JSON.stringify | ||||
|  */ | ||||
| // eslint-disable-next-line @typescript-eslint/no-explicit-any
 | ||||
| function saveState(name, value) { | ||||
|     command_1.issueCommand('save-state', { name }, value); | ||||
| } | ||||
| @ -4909,8 +4939,18 @@ function getProxyUrl(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 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; | ||||
| @ -5035,18 +5075,22 @@ class HttpClient { | ||||
|      */ | ||||
|     async request(verb, requestUrl, data, headers) { | ||||
|         if (this._disposed) { | ||||
|             throw new Error("Client has already been disposed."); | ||||
|             throw new Error('Client has already been disposed.'); | ||||
|         } | ||||
|         let parsedUrl = url.parse(requestUrl); | ||||
|         let info = this._prepareRequest(verb, parsedUrl, headers); | ||||
|         // Only perform retries on reads since writes may not be idempotent.
 | ||||
|         let maxTries = (this._allowRetries && RetryableHttpVerbs.indexOf(verb) != -1) ? this._maxRetries + 1 : 1; | ||||
|         let maxTries = this._allowRetries && RetryableHttpVerbs.indexOf(verb) != -1 | ||||
|             ? this._maxRetries + 1 | ||||
|             : 1; | ||||
|         let numTries = 0; | ||||
|         let response; | ||||
|         while (numTries < maxTries) { | ||||
|             response = await this.requestRaw(info, data); | ||||
|             // Check if it's an authentication challenge
 | ||||
|             if (response && response.message && response.message.statusCode === HttpCodes.Unauthorized) { | ||||
|             if (response && | ||||
|                 response.message && | ||||
|                 response.message.statusCode === HttpCodes.Unauthorized) { | ||||
|                 let authenticationHandler; | ||||
|                 for (let i = 0; i < this.handlers.length; i++) { | ||||
|                     if (this.handlers[i].canHandleAuthentication(response)) { | ||||
| @ -5064,21 +5108,32 @@ class HttpClient { | ||||
|                 } | ||||
|             } | ||||
|             let redirectsRemaining = this._maxRedirects; | ||||
|             while (HttpRedirectCodes.indexOf(response.message.statusCode) != -1 | ||||
|                 && this._allowRedirects | ||||
|                 && redirectsRemaining > 0) { | ||||
|                 const redirectUrl = response.message.headers["location"]; | ||||
|             while (HttpRedirectCodes.indexOf(response.message.statusCode) != -1 && | ||||
|                 this._allowRedirects && | ||||
|                 redirectsRemaining > 0) { | ||||
|                 const redirectUrl = response.message.headers['location']; | ||||
|                 if (!redirectUrl) { | ||||
|                     // if there's no location to redirect to, we won't
 | ||||
|                     break; | ||||
|                 } | ||||
|                 let parsedRedirectUrl = url.parse(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."); | ||||
|                 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.
 | ||||
|                 await response.readBody(); | ||||
|                 // strip authorization header if redirected to a different hostname
 | ||||
|                 if (parsedRedirectUrl.hostname !== parsedUrl.hostname) { | ||||
|                     for (let 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 = await this.requestRaw(info, data); | ||||
| @ -5129,8 +5184,8 @@ class HttpClient { | ||||
|      */ | ||||
|     requestRawWithCallback(info, data, onResult) { | ||||
|         let socket; | ||||
|         if (typeof (data) === 'string') { | ||||
|             info.options.headers["Content-Length"] = Buffer.byteLength(data, 'utf8'); | ||||
|         if (typeof data === 'string') { | ||||
|             info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8'); | ||||
|         } | ||||
|         let callbackCalled = false; | ||||
|         let handleResult = (err, res) => { | ||||
| @ -5143,7 +5198,7 @@ class HttpClient { | ||||
|             let res = new HttpClientResponse(msg); | ||||
|             handleResult(null, res); | ||||
|         }); | ||||
|         req.on('socket', (sock) => { | ||||
|         req.on('socket', sock => { | ||||
|             socket = sock; | ||||
|         }); | ||||
|         // If we ever get disconnected, we want the socket to timeout eventually
 | ||||
| @ -5158,10 +5213,10 @@ class HttpClient { | ||||
|             // res should have headers
 | ||||
|             handleResult(err, null); | ||||
|         }); | ||||
|         if (data && typeof (data) === 'string') { | ||||
|         if (data && typeof data === 'string') { | ||||
|             req.write(data, 'utf8'); | ||||
|         } | ||||
|         if (data && typeof (data) !== 'string') { | ||||
|         if (data && typeof data !== 'string') { | ||||
|             data.on('close', function () { | ||||
|                 req.end(); | ||||
|             }); | ||||
| @ -5188,31 +5243,34 @@ class HttpClient { | ||||
|         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.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.headers['user-agent'] = this.userAgent; | ||||
|         } | ||||
|         info.options.agent = this._getAgent(info.parsedUrl); | ||||
|         // gives handlers an opportunity to participate
 | ||||
|         if (this.handlers) { | ||||
|             this.handlers.forEach((handler) => { | ||||
|             this.handlers.forEach(handler => { | ||||
|                 handler.prepareRequest(info.options); | ||||
|             }); | ||||
|         } | ||||
|         return info; | ||||
|     } | ||||
|     _mergeHeaders(headers) { | ||||
|         const lowercaseKeys = obj => Object.keys(obj).reduce((c, k) => (c[k.toLowerCase()] = obj[k], c), {}); | ||||
|         const lowercaseKeys = obj => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {}); | ||||
|         if (this.requestOptions && this.requestOptions.headers) { | ||||
|             return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers)); | ||||
|         } | ||||
|         return lowercaseKeys(headers || {}); | ||||
|     } | ||||
|     _getExistingOrDefaultHeader(additionalHeaders, header, _default) { | ||||
|         const lowercaseKeys = obj => Object.keys(obj).reduce((c, k) => (c[k.toLowerCase()] = obj[k], c), {}); | ||||
|         const lowercaseKeys = obj => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {}); | ||||
|         let clientHeader; | ||||
|         if (this.requestOptions && this.requestOptions.headers) { | ||||
|             clientHeader = lowercaseKeys(this.requestOptions.headers)[header]; | ||||
| @ -5250,7 +5308,7 @@ class HttpClient { | ||||
|                     proxyAuth: proxyUrl.auth, | ||||
|                     host: proxyUrl.hostname, | ||||
|                     port: proxyUrl.port | ||||
|                 }, | ||||
|                 } | ||||
|             }; | ||||
|             let tunnelAgent; | ||||
|             const overHttps = proxyUrl.protocol === 'https:'; | ||||
| @ -5277,7 +5335,9 @@ class HttpClient { | ||||
|             // 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 }); | ||||
|             agent.options = Object.assign(agent.options || {}, { | ||||
|                 rejectUnauthorized: false | ||||
|             }); | ||||
|         } | ||||
|         return agent; | ||||
|     } | ||||
| @ -5338,7 +5398,7 @@ class HttpClient { | ||||
|                     msg = contents; | ||||
|                 } | ||||
|                 else { | ||||
|                     msg = "Failed request: (" + statusCode + ")"; | ||||
|                     msg = 'Failed request: (' + statusCode + ')'; | ||||
|                 } | ||||
|                 let err = new Error(msg); | ||||
|                 // attach statusCode and body obj (if available) to the error object
 | ||||
| @ -7462,12 +7522,10 @@ function getProxyUrl(reqUrl) { | ||||
|     } | ||||
|     let proxyVar; | ||||
|     if (usingSsl) { | ||||
|         proxyVar = process.env["https_proxy"] || | ||||
|             process.env["HTTPS_PROXY"]; | ||||
|         proxyVar = process.env['https_proxy'] || process.env['HTTPS_PROXY']; | ||||
|     } | ||||
|     else { | ||||
|         proxyVar = process.env["http_proxy"] || | ||||
|             process.env["HTTP_PROXY"]; | ||||
|         proxyVar = process.env['http_proxy'] || process.env['HTTP_PROXY']; | ||||
|     } | ||||
|     if (proxyVar) { | ||||
|         proxyUrl = url.parse(proxyVar); | ||||
| @ -7479,7 +7537,7 @@ function checkBypass(reqUrl) { | ||||
|     if (!reqUrl.hostname) { | ||||
|         return false; | ||||
|     } | ||||
|     let noProxy = process.env["no_proxy"] || process.env["NO_PROXY"] || ''; | ||||
|     let noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || ''; | ||||
|     if (!noProxy) { | ||||
|         return false; | ||||
|     } | ||||
| @ -7500,7 +7558,10 @@ function checkBypass(reqUrl) { | ||||
|         upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`); | ||||
|     } | ||||
|     // Compare request host against noproxy
 | ||||
|     for (let upperNoProxyItem of noProxy.split(',').map(x => x.trim().toUpperCase()).filter(x => x)) { | ||||
|     for (let upperNoProxyItem of noProxy | ||||
|         .split(',') | ||||
|         .map(x => x.trim().toUpperCase()) | ||||
|         .filter(x => x)) { | ||||
|         if (upperReqHosts.some(x => x === upperNoProxyItem)) { | ||||
|             return true; | ||||
|         } | ||||
|  | ||||
							
								
								
									
										62
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										62
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @ -29,9 +29,9 @@ | ||||
|       } | ||||
|     }, | ||||
|     "@actions/core": { | ||||
|       "version": "1.2.3", | ||||
|       "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.2.3.tgz", | ||||
|       "integrity": "sha512-Wp4xnyokakM45Uuj4WLUxdsa8fJjKVl1fDTsPbTEcTcuu0Nb26IPQbOtjmnfaCPGcaoPOOqId8H9NapZ8gii4w==", | ||||
|       "version": "1.2.4", | ||||
|       "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.2.4.tgz", | ||||
|       "integrity": "sha512-YJCEq8BE3CdN8+7HPZ/4DxJjk/OkZV2FFIf+DlZTC/4iBlzYCD5yjRR6eiOS5llO11zbRltIRuKAjMKaWTE6cg==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "@actions/http-client": { | ||||
| @ -223,33 +223,33 @@ | ||||
|       } | ||||
|     }, | ||||
|     "@typescript-eslint/parser": { | ||||
|       "version": "2.27.0", | ||||
|       "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.27.0.tgz", | ||||
|       "integrity": "sha512-HFUXZY+EdwrJXZo31DW4IS1ujQW3krzlRjBrFRrJcMDh0zCu107/nRfhk/uBasO8m0NVDbBF5WZKcIUMRO7vPg==", | ||||
|       "version": "2.30.0", | ||||
|       "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.30.0.tgz", | ||||
|       "integrity": "sha512-9kDOxzp0K85UnpmPJqUzdWaCNorYYgk1yZmf4IKzpeTlSAclnFsrLjfwD9mQExctLoLoGAUXq1co+fbr+3HeFw==", | ||||
|       "dev": true, | ||||
|       "requires": { | ||||
|         "@types/eslint-visitor-keys": "^1.0.0", | ||||
|         "@typescript-eslint/experimental-utils": "2.27.0", | ||||
|         "@typescript-eslint/typescript-estree": "2.27.0", | ||||
|         "@typescript-eslint/experimental-utils": "2.30.0", | ||||
|         "@typescript-eslint/typescript-estree": "2.30.0", | ||||
|         "eslint-visitor-keys": "^1.1.0" | ||||
|       }, | ||||
|       "dependencies": { | ||||
|         "@typescript-eslint/experimental-utils": { | ||||
|           "version": "2.27.0", | ||||
|           "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.27.0.tgz", | ||||
|           "integrity": "sha512-vOsYzjwJlY6E0NJRXPTeCGqjv5OHgRU1kzxHKWJVPjDYGbPgLudBXjIlc+OD1hDBZ4l1DLbOc5VjofKahsu9Jw==", | ||||
|           "version": "2.30.0", | ||||
|           "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.30.0.tgz", | ||||
|           "integrity": "sha512-L3/tS9t+hAHksy8xuorhOzhdefN0ERPDWmR9CclsIGOUqGKy6tqc/P+SoXeJRye5gazkuPO0cK9MQRnolykzkA==", | ||||
|           "dev": true, | ||||
|           "requires": { | ||||
|             "@types/json-schema": "^7.0.3", | ||||
|             "@typescript-eslint/typescript-estree": "2.27.0", | ||||
|             "@typescript-eslint/typescript-estree": "2.30.0", | ||||
|             "eslint-scope": "^5.0.0", | ||||
|             "eslint-utils": "^2.0.0" | ||||
|           } | ||||
|         }, | ||||
|         "@typescript-eslint/typescript-estree": { | ||||
|           "version": "2.27.0", | ||||
|           "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.27.0.tgz", | ||||
|           "integrity": "sha512-t2miCCJIb/FU8yArjAvxllxbTiyNqaXJag7UOpB5DVoM3+xnjeOngtqlJkLRnMtzaRcJhe3CIR9RmL40omubhg==", | ||||
|           "version": "2.30.0", | ||||
|           "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.30.0.tgz", | ||||
|           "integrity": "sha512-nI5WOechrA0qAhnr+DzqwmqHsx7Ulr/+0H7bWCcClDhhWkSyZR5BmTvnBEyONwJCTWHfc5PAQExX24VD26IAVw==", | ||||
|           "dev": true, | ||||
|           "requires": { | ||||
|             "debug": "^4.1.1", | ||||
| @ -543,9 +543,9 @@ | ||||
|       "dev": true | ||||
|     }, | ||||
|     "concurrently": { | ||||
|       "version": "5.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-5.1.0.tgz", | ||||
|       "integrity": "sha512-9ViZMu3OOCID3rBgU31mjBftro2chOop0G2u1olq1OuwRBVRw/GxHTg80TVJBUTJfoswMmEUeuOg1g1yu1X2dA==", | ||||
|       "version": "5.2.0", | ||||
|       "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-5.2.0.tgz", | ||||
|       "integrity": "sha512-XxcDbQ4/43d6CxR7+iV8IZXhur4KbmEJk1CetVMUqCy34z9l0DkszbY+/9wvmSnToTej0SYomc2WSRH+L0zVJw==", | ||||
|       "dev": true, | ||||
|       "requires": { | ||||
|         "chalk": "^2.4.2", | ||||
| @ -614,9 +614,9 @@ | ||||
|       "dev": true | ||||
|     }, | ||||
|     "date-fns": { | ||||
|       "version": "2.9.0", | ||||
|       "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.9.0.tgz", | ||||
|       "integrity": "sha512-khbFLu/MlzLjEzy9Gh8oY1hNt/Dvxw3J6Rbc28cVoYWQaC1S3YI4xwkF9ZWcjDLscbZlY9hISMr66RFzZagLsA==", | ||||
|       "version": "2.12.0", | ||||
|       "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.12.0.tgz", | ||||
|       "integrity": "sha512-qJgn99xxKnFgB1qL4jpxU7Q2t0LOn1p8KMIveef3UZD7kqjT3tpFNNdXJelEHhE+rUgffriXriw/sOSU+cS1Hw==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "debug": { | ||||
| @ -2007,9 +2007,9 @@ | ||||
|       "dev": true | ||||
|     }, | ||||
|     "prettier": { | ||||
|       "version": "2.0.4", | ||||
|       "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.4.tgz", | ||||
|       "integrity": "sha512-SVJIQ51spzFDvh4fIbCLvciiDMCrRhlN3mbZvv/+ycjvmF5E73bKdGfU8QDLNmjYJf+lsGnDBC4UUnvTe5OO0w==", | ||||
|       "version": "2.0.5", | ||||
|       "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.5.tgz", | ||||
|       "integrity": "sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "prettier-linter-helpers": { | ||||
| @ -2692,9 +2692,9 @@ | ||||
|       "dev": true | ||||
|     }, | ||||
|     "yargs": { | ||||
|       "version": "13.3.0", | ||||
|       "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", | ||||
|       "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", | ||||
|       "version": "13.3.2", | ||||
|       "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", | ||||
|       "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", | ||||
|       "dev": true, | ||||
|       "requires": { | ||||
|         "cliui": "^5.0.0", | ||||
| @ -2706,7 +2706,7 @@ | ||||
|         "string-width": "^3.0.0", | ||||
|         "which-module": "^2.0.0", | ||||
|         "y18n": "^4.0.0", | ||||
|         "yargs-parser": "^13.1.1" | ||||
|         "yargs-parser": "^13.1.2" | ||||
|       }, | ||||
|       "dependencies": { | ||||
|         "emoji-regex": { | ||||
| @ -2735,9 +2735,9 @@ | ||||
|       } | ||||
|     }, | ||||
|     "yargs-parser": { | ||||
|       "version": "13.1.1", | ||||
|       "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", | ||||
|       "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", | ||||
|       "version": "13.1.2", | ||||
|       "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", | ||||
|       "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", | ||||
|       "dev": true, | ||||
|       "requires": { | ||||
|         "camelcase": "^5.0.0", | ||||
|  | ||||
| @ -29,13 +29,13 @@ | ||||
|   "homepage": "https://github.com/actions/download-artifact#readme", | ||||
|   "devDependencies": { | ||||
|     "@actions/artifact": "^0.3.1", | ||||
|     "@actions/core": "^1.2.3", | ||||
|     "@typescript-eslint/parser": "^2.27.0", | ||||
|     "@actions/core": "^1.2.4", | ||||
|     "@typescript-eslint/parser": "^2.30.0", | ||||
|     "@zeit/ncc": "^0.22.1", | ||||
|     "concurrently": "^5.1.0", | ||||
|     "concurrently": "^5.2.0", | ||||
|     "eslint": "^6.8.0", | ||||
|     "eslint-plugin-github": "^3.4.1", | ||||
|     "prettier": "^2.0.4", | ||||
|     "prettier": "^2.0.5", | ||||
|     "typescript": "^3.8.3" | ||||
|   } | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user