mirror of
				https://github.com/actions/setup-node.git
				synced 2025-10-26 23:36:44 +08:00 
			
		
		
		
	* Updates * Update * Update * Update * Update * Yarn sometimes prefers npmrc, so use same token * Description * Update readme * Feedback * Add type * new toolkit and scoped registries * npmrc in RUNNER_TEMP * Dont always auth * Try exporting blank token * Get auth working for now pending runner changes * Fix string interpolation for auth token. * Don't export both userconfigs * Update authutil.js * Add single quotes for authString * Fix the registry string. * Use userconfig and append trailing slash * Keep in root of repo * Try just adding auth token * Remove auth token * Try changes again * Add tests * Npm and GPR samples * Add types
		
			
				
	
	
		
			144 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			144 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| 
 | |
| Object.defineProperty(exports, '__esModule', { value: true });
 | |
| 
 | |
| function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
 | |
| 
 | |
| var endpoint = require('@octokit/endpoint');
 | |
| var getUserAgent = _interopDefault(require('universal-user-agent'));
 | |
| var isPlainObject = _interopDefault(require('is-plain-object'));
 | |
| var nodeFetch = _interopDefault(require('node-fetch'));
 | |
| var requestError = require('@octokit/request-error');
 | |
| 
 | |
| const VERSION = "0.0.0-development";
 | |
| 
 | |
| function getBufferResponse(response) {
 | |
|   return response.arrayBuffer();
 | |
| }
 | |
| 
 | |
| function fetchWrapper(requestOptions) {
 | |
|   if (isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) {
 | |
|     requestOptions.body = JSON.stringify(requestOptions.body);
 | |
|   }
 | |
| 
 | |
|   let headers = {};
 | |
|   let status;
 | |
|   let url;
 | |
|   const fetch = requestOptions.request && requestOptions.request.fetch || nodeFetch;
 | |
|   return fetch(requestOptions.url, Object.assign({
 | |
|     method: requestOptions.method,
 | |
|     body: requestOptions.body,
 | |
|     headers: requestOptions.headers,
 | |
|     redirect: requestOptions.redirect
 | |
|   }, requestOptions.request)).then(response => {
 | |
|     url = response.url;
 | |
|     status = response.status;
 | |
| 
 | |
|     for (const keyAndValue of response.headers) {
 | |
|       headers[keyAndValue[0]] = keyAndValue[1];
 | |
|     }
 | |
| 
 | |
|     if (status === 204 || status === 205) {
 | |
|       return;
 | |
|     } // GitHub API returns 200 for HEAD requsets
 | |
| 
 | |
| 
 | |
|     if (requestOptions.method === "HEAD") {
 | |
|       if (status < 400) {
 | |
|         return;
 | |
|       }
 | |
| 
 | |
|       throw new requestError.RequestError(response.statusText, status, {
 | |
|         headers,
 | |
|         request: requestOptions
 | |
|       });
 | |
|     }
 | |
| 
 | |
|     if (status === 304) {
 | |
|       throw new requestError.RequestError("Not modified", status, {
 | |
|         headers,
 | |
|         request: requestOptions
 | |
|       });
 | |
|     }
 | |
| 
 | |
|     if (status >= 400) {
 | |
|       return response.text().then(message => {
 | |
|         const error = new requestError.RequestError(message, status, {
 | |
|           headers,
 | |
|           request: requestOptions
 | |
|         });
 | |
| 
 | |
|         try {
 | |
|           Object.assign(error, JSON.parse(error.message));
 | |
|         } catch (e) {// ignore, see octokit/rest.js#684
 | |
|         }
 | |
| 
 | |
|         throw error;
 | |
|       });
 | |
|     }
 | |
| 
 | |
|     const contentType = response.headers.get("content-type");
 | |
| 
 | |
|     if (/application\/json/.test(contentType)) {
 | |
|       return response.json();
 | |
|     }
 | |
| 
 | |
|     if (!contentType || /^text\/|charset=utf-8$/.test(contentType)) {
 | |
|       return response.text();
 | |
|     }
 | |
| 
 | |
|     return getBufferResponse(response);
 | |
|   }).then(data => {
 | |
|     return {
 | |
|       status,
 | |
|       url,
 | |
|       headers,
 | |
|       data
 | |
|     };
 | |
|   }).catch(error => {
 | |
|     if (error instanceof requestError.RequestError) {
 | |
|       throw error;
 | |
|     }
 | |
| 
 | |
|     throw new requestError.RequestError(error.message, 500, {
 | |
|       headers,
 | |
|       request: requestOptions
 | |
|     });
 | |
|   });
 | |
| }
 | |
| 
 | |
| function withDefaults(oldEndpoint, newDefaults) {
 | |
|   const endpoint = oldEndpoint.defaults(newDefaults);
 | |
| 
 | |
|   const newApi = function (route, parameters) {
 | |
|     const endpointOptions = endpoint.merge(route, parameters);
 | |
| 
 | |
|     if (!endpointOptions.request || !endpointOptions.request.hook) {
 | |
|       return fetchWrapper(endpoint.parse(endpointOptions));
 | |
|     }
 | |
| 
 | |
|     const request = (route, parameters) => {
 | |
|       return fetchWrapper(endpoint.parse(endpoint.merge(route, parameters)));
 | |
|     };
 | |
| 
 | |
|     Object.assign(request, {
 | |
|       endpoint,
 | |
|       defaults: withDefaults.bind(null, endpoint)
 | |
|     });
 | |
|     return endpointOptions.request.hook(request, endpointOptions);
 | |
|   };
 | |
| 
 | |
|   return Object.assign(newApi, {
 | |
|     endpoint,
 | |
|     defaults: withDefaults.bind(null, endpoint)
 | |
|   });
 | |
| }
 | |
| 
 | |
| const request = withDefaults(endpoint.endpoint, {
 | |
|   headers: {
 | |
|     "user-agent": `octokit-request.js/${VERSION} ${getUserAgent()}`
 | |
|   }
 | |
| });
 | |
| 
 | |
| exports.request = request;
 |