mirror of
				https://github.com/therootcompany/request.js.git
				synced 2024-11-16 17:28:58 +00:00 
			
		
		
		
	Compare commits
	
		
			16 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 8076c667bb | |||
| f6a6ddbdcc | |||
| 9aff0c8ff8 | |||
| c5dfb20a7d | |||
| b08ed4b162 | |||
| 968926cdc5 | |||
| 88ae1a2086 | |||
| 2ffc422406 | |||
| be8b94c187 | |||
| a98d4b7341 | |||
| 420eb4f197 | |||
| 750751966e | |||
| e397dcc9cb | |||
|  | 2e233391b9 | ||
| 961740ffa0 | |||
| 3aac42d08b | 
							
								
								
									
										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 | ||||||
							
								
								
									
										201
									
								
								browser.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										201
									
								
								browser.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,201 @@ | |||||||
|  | '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,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); | ||||||
| @ -120,6 +149,9 @@ 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())) { | ||||||
| @ -162,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); | ||||||
| 
 | 
 | ||||||
| @ -519,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) { | ||||||
| @ -650,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'); | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										76
									
								
								jsconfig.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								jsconfig.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,76 @@ | |||||||
|  | { | ||||||
|  |   "compilerOptions": { | ||||||
|  |     /* Visit https://aka.ms/tsconfig.json to read more about this file */ | ||||||
|  | 
 | ||||||
|  |     "target": "es2021" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', 'ES2021', or 'ESNEXT'. */, | ||||||
|  |     "module": "commonjs", | ||||||
|  |     // "lib": [],                                   /* Specify library files to be included in the compilation. */ | ||||||
|  |     "allowJs": true /* Allow javascript files to be compiled. */, | ||||||
|  |     "checkJs": true /* Report errors in .js files. */, | ||||||
|  |     // "jsx": "preserve",                           /* Specify JSX code generation: 'preserve', 'react-native', 'react', 'react-jsx' or 'react-jsxdev'. */ | ||||||
|  |     // "declaration": true,                         /* Generates corresponding '.d.ts' file. */ | ||||||
|  |     // "declarationMap": true,                      /* Generates a sourcemap for each corresponding '.d.ts' file. */ | ||||||
|  |     // "sourceMap": true,                           /* Generates corresponding '.map' file. */ | ||||||
|  |     // "outFile": "./",                             /* Concatenate and emit output to single file. */ | ||||||
|  |     // "outDir": "./",                              /* Redirect output structure to the directory. */ | ||||||
|  |     // "rootDir": "./",                             /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ | ||||||
|  |     // "composite": true,                           /* Enable project compilation */ | ||||||
|  |     // "tsBuildInfoFile": "./",                     /* Specify file to store incremental compilation information */ | ||||||
|  |     // "removeComments": true,                      /* Do not emit comments to output. */ | ||||||
|  |     "noEmit": true /* Do not emit outputs. */, | ||||||
|  |     // "importHelpers": true,                       /* Import emit helpers from 'tslib'. */ | ||||||
|  |     // "downlevelIteration": true,                  /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ | ||||||
|  |     // "isolatedModules": true,                     /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ | ||||||
|  | 
 | ||||||
|  |     /* Strict Type-Checking Options */ | ||||||
|  |     "strict": true /* Enable all strict type-checking options. */, | ||||||
|  |     "noImplicitAny": true /* Raise error on expressions and declarations with an implied 'any' type. */, | ||||||
|  |     // "strictNullChecks": true,                    /* Enable strict null checks. */ | ||||||
|  |     // "strictFunctionTypes": true,                 /* Enable strict checking of function types. */ | ||||||
|  |     // "strictBindCallApply": true,                 /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ | ||||||
|  |     // "strictPropertyInitialization": true,        /* Enable strict checking of property initialization in classes. */ | ||||||
|  |     // "noImplicitThis": true,                      /* Raise error on 'this' expressions with an implied 'any' type. */ | ||||||
|  |     "alwaysStrict": true /* Parse in strict mode and emit "use strict" for each source file. */, | ||||||
|  | 
 | ||||||
|  |     /* Additional Checks */ | ||||||
|  |     "noUnusedLocals": true /* Report errors on unused locals. */, | ||||||
|  |     // "noUnusedParameters": true,                  /* Report errors on unused parameters. */ | ||||||
|  |     // "noImplicitReturns": true,                   /* Report error when not all code paths in function return a value. */ | ||||||
|  |     // "noFallthroughCasesInSwitch": true,          /* Report errors for fallthrough cases in switch statement. */ | ||||||
|  |     // "noUncheckedIndexedAccess": true,            /* Include 'undefined' in index signature results */ | ||||||
|  |     // "noImplicitOverride": true,                  /* Ensure overriding members in derived classes are marked with an 'override' modifier. */ | ||||||
|  |     // "noPropertyAccessFromIndexSignature": true,  /* Require undeclared properties from index signatures to use element accesses. */ | ||||||
|  | 
 | ||||||
|  |     /* Module Resolution Options */ | ||||||
|  |     "moduleResolution": "node",                     /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ | ||||||
|  |     // "baseUrl": "./",                             /* Base directory to resolve non-absolute module names. */ | ||||||
|  |     // "paths": {},                                 /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ | ||||||
|  |     // "rootDirs": [],                              /* List of root folders whose combined content represents the structure of the project at runtime. */ | ||||||
|  |     "typeRoots": [ | ||||||
|  |       "./typings", | ||||||
|  |       "./node_modules/@types" | ||||||
|  |     ] /* List of folders to include type definitions from. */, | ||||||
|  |     // "types": [],                                 /* Type declaration files to be included in compilation. */ | ||||||
|  |     // "allowSyntheticDefaultImports": true,        /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ | ||||||
|  |     "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */, | ||||||
|  |     "preserveSymlinks": false /* Do not resolve the real path of symlinks. */, | ||||||
|  |     "maxNodeModuleJsDepth": 20, | ||||||
|  |     // "allowUmdGlobalAccess": true,                /* Allow accessing UMD globals from modules. */ | ||||||
|  | 
 | ||||||
|  |     /* Source Map Options */ | ||||||
|  |     // "sourceRoot": "",                            /* Specify the location where debugger should locate TypeScript files instead of source locations. */ | ||||||
|  |     // "mapRoot": "",                               /* Specify the location where debugger should locate map files instead of generated locations. */ | ||||||
|  |     // "inlineSourceMap": true,                     /* Emit a single file with source maps instead of having a separate file. */ | ||||||
|  |     // "inlineSources": true,                       /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ | ||||||
|  | 
 | ||||||
|  |     /* Experimental Options */ | ||||||
|  |     // "experimentalDecorators": true,              /* Enables experimental support for ES7 decorators. */ | ||||||
|  |     // "emitDecoratorMetadata": true,               /* Enables experimental support for emitting type metadata for decorators. */ | ||||||
|  | 
 | ||||||
|  |     /* Advanced Options */ | ||||||
|  |     "skipLibCheck": true /* Skip type checking of declaration files. */, | ||||||
|  |     "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ | ||||||
|  |   }, | ||||||
|  |   "include": ["index.js", "browser.js", "./types.js", "./local-types.js", "lib/**/*.js", "bin/**/*.js"], | ||||||
|  |   "exclude": ["node_modules"] | ||||||
|  | } | ||||||
							
								
								
									
										5
									
								
								local-types.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								local-types.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,5 @@ | |||||||
|  | /** | ||||||
|  |  * @typedef {import('./types.js').RequestOptions} RequestOptions | ||||||
|  |  * @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.8.2", |     "version": "1.9.0-6", | ||||||
|     "lockfileVersion": 1 |     "lockfileVersion": 1 | ||||||
| } | } | ||||||
|  | |||||||
							
								
								
									
										14
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								package.json
									
									
									
									
									
								
							| @ -1,16 +1,24 @@ | |||||||
| { | { | ||||||
|     "name": "@root/request", |     "name": "@root/request", | ||||||
|     "version": "1.8.2", |     "version": "1.9.0-6", | ||||||
|     "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": [ | ||||||
|         "lib" |         "browser.js", | ||||||
|  |         "jsconfig.json", | ||||||
|  |         "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", | ||||||
|  | |||||||
							
								
								
									
										34
									
								
								types.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								types.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,34 @@ | |||||||
|  | 'use strict'; | ||||||
|  | 
 | ||||||
|  | module.exports._typesOnly = true; | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * @callback Request | ||||||
|  |  * @param {RequestOptions} opts | ||||||
|  |  * @returns {Response} | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * @typedef {Object} RequestOptions | ||||||
|  |  * @prop {any} [opts.body] | ||||||
|  |  * @prop {Object.<String,any>} [opts.form] | ||||||
|  |  * @prop {Headers} [opts.headers] | ||||||
|  |  * @prop {String} [opts.method] | ||||||
|  |  * @prop {Boolean | any} [opts.json] | ||||||
|  |  * @prop {String} opts.url | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * @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