diff options
Diffstat (limited to 'node_modules/got')
-rw-r--r-- | node_modules/got/index.js | 364 | ||||
-rw-r--r-- | node_modules/got/license | 21 | ||||
-rw-r--r-- | node_modules/got/package.json | 110 | ||||
-rw-r--r-- | node_modules/got/readme.md | 335 |
4 files changed, 0 insertions, 830 deletions
diff --git a/node_modules/got/index.js b/node_modules/got/index.js deleted file mode 100644 index 31a64dd..0000000 --- a/node_modules/got/index.js +++ /dev/null @@ -1,364 +0,0 @@ -'use strict'; -const EventEmitter = require('events'); -const http = require('http'); -const https = require('https'); -const PassThrough = require('stream').PassThrough; -const urlLib = require('url'); -const querystring = require('querystring'); -const duplexer3 = require('duplexer3'); -const isStream = require('is-stream'); -const getStream = require('get-stream'); -const timedOut = require('timed-out'); -const urlParseLax = require('url-parse-lax'); -const lowercaseKeys = require('lowercase-keys'); -const isRedirect = require('is-redirect'); -const unzipResponse = require('unzip-response'); -const createErrorClass = require('create-error-class'); -const isRetryAllowed = require('is-retry-allowed'); -const Buffer = require('safe-buffer').Buffer; -const pkg = require('./package'); - -function requestAsEventEmitter(opts) { - opts = opts || {}; - - const ee = new EventEmitter(); - const requestUrl = opts.href || urlLib.resolve(urlLib.format(opts), opts.path); - let redirectCount = 0; - let retryCount = 0; - let redirectUrl; - - const get = opts => { - const fn = opts.protocol === 'https:' ? https : http; - - const req = fn.request(opts, res => { - const statusCode = res.statusCode; - - if (isRedirect(statusCode) && opts.followRedirect && 'location' in res.headers && (opts.method === 'GET' || opts.method === 'HEAD')) { - res.resume(); - - if (++redirectCount > 10) { - ee.emit('error', new got.MaxRedirectsError(statusCode, opts), null, res); - return; - } - - const bufferString = Buffer.from(res.headers.location, 'binary').toString(); - - redirectUrl = urlLib.resolve(urlLib.format(opts), bufferString); - const redirectOpts = Object.assign({}, opts, urlLib.parse(redirectUrl)); - - ee.emit('redirect', res, redirectOpts); - - get(redirectOpts); - - return; - } - - setImmediate(() => { - const response = typeof unzipResponse === 'function' && req.method !== 'HEAD' ? unzipResponse(res) : res; - response.url = redirectUrl || requestUrl; - response.requestUrl = requestUrl; - - ee.emit('response', response); - }); - }); - - req.once('error', err => { - const backoff = opts.retries(++retryCount, err); - - if (backoff) { - setTimeout(get, backoff, opts); - return; - } - - ee.emit('error', new got.RequestError(err, opts)); - }); - - if (opts.gotTimeout) { - timedOut(req, opts.gotTimeout); - } - - setImmediate(() => { - ee.emit('request', req); - }); - }; - - get(opts); - return ee; -} - -function asPromise(opts) { - return new Promise((resolve, reject) => { - const ee = requestAsEventEmitter(opts); - - ee.on('request', req => { - if (isStream(opts.body)) { - opts.body.pipe(req); - opts.body = undefined; - return; - } - - req.end(opts.body); - }); - - ee.on('response', res => { - const stream = opts.encoding === null ? getStream.buffer(res) : getStream(res, opts); - - stream - .catch(err => reject(new got.ReadError(err, opts))) - .then(data => { - const statusCode = res.statusCode; - const limitStatusCode = opts.followRedirect ? 299 : 399; - - res.body = data; - - if (opts.json && res.body) { - try { - res.body = JSON.parse(res.body); - } catch (e) { - throw new got.ParseError(e, statusCode, opts, data); - } - } - - if (statusCode < 200 || statusCode > limitStatusCode) { - throw new got.HTTPError(statusCode, opts); - } - - resolve(res); - }) - .catch(err => { - Object.defineProperty(err, 'response', {value: res}); - reject(err); - }); - }); - - ee.on('error', reject); - }); -} - -function asStream(opts) { - const input = new PassThrough(); - const output = new PassThrough(); - const proxy = duplexer3(input, output); - - if (opts.json) { - throw new Error('got can not be used as stream when options.json is used'); - } - - if (opts.body) { - proxy.write = () => { - throw new Error('got\'s stream is not writable when options.body is used'); - }; - } - - const ee = requestAsEventEmitter(opts); - - ee.on('request', req => { - proxy.emit('request', req); - - if (isStream(opts.body)) { - opts.body.pipe(req); - return; - } - - if (opts.body) { - req.end(opts.body); - return; - } - - if (opts.method === 'POST' || opts.method === 'PUT' || opts.method === 'PATCH') { - input.pipe(req); - return; - } - - req.end(); - }); - - ee.on('response', res => { - const statusCode = res.statusCode; - - res.pipe(output); - - if (statusCode < 200 || statusCode > 299) { - proxy.emit('error', new got.HTTPError(statusCode, opts), null, res); - return; - } - - proxy.emit('response', res); - }); - - ee.on('redirect', proxy.emit.bind(proxy, 'redirect')); - ee.on('error', proxy.emit.bind(proxy, 'error')); - - return proxy; -} - -function normalizeArguments(url, opts) { - if (typeof url !== 'string' && typeof url !== 'object') { - throw new Error(`Parameter \`url\` must be a string or object, not ${typeof url}`); - } - - if (typeof url === 'string') { - url = url.replace(/^unix:/, 'http://$&'); - url = urlParseLax(url); - - if (url.auth) { - throw new Error('Basic authentication must be done with auth option'); - } - } - - opts = Object.assign( - { - protocol: 'http:', - path: '', - retries: 5 - }, - url, - opts - ); - - opts.headers = Object.assign({ - 'user-agent': `${pkg.name}/${pkg.version} (https://github.com/sindresorhus/got)`, - 'accept-encoding': 'gzip,deflate' - }, lowercaseKeys(opts.headers)); - - const query = opts.query; - - if (query) { - if (typeof query !== 'string') { - opts.query = querystring.stringify(query); - } - - opts.path = `${opts.path.split('?')[0]}?${opts.query}`; - delete opts.query; - } - - if (opts.json && opts.headers.accept === undefined) { - opts.headers.accept = 'application/json'; - } - - let body = opts.body; - - if (body) { - if (typeof body !== 'string' && !(body !== null && typeof body === 'object')) { - throw new Error('options.body must be a ReadableStream, string, Buffer or plain Object'); - } - - opts.method = opts.method || 'POST'; - - if (isStream(body) && typeof body.getBoundary === 'function') { - // Special case for https://github.com/form-data/form-data - opts.headers['content-type'] = opts.headers['content-type'] || `multipart/form-data; boundary=${body.getBoundary()}`; - } else if (body !== null && typeof body === 'object' && !Buffer.isBuffer(body) && !isStream(body)) { - opts.headers['content-type'] = opts.headers['content-type'] || 'application/x-www-form-urlencoded'; - body = opts.body = querystring.stringify(body); - } - - if (opts.headers['content-length'] === undefined && opts.headers['transfer-encoding'] === undefined && !isStream(body)) { - const length = typeof body === 'string' ? Buffer.byteLength(body) : body.length; - opts.headers['content-length'] = length; - } - } - - opts.method = (opts.method || 'GET').toUpperCase(); - - if (opts.hostname === 'unix') { - const matches = /(.+):(.+)/.exec(opts.path); - - if (matches) { - opts.socketPath = matches[1]; - opts.path = matches[2]; - opts.host = null; - } - } - - if (typeof opts.retries !== 'function') { - const retries = opts.retries; - - opts.retries = (iter, err) => { - if (iter > retries || !isRetryAllowed(err)) { - return 0; - } - - const noise = Math.random() * 100; - - return ((1 << iter) * 1000) + noise; - }; - } - - if (opts.followRedirect === undefined) { - opts.followRedirect = true; - } - - if (opts.timeout) { - opts.gotTimeout = opts.timeout; - delete opts.timeout; - } - - return opts; -} - -function got(url, opts) { - try { - return asPromise(normalizeArguments(url, opts)); - } catch (err) { - return Promise.reject(err); - } -} - -const helpers = [ - 'get', - 'post', - 'put', - 'patch', - 'head', - 'delete' -]; - -helpers.forEach(el => { - got[el] = (url, opts) => got(url, Object.assign({}, opts, {method: el})); -}); - -got.stream = (url, opts) => asStream(normalizeArguments(url, opts)); - -for (const el of helpers) { - got.stream[el] = (url, opts) => got.stream(url, Object.assign({}, opts, {method: el})); -} - -function stdError(error, opts) { - if (error.code !== undefined) { - this.code = error.code; - } - - Object.assign(this, { - message: error.message, - host: opts.host, - hostname: opts.hostname, - method: opts.method, - path: opts.path - }); -} - -got.RequestError = createErrorClass('RequestError', stdError); -got.ReadError = createErrorClass('ReadError', stdError); -got.ParseError = createErrorClass('ParseError', function (e, statusCode, opts, data) { - stdError.call(this, e, opts); - this.statusCode = statusCode; - this.statusMessage = http.STATUS_CODES[this.statusCode]; - this.message = `${e.message} in "${urlLib.format(opts)}": \n${data.slice(0, 77)}...`; -}); - -got.HTTPError = createErrorClass('HTTPError', function (statusCode, opts) { - stdError.call(this, {}, opts); - this.statusCode = statusCode; - this.statusMessage = http.STATUS_CODES[this.statusCode]; - this.message = `Response code ${this.statusCode} (${this.statusMessage})`; -}); - -got.MaxRedirectsError = createErrorClass('MaxRedirectsError', function (statusCode, opts) { - stdError.call(this, {}, opts); - this.statusCode = statusCode; - this.statusMessage = http.STATUS_CODES[this.statusCode]; - this.message = 'Redirected 10 times. Aborting.'; -}); - -module.exports = got; diff --git a/node_modules/got/license b/node_modules/got/license deleted file mode 100644 index 654d0bf..0000000 --- a/node_modules/got/license +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/got/package.json b/node_modules/got/package.json deleted file mode 100644 index 769c23a..0000000 --- a/node_modules/got/package.json +++ /dev/null @@ -1,110 +0,0 @@ -{ - "_from": "got@^6.7.1", - "_id": "got@6.7.1", - "_inBundle": false, - "_integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", - "_location": "/got", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "got@^6.7.1", - "name": "got", - "escapedName": "got", - "rawSpec": "^6.7.1", - "saveSpec": null, - "fetchSpec": "^6.7.1" - }, - "_requiredBy": [ - "/package-json" - ], - "_resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", - "_shasum": "240cd05785a9a18e561dc1b44b41c763ef1e8db0", - "_spec": "got@^6.7.1", - "_where": "/home/pruss/Dev/3-minute-website/node_modules/package-json", - "ava": { - "concurrency": 4 - }, - "browser": { - "unzip-response": false - }, - "bugs": { - "url": "https://github.com/sindresorhus/got/issues" - }, - "bundleDependencies": false, - "dependencies": { - "create-error-class": "^3.0.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-redirect": "^1.0.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "lowercase-keys": "^1.0.0", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "unzip-response": "^2.0.1", - "url-parse-lax": "^1.0.0" - }, - "deprecated": false, - "description": "Simplified HTTP requests", - "devDependencies": { - "ava": "^0.17.0", - "coveralls": "^2.11.4", - "form-data": "^2.1.1", - "get-port": "^2.0.0", - "into-stream": "^3.0.0", - "nyc": "^10.0.0", - "pem": "^1.4.4", - "pify": "^2.3.0", - "tempfile": "^1.1.1", - "xo": "*" - }, - "engines": { - "node": ">=4" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/sindresorhus/got#readme", - "keywords": [ - "http", - "https", - "get", - "got", - "url", - "uri", - "request", - "util", - "utility", - "simple", - "curl", - "wget", - "fetch" - ], - "license": "MIT", - "maintainers": [ - { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "sindresorhus.com" - }, - { - "name": "Vsevolod Strukchinsky", - "email": "floatdrop@gmail.com", - "url": "github.com/floatdrop" - } - ], - "name": "got", - "repository": { - "type": "git", - "url": "git+https://github.com/sindresorhus/got.git" - }, - "scripts": { - "coveralls": "nyc report --reporter=text-lcov | coveralls", - "test": "xo && nyc ava" - }, - "version": "6.7.1", - "xo": { - "esnext": true - } -} diff --git a/node_modules/got/readme.md b/node_modules/got/readme.md deleted file mode 100644 index bfab067..0000000 --- a/node_modules/got/readme.md +++ /dev/null @@ -1,335 +0,0 @@ -<h1 align="center"> - <br> - <img width="360" src="https://rawgit.com/sindresorhus/got/master/media/logo.svg" alt="got"> - <br> - <br> - <br> -</h1> - -> Simplified HTTP requests - -[](https://travis-ci.org/sindresorhus/got) [](https://coveralls.io/github/sindresorhus/got?branch=master) [](https://npmjs.com/got) - -A nicer interface to the built-in [`http`](http://nodejs.org/api/http.html) module. - -It supports following redirects, promises, streams, retries, automagically handling gzip/deflate and some convenience options. - -Created because [`request`](https://github.com/request/request) is bloated *(several megabytes!)*. - - -## Install - -**WARNING: Node.js 4 or higher is required for got@6 and above.** For older Node.js versions use [got@5](https://github.com/sindresorhus/got/tree/v5.x). - -``` -$ npm install --save got -``` - - -## Usage - -```js -const fs = require('fs'); -const got = require('got'); - -got('todomvc.com') - .then(response => { - console.log(response.body); - //=> '<!doctype html> ...' - }) - .catch(error => { - console.log(error.response.body); - //=> 'Internal server error ...' - }); - -// Streams -got.stream('todomvc.com').pipe(fs.createWriteStream('index.html')); - -// For POST, PUT and PATCH methods got.stream returns a WritableStream -fs.createReadStream('index.html').pipe(got.stream.post('todomvc.com')); -``` - - -### API - -It's a `GET` request by default, but can be changed in `options`. - -#### got(url, [options]) - -Returns a Promise for a `response` object with a `body` property, a `url` property with the request URL or the final URL after redirects, and a `requestUrl` property with the original request URL. - -##### url - -Type: `string`, `object` - -The URL to request or a [`http.request` options](https://nodejs.org/api/http.html#http_http_request_options_callback) object. - -Properties from `options` will override properties in the parsed `url`. - -##### options - -Type: `object` - -Any of the [`http.request`](http://nodejs.org/api/http.html#http_http_request_options_callback) options. - -###### body - -Type: `string`, `buffer`, `readableStream`, `object` - -*This is mutually exclusive with stream mode.* - -Body that will be sent with a `POST` request. - -If present in `options` and `options.method` is not set, `options.method` will be set to `POST`. - -If `content-length` or `transfer-encoding` is not set in `options.headers` and `body` is a string or buffer, `content-length` will be set to the body length. - -If `body` is a plain object, it will be stringified with [`querystring.stringify`](https://nodejs.org/api/querystring.html#querystring_querystring_stringify_obj_sep_eq_options) and sent as `application/x-www-form-urlencoded`. - -###### encoding - -Type: `string`, `null`<br> -Default: `'utf8'` - -Encoding to be used on `setEncoding` of the response data. If `null`, the body is returned as a Buffer. - -###### json - -Type: `boolean`<br> -Default: `false` - -*This is mutually exclusive with stream mode.* - -Parse response body with `JSON.parse` and set `accept` header to `application/json`. - -###### query - -Type: `string`, `object`<br> - -Query string object that will be added to the request URL. This will override the query string in `url`. - -###### timeout - -Type: `number`, `object` - -Milliseconds to wait for a server to send response headers before aborting request with `ETIMEDOUT` error. - -Option accepts `object` with separate `connect` and `socket` fields for connection and socket inactivity timeouts. - -###### retries - -Type: `number`, `function`<br> -Default: `5` - -Number of request retries when network errors happens. Delays between retries counts with function `1000 * Math.pow(2, retry) + Math.random() * 100`, where `retry` is attempt number (starts from 0). - -Option accepts `function` with `retry` and `error` arguments. Function must return delay in milliseconds (`0` return value cancels retry). - -**Note:** if `retries` is `number`, `ENOTFOUND` and `ENETUNREACH` error will not be retried (see full list in [`is-retry-allowed`](https://github.com/floatdrop/is-retry-allowed/blob/master/index.js#L12) module). - -###### followRedirect - -Type: `boolean`<br> -Default: `true` - -Defines if redirect responses should be followed automatically. - - -#### Streams - -#### got.stream(url, [options]) - -`stream` method will return Duplex stream with additional events: - -##### .on('request', request) - -`request` event to get the request object of the request. - -**Tip**: You can use `request` event to abort request: - -```js -got.stream('github.com') - .on('request', req => setTimeout(() => req.abort(), 50)); -``` - -##### .on('response', response) - -`response` event to get the response object of the final request. - -##### .on('redirect', response, nextOptions) - -`redirect` event to get the response object of a redirect. The second argument is options for the next request to the redirect location. - -##### .on('error', error, body, response) - -`error` event emitted in case of protocol error (like `ENOTFOUND` etc.) or status error (4xx or 5xx). The second argument is the body of the server response in case of status error. The third argument is response object. - -#### got.get(url, [options]) -#### got.post(url, [options]) -#### got.put(url, [options]) -#### got.patch(url, [options]) -#### got.head(url, [options]) -#### got.delete(url, [options]) - -Sets `options.method` to the method name and makes a request. - - -## Errors - -Each error contains (if available) `statusCode`, `statusMessage`, `host`, `hostname`, `method` and `path` properties to make debugging easier. - -In Promise mode, the `response` is attached to the error. - -#### got.RequestError - -When a request fails. Contains a `code` property with error class code, like `ECONNREFUSED`. - -#### got.ReadError - -When reading from response stream fails. - -#### got.ParseError - -When `json` option is enabled and `JSON.parse` fails. - -#### got.HTTPError - -When server response code is not 2xx. Contains `statusCode` and `statusMessage`. - -#### got.MaxRedirectsError - -When server redirects you more than 10 times. - - -## Proxies - -You can use the [`tunnel`](https://github.com/koichik/node-tunnel) module with the `agent` option to work with proxies: - -```js -const got = require('got'); -const tunnel = require('tunnel'); - -got('todomvc.com', { - agent: tunnel.httpOverHttp({ - proxy: { - host: 'localhost' - } - }) -}); -``` - - -## Cookies - -You can use the [`cookie`](https://github.com/jshttp/cookie) module to include cookies in a request: - -```js -const got = require('got'); -const cookie = require('cookie'); - -got('google.com', { - headers: { - cookie: cookie.serialize('foo', 'bar') - } -}); -``` - - -## Form data - -You can use the [`form-data`](https://github.com/form-data/form-data) module to create POST request with form data: - -```js -const fs = require('fs'); -const got = require('got'); -const FormData = require('form-data'); -const form = new FormData(); - -form.append('my_file', fs.createReadStream('/foo/bar.jpg')); - -got.post('google.com', { - body: form -}); -``` - - -## OAuth - -You can use the [`oauth-1.0a`](https://github.com/ddo/oauth-1.0a) module to create a signed OAuth request: - -```js -const got = require('got'); -const crypto = require('crypto'); -const OAuth = require('oauth-1.0a'); - -const oauth = OAuth({ - consumer: { - key: process.env.CONSUMER_KEY, - secret: process.env.CONSUMER_SECRET - }, - signature_method: 'HMAC-SHA1', - hash_function: (baseString, key) => crypto.createHmac('sha1', key).update(baseString).digest('base64') -}); - -const token = { - key: process.env.ACCESS_TOKEN, - secret: process.env.ACCESS_TOKEN_SECRET -}; - -const url = 'https://api.twitter.com/1.1/statuses/home_timeline.json'; - -got(url, { - headers: oauth.toHeader(oauth.authorize({url, method: 'GET'}, token)), - json: true -}); -``` - - -## Unix Domain Sockets - -Requests can also be sent via [unix domain sockets](http://serverfault.com/questions/124517/whats-the-difference-between-unix-socket-and-tcp-ip-socket). Use the following URL scheme: `PROTOCOL://unix:SOCKET:PATH`. - -- `PROTOCOL` - `http` or `https` *(optional)* -- `SOCKET` - absolute path to a unix domain socket, e.g. `/var/run/docker.sock` -- `PATH` - request path, e.g. `/v2/keys` - -```js -got('http://unix:/var/run/docker.sock:/containers/json'); - -// or without protocol (http by default) -got('unix:/var/run/docker.sock:/containers/json'); -``` - - -## Tip - -It's a good idea to set the `'user-agent'` header so the provider can more easily see how their resource is used. By default, it's the URL to this repo. - -```js -const got = require('got'); -const pkg = require('./package.json'); - -got('todomvc.com', { - headers: { - 'user-agent': `my-module/${pkg.version} (https://github.com/username/my-module)` - } -}); -``` - - -## Related - -- [gh-got](https://github.com/sindresorhus/gh-got) - Convenience wrapper for interacting with the GitHub API -- [travis-got](https://github.com/samverschueren/travis-got) - Convenience wrapper for interacting with the Travis API - - -## Created by - -[](https://sindresorhus.com) | [](https://github.com/floatdrop) ----|--- -[Sindre Sorhus](https://sindresorhus.com) | [Vsevolod Strukchinsky](https://github.com/floatdrop) - - -## License - -MIT © [Sindre Sorhus](https://sindresorhus.com) |