mirror of
				https://github.com/therootcompany/request.js
				synced 2025-11-03 21:52:46 +00:00 
			
		
		
		
	Compare commits
	
		
			No commits in common. "v1.9.0-3" and "master" have entirely different histories.
		
	
	
		
	
		
@ -1,14 +0,0 @@
 | 
				
			|||||||
#!/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
 | 
					 | 
				
			||||||
							
								
								
									
										201
									
								
								browser.js
									
									
									
									
									
								
							
							
						
						
									
										201
									
								
								browser.js
									
									
									
									
									
								
							@ -1,201 +0,0 @@
 | 
				
			|||||||
'use strict';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// `fetch` will be available for node and browsers as a global
 | 
					 | 
				
			||||||
//var fetch = window.fetch;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// https://developer.mozilla.org/en-US/docs/Web/API/fetch
 | 
					 | 
				
			||||||
// https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch
 | 
					 | 
				
			||||||
let _fetchDefaults = {
 | 
					 | 
				
			||||||
    method: 'GET', // *GET, POST, PATCH, PUT, DELETE, etc
 | 
					 | 
				
			||||||
    headers: {},
 | 
					 | 
				
			||||||
    body: undefined, // String, ArrayBuffer, FormData, etc
 | 
					 | 
				
			||||||
    mode: 'cors', // no-cors, *cors, same-origin
 | 
					 | 
				
			||||||
    credentials: 'same-origin', // omit, *same-origin, include
 | 
					 | 
				
			||||||
    cache: 'default', // *default, no-store, reload, no-cache, force-cache, only-if-cached
 | 
					 | 
				
			||||||
    redirect: 'follow', // *follow, error, manual,
 | 
					 | 
				
			||||||
    referrer: undefined,
 | 
					 | 
				
			||||||
    referrerPolicy: 'no-referrer-when-downgrade', // no-referrer, *no-referrer-when-downgrade, same-origin, origin, strict-origin, origin-when-cross-origin, strict-origin-when-cross-origin, unsafe-url
 | 
					 | 
				
			||||||
    integrity: '',
 | 
					 | 
				
			||||||
    keepalive: false,
 | 
					 | 
				
			||||||
    signal: null //
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
let _optionKeys = Object.keys(_fetchDefaults).concat([
 | 
					 | 
				
			||||||
    //'encoding', // N/A
 | 
					 | 
				
			||||||
    //'stream', // TODO via getReader
 | 
					 | 
				
			||||||
    //'json' // handled manually
 | 
					 | 
				
			||||||
    //'form', // TODO
 | 
					 | 
				
			||||||
    //'auth' // handled manually
 | 
					 | 
				
			||||||
    //'formData', // TODO
 | 
					 | 
				
			||||||
    //'FormData', // TODO
 | 
					 | 
				
			||||||
    //'userAgent' // not allowed, non-standard for request.js
 | 
					 | 
				
			||||||
]);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function setDefaults(_defs) {
 | 
					 | 
				
			||||||
    return async function request(opts) {
 | 
					 | 
				
			||||||
        if ('string' === typeof opts) {
 | 
					 | 
				
			||||||
            opts = { url: opts };
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        let reqOpts = { headers: {} };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (
 | 
					 | 
				
			||||||
            opts.body ||
 | 
					 | 
				
			||||||
            (opts.json && true !== opts.json) ||
 | 
					 | 
				
			||||||
            opts.form ||
 | 
					 | 
				
			||||||
            opts.formData
 | 
					 | 
				
			||||||
        ) {
 | 
					 | 
				
			||||||
            // TODO this is probably a deviation from request's API
 | 
					 | 
				
			||||||
            // need to check and probably eliminate it
 | 
					 | 
				
			||||||
            reqOpts.method = (reqOpts.method || 'POST').toUpperCase();
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
            reqOpts.method = (reqOpts.method || 'GET').toUpperCase();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        _optionKeys.forEach(function (key) {
 | 
					 | 
				
			||||||
            if (key in opts) {
 | 
					 | 
				
			||||||
                if ('undefined' !== typeof opts[key]) {
 | 
					 | 
				
			||||||
                    reqOpts[key] = opts[key];
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            } else if (key in _defs) {
 | 
					 | 
				
			||||||
                reqOpts[key] = _defs[key];
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (opts.auth) {
 | 
					 | 
				
			||||||
            // if opts.uri specifies auth it will be parsed by url.parse and passed directly to the http module
 | 
					 | 
				
			||||||
            if ('string' !== typeof opts.auth) {
 | 
					 | 
				
			||||||
                let u = opts.auth.user || opts.auth.username || '';
 | 
					 | 
				
			||||||
                let p = opts.auth.pass || opts.auth.password || '';
 | 
					 | 
				
			||||||
                reqOpts.headers.Authorization = encodeBasicAuth(`${u}:${p}`);
 | 
					 | 
				
			||||||
            } else if ('string' === typeof opts.auth) {
 | 
					 | 
				
			||||||
                reqOpts.headers.Authorization = encodeBasicAuth(`${opts.auth}`);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            // [request-compat]
 | 
					 | 
				
			||||||
            if (opts.auth.bearer) {
 | 
					 | 
				
			||||||
                // having a shortcut for base64 encoding makes sense,
 | 
					 | 
				
			||||||
                // but this? Eh, whatevs...
 | 
					 | 
				
			||||||
                reqOpts.header.Authorization = `Bearer ${opts.auth.bearer}`;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        let body;
 | 
					 | 
				
			||||||
        if (opts.json && true !== opts.json) {
 | 
					 | 
				
			||||||
            if (!opts.headers['content-type']) {
 | 
					 | 
				
			||||||
                opts.headers['content-type'] = 'application/json';
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            body = JSON.stringify(opts.json);
 | 
					 | 
				
			||||||
            if (!opts.method) {
 | 
					 | 
				
			||||||
                opts.method = 'POST';
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // The node version will send HTTP Auth by default, but not Cookies.
 | 
					 | 
				
			||||||
        // We don't have an equivalent option for `fetch`. Furthermore,
 | 
					 | 
				
			||||||
        // `fetch` caches HTTP Auth Basic across browser refreshes,
 | 
					 | 
				
			||||||
        // which is not analogous to the node behavior.
 | 
					 | 
				
			||||||
        //
 | 
					 | 
				
			||||||
        // "In the face of ambiguity, refuse the temptation to guess"
 | 
					 | 
				
			||||||
        //
 | 
					 | 
				
			||||||
        //if (!('credentials' in opts)) {
 | 
					 | 
				
			||||||
        //    opts.credentials = 'include';
 | 
					 | 
				
			||||||
        //}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (!('mode' in opts)) {
 | 
					 | 
				
			||||||
            reqOpts.mode = 'cors';
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        if (!('body' in opts)) {
 | 
					 | 
				
			||||||
            if (body) {
 | 
					 | 
				
			||||||
                reqOpts.body = body;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        let resp = await fetch(opts.url, reqOpts);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        let result = {
 | 
					 | 
				
			||||||
            ok: resp.ok,
 | 
					 | 
				
			||||||
            headers: headersToObj(resp.headers),
 | 
					 | 
				
			||||||
            body: undefined,
 | 
					 | 
				
			||||||
            // swapped to match request.js
 | 
					 | 
				
			||||||
            statusCode: resp.status,
 | 
					 | 
				
			||||||
            status: resp.statusText,
 | 
					 | 
				
			||||||
            request: reqOpts,
 | 
					 | 
				
			||||||
            response: resp
 | 
					 | 
				
			||||||
        };
 | 
					 | 
				
			||||||
        result.toJSON = function () {
 | 
					 | 
				
			||||||
            return {
 | 
					 | 
				
			||||||
                ok: result.ok,
 | 
					 | 
				
			||||||
                headers: result.headers,
 | 
					 | 
				
			||||||
                body: result.body,
 | 
					 | 
				
			||||||
                statusCode: result.statusCode,
 | 
					 | 
				
			||||||
                status: result.status
 | 
					 | 
				
			||||||
            };
 | 
					 | 
				
			||||||
        };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // return early if there's no body
 | 
					 | 
				
			||||||
        if (!result.headers['content-type']) {
 | 
					 | 
				
			||||||
            return result;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // TODO blob, formData ?
 | 
					 | 
				
			||||||
        if (null === opts.encoding) {
 | 
					 | 
				
			||||||
            return await resp.arrayBuffer();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (!opts.json) {
 | 
					 | 
				
			||||||
            result.body = await resp.text();
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
            result.body = await resp.json().catch(async function () {
 | 
					 | 
				
			||||||
                return await resp.text();
 | 
					 | 
				
			||||||
            });
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        return result;
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * @param {Iterable.<*>} rheaders
 | 
					 | 
				
			||||||
 * @returns {Object.<String, String>}
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
function headersToObj(rheaders) {
 | 
					 | 
				
			||||||
    /*
 | 
					 | 
				
			||||||
    Array.from(resp.headers.entries()).forEach(function (h) {
 | 
					 | 
				
			||||||
        headers[h[0]] = h[1];
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
    */
 | 
					 | 
				
			||||||
    let headerNames = Array.from(rheaders.keys());
 | 
					 | 
				
			||||||
    let resHeaders = {};
 | 
					 | 
				
			||||||
    headerNames.forEach(function (k) {
 | 
					 | 
				
			||||||
        resHeaders[k] = rheaders.get(k);
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
    return resHeaders;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * @param {String} utf8
 | 
					 | 
				
			||||||
 * @returns {String}
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
function encodeBasicAuth(utf8) {
 | 
					 | 
				
			||||||
    let b64 = unicodeToBase64(utf8);
 | 
					 | 
				
			||||||
    return `Basic ${b64}`;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * @param {String} utf8
 | 
					 | 
				
			||||||
 * @returns {String}
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
function unicodeToBase64(utf8) {
 | 
					 | 
				
			||||||
    let str = '';
 | 
					 | 
				
			||||||
    let uint8 = new TextEncoder().encode(utf8);
 | 
					 | 
				
			||||||
    uint8.forEach(function (b) {
 | 
					 | 
				
			||||||
        str += String.fromCharCode(b);
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
    let b64 = btoa(str);
 | 
					 | 
				
			||||||
    return b64;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
let defaultRequest = setDefaults({ mode: 'cors' });
 | 
					 | 
				
			||||||
exports.request = defaultRequest;
 | 
					 | 
				
			||||||
exports.defaults = setDefaults;
 | 
					 | 
				
			||||||
module.exports = defaultRequest;
 | 
					 | 
				
			||||||
module.exports.defaults = setDefaults;
 | 
					 | 
				
			||||||
							
								
								
									
										73
									
								
								index.js
									
									
									
									
									
								
							
							
						
						
									
										73
									
								
								index.js
									
									
									
									
									
								
							@ -7,35 +7,6 @@ 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);
 | 
				
			||||||
@ -149,9 +120,6 @@ function handleResponse(resp, opts, cb) {
 | 
				
			|||||||
        resp.body = '';
 | 
					        resp.body = '';
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    resp._bodyLength = 0;
 | 
					    resp._bodyLength = 0;
 | 
				
			||||||
    resp.once('error', function (err) {
 | 
					 | 
				
			||||||
        cb(err, resp, resp.body);
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
    resp.on('readable', function () {
 | 
					    resp.on('readable', function () {
 | 
				
			||||||
        var chunk;
 | 
					        var chunk;
 | 
				
			||||||
        while ((chunk = resp.read())) {
 | 
					        while ((chunk = resp.read())) {
 | 
				
			||||||
@ -194,16 +162,10 @@ 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);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -557,7 +519,7 @@ function setDefaults(defs) {
 | 
				
			|||||||
            opts = { url: opts };
 | 
					            opts = { url: opts };
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        _keys.forEach(function (key) {
 | 
					        module.exports._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) {
 | 
				
			||||||
@ -688,12 +650,35 @@ function getUserAgent(additional) {
 | 
				
			|||||||
    return ua;
 | 
					    return ua;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
exports.request = setDefaults(_defaults);
 | 
					var _defaults = {
 | 
				
			||||||
exports._keys = _keys;
 | 
					    sendImmediately: true,
 | 
				
			||||||
 | 
					    method: '',
 | 
				
			||||||
module.exports = exports.request;
 | 
					    headers: {},
 | 
				
			||||||
module.exports._keys = _keys;
 | 
					    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);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +0,0 @@
 | 
				
			|||||||
/**
 | 
					 | 
				
			||||||
 * @typedef {import('./types.js').Response} Response
 | 
					 | 
				
			||||||
 * @typedef {import('./types.js').Headers} Headers
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
							
								
								
									
										2
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@ -1,5 +1,5 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    "name": "@root/request",
 | 
					    "name": "@root/request",
 | 
				
			||||||
    "version": "1.9.0-3",
 | 
					    "version": "1.8.2",
 | 
				
			||||||
    "lockfileVersion": 1
 | 
					    "lockfileVersion": 1
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										13
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								package.json
									
									
									
									
									
								
							@ -1,23 +1,16 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    "name": "@root/request",
 | 
					    "name": "@root/request",
 | 
				
			||||||
    "version": "1.9.0-3",
 | 
					    "version": "1.8.2",
 | 
				
			||||||
    "description": "A lightweight, zero-dependency drop-in replacement for request",
 | 
					    "description": "A lightweight, zero-dependency drop-in replacement for request",
 | 
				
			||||||
    "main": "index.js",
 | 
					    "main": "index.js",
 | 
				
			||||||
    "browser": {
 | 
					 | 
				
			||||||
        "index.js": "browser.js"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "files": [
 | 
					    "files": [
 | 
				
			||||||
        "browser.js",
 | 
					        "lib"
 | 
				
			||||||
        "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",
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										30
									
								
								types.js
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								types.js
									
									
									
									
									
								
							@ -1,30 +0,0 @@
 | 
				
			|||||||
'use strict';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
module.exports._typesOnly = true;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * @callback Request
 | 
					 | 
				
			||||||
 * @param {Object} opts
 | 
					 | 
				
			||||||
 * @param {any} [opts.body]
 | 
					 | 
				
			||||||
 * @param {Object.<String,any>} [opts.form]
 | 
					 | 
				
			||||||
 * @param {Headers} [opts.headers]
 | 
					 | 
				
			||||||
 * @param {String} [opts.method]
 | 
					 | 
				
			||||||
 * @param {Boolean | any} [opts.json]
 | 
					 | 
				
			||||||
 * @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