mirror of
				https://github.com/therootcompany/request.js.git
				synced 2024-11-16 17:28:58 +00:00 
			
		
		
		
	lint+feat: add types + minor ws-ish refactor
This commit is contained in:
		
							parent
							
								
									e397dcc9cb
								
							
						
					
					
						commit
						750751966e
					
				
							
								
								
									
										14
									
								
								bin/localize-types
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										14
									
								
								bin/localize-types
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,14 @@ | ||||
| #!/bin/sh | ||||
| 
 | ||||
| my_typedefs="$( | ||||
|     grep typedef ./types.js | cut -d ' ' -f5 | ||||
| )" | ||||
| 
 | ||||
| rm -f ./local-types.js | ||||
| { | ||||
|     echo '/**' | ||||
|     for my_type in $my_typedefs; do | ||||
|         echo " * @typedef {import('./types.js').${my_type}} ${my_type}" | ||||
|     done | ||||
|     echo ' */' | ||||
| } >> ./local-types.js | ||||
							
								
								
									
										70
									
								
								index.js
									
									
									
									
									
								
							
							
						
						
									
										70
									
								
								index.js
									
									
									
									
									
								
							| @ -7,6 +7,35 @@ var os = require('os'); | ||||
| var pkg = require('./package.json'); | ||||
| var fs = require('fs'); // only for streams
 | ||||
| 
 | ||||
| var _defaults = { | ||||
|     sendImmediately: true, | ||||
|     method: '', | ||||
|     headers: {}, | ||||
|     useQuerystring: false, | ||||
|     followRedirect: true, | ||||
|     followAllRedirects: false, | ||||
|     followOriginalHttpMethod: false, | ||||
|     maxRedirects: 10, | ||||
|     removeRefererHeader: false, | ||||
|     // encoding: undefined,
 | ||||
|     // stream: false, // TODO allow a stream?
 | ||||
|     gzip: false | ||||
|     //, body: undefined
 | ||||
|     //, json: undefined
 | ||||
| }; | ||||
| 
 | ||||
| var _keys = Object.keys(_defaults).concat([ | ||||
|     'encoding', | ||||
|     'stream', | ||||
|     'body', | ||||
|     'json', | ||||
|     'form', | ||||
|     'auth', | ||||
|     'formData', | ||||
|     'FormData', | ||||
|     'userAgent' // non-standard for request.js
 | ||||
| ]); | ||||
| 
 | ||||
| function debug() { | ||||
|     if (module.exports.debug) { | ||||
|         console.log.apply(console, arguments); | ||||
| @ -165,10 +194,16 @@ function handleResponse(resp, opts, cb) { | ||||
|     }); | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * @param {any} defs - TODO enumerate defaults | ||||
|  * @returns {Request} | ||||
|  */ | ||||
| function setDefaults(defs) { | ||||
|     defs = defs || {}; | ||||
| 
 | ||||
|     /** @type {Request} */ | ||||
|     function urequestHelper(opts, cb) { | ||||
|         //jshint maxcomplexity:42
 | ||||
|         debug('\n[urequest] processed options:'); | ||||
|         debug(opts); | ||||
| 
 | ||||
| @ -522,7 +557,7 @@ function setDefaults(defs) { | ||||
|             opts = { url: opts }; | ||||
|         } | ||||
| 
 | ||||
|         module.exports._keys.forEach(function (key) { | ||||
|         _keys.forEach(function (key) { | ||||
|             if (key in opts && 'undefined' !== typeof opts[key]) { | ||||
|                 reqOpts[key] = opts[key]; | ||||
|             } else if (key in defs) { | ||||
| @ -653,35 +688,12 @@ function getUserAgent(additional) { | ||||
|     return ua; | ||||
| } | ||||
| 
 | ||||
| var _defaults = { | ||||
|     sendImmediately: true, | ||||
|     method: '', | ||||
|     headers: {}, | ||||
|     useQuerystring: false, | ||||
|     followRedirect: true, | ||||
|     followAllRedirects: false, | ||||
|     followOriginalHttpMethod: false, | ||||
|     maxRedirects: 10, | ||||
|     removeRefererHeader: false, | ||||
|     // encoding: undefined,
 | ||||
|     // stream: false, // TODO allow a stream?
 | ||||
|     gzip: false | ||||
|     //, body: undefined
 | ||||
|     //, json: undefined
 | ||||
| }; | ||||
| module.exports = setDefaults(_defaults); | ||||
| exports.request = setDefaults(_defaults); | ||||
| exports._keys = _keys; | ||||
| 
 | ||||
| module.exports = exports.request; | ||||
| module.exports._keys = _keys; | ||||
| 
 | ||||
| module.exports._keys = Object.keys(_defaults).concat([ | ||||
|     'encoding', | ||||
|     'stream', | ||||
|     'body', | ||||
|     'json', | ||||
|     'form', | ||||
|     'auth', | ||||
|     'formData', | ||||
|     'FormData', | ||||
|     'userAgent' // non-standard for request.js
 | ||||
| ]); | ||||
| module.exports.debug = | ||||
|     -1 !== (process.env.NODE_DEBUG || '').split(/\s+/g).indexOf('urequest'); | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										4
									
								
								local-types.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								local-types.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,4 @@ | ||||
| /** | ||||
|  * @typedef {import('./types.js').Response} Response | ||||
|  * @typedef {import('./types.js').Headers} Headers | ||||
|  */ | ||||
| @ -7,13 +7,17 @@ | ||||
|         "index.js": "browser.js" | ||||
|     }, | ||||
|     "files": [ | ||||
|         "lib" | ||||
|         "browser.js", | ||||
|         "lib", | ||||
|         "local-types.js", | ||||
|         "types.js" | ||||
|     ], | ||||
|     "directories": { | ||||
|         "example": "examples" | ||||
|     }, | ||||
|     "scripts": { | ||||
|         "test": "echo \"Error: no test specified\" && exit 1" | ||||
|         "test": "echo \"Error: no test specified\" && exit 1", | ||||
|         "prepublish": "./bin/localize-types" | ||||
|     }, | ||||
|     "repository": { | ||||
|         "type": "git", | ||||
|  | ||||
							
								
								
									
										30
									
								
								types.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								types.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,30 @@ | ||||
| 'use strict'; | ||||
| 
 | ||||
| module.exports._typesOnly = true; | ||||
| 
 | ||||
| /** | ||||
|  * @callback Request | ||||
|  * @param {Object} opts | ||||
|  * @param {String} [opts.body] | ||||
|  * @param {Object.<String,any>} [opts.form] | ||||
|  * @param {Headers} opts.headers | ||||
|  * @param {Boolean | String} [opts.json] | ||||
|  * @param {String} [opts.method] | ||||
|  * @param {String} opts.url | ||||
|  * @returns {Response} | ||||
|  */ | ||||
| 
 | ||||
| /** | ||||
|  * @typedef {Object} Response | ||||
|  * @prop {any} body | ||||
|  * @prop {Headers} headers | ||||
|  * @prop {Boolean} ok | ||||
|  * @prop {any} [response] - TODO (browser only) | ||||
|  * @prop {any} request - TODO | ||||
|  * @prop {String} status | ||||
|  * @prop {Number} statusCode | ||||
|  */ | ||||
| 
 | ||||
| /** | ||||
|  * @typedef {Object.<String,String|Array<String>>} Headers | ||||
|  */ | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user