lint+feat: add types + minor ws-ish refactor
This commit is contained in:
parent
e397dcc9cb
commit
750751966e
|
@ -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 pkg = require('./package.json');
|
||||||
var fs = require('fs'); // only for streams
|
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() {
|
function debug() {
|
||||||
if (module.exports.debug) {
|
if (module.exports.debug) {
|
||||||
console.log.apply(console, arguments);
|
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) {
|
function setDefaults(defs) {
|
||||||
defs = defs || {};
|
defs = defs || {};
|
||||||
|
|
||||||
|
/** @type {Request} */
|
||||||
function urequestHelper(opts, cb) {
|
function urequestHelper(opts, cb) {
|
||||||
|
//jshint maxcomplexity:42
|
||||||
debug('\n[urequest] processed options:');
|
debug('\n[urequest] processed options:');
|
||||||
debug(opts);
|
debug(opts);
|
||||||
|
|
||||||
|
@ -522,7 +557,7 @@ function setDefaults(defs) {
|
||||||
opts = { url: opts };
|
opts = { url: opts };
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports._keys.forEach(function (key) {
|
_keys.forEach(function (key) {
|
||||||
if (key in opts && 'undefined' !== typeof opts[key]) {
|
if (key in opts && 'undefined' !== typeof opts[key]) {
|
||||||
reqOpts[key] = opts[key];
|
reqOpts[key] = opts[key];
|
||||||
} else if (key in defs) {
|
} else if (key in defs) {
|
||||||
|
@ -653,35 +688,12 @@ function getUserAgent(additional) {
|
||||||
return ua;
|
return ua;
|
||||||
}
|
}
|
||||||
|
|
||||||
var _defaults = {
|
exports.request = setDefaults(_defaults);
|
||||||
sendImmediately: true,
|
exports._keys = _keys;
|
||||||
method: '',
|
|
||||||
headers: {},
|
module.exports = exports.request;
|
||||||
useQuerystring: false,
|
module.exports._keys = _keys;
|
||||||
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);
|
|
||||||
|
|
||||||
module.exports._keys = Object.keys(_defaults).concat([
|
|
||||||
'encoding',
|
|
||||||
'stream',
|
|
||||||
'body',
|
|
||||||
'json',
|
|
||||||
'form',
|
|
||||||
'auth',
|
|
||||||
'formData',
|
|
||||||
'FormData',
|
|
||||||
'userAgent' // non-standard for request.js
|
|
||||||
]);
|
|
||||||
module.exports.debug =
|
module.exports.debug =
|
||||||
-1 !== (process.env.NODE_DEBUG || '').split(/\s+/g).indexOf('urequest');
|
-1 !== (process.env.NODE_DEBUG || '').split(/\s+/g).indexOf('urequest');
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
/**
|
||||||
|
* @typedef {import('./types.js').Response} Response
|
||||||
|
* @typedef {import('./types.js').Headers} Headers
|
||||||
|
*/
|
|
@ -7,13 +7,17 @@
|
||||||
"index.js": "browser.js"
|
"index.js": "browser.js"
|
||||||
},
|
},
|
||||||
"files": [
|
"files": [
|
||||||
"lib"
|
"browser.js",
|
||||||
|
"lib",
|
||||||
|
"local-types.js",
|
||||||
|
"types.js"
|
||||||
],
|
],
|
||||||
"directories": {
|
"directories": {
|
||||||
"example": "examples"
|
"example": "examples"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "echo \"Error: no test specified\" && exit 1"
|
"test": "echo \"Error: no test specified\" && exit 1",
|
||||||
|
"prepublish": "./bin/localize-types"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
|
|
|
@ -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…
Reference in New Issue