diff options
| author | Florian Dold <florian.dold@gmail.com> | 2018-09-20 02:56:13 +0200 | 
|---|---|---|
| committer | Florian Dold <florian.dold@gmail.com> | 2018-09-20 02:56:13 +0200 | 
| commit | bbff7403fbf46f9ad92240ac213df8d30ef31b64 (patch) | |
| tree | c58400ec5124da1c7d56b01aea83309f80a56c3b /node_modules/whatwg-fetch | |
| parent | 003fb34971cf63466184351b4db5f7c67df4f444 (diff) | |
update packages
Diffstat (limited to 'node_modules/whatwg-fetch')
| -rw-r--r-- | node_modules/whatwg-fetch/LICENSE | 20 | ||||
| -rw-r--r-- | node_modules/whatwg-fetch/README.md | 282 | ||||
| -rw-r--r-- | node_modules/whatwg-fetch/fetch.js | 461 | ||||
| -rw-r--r-- | node_modules/whatwg-fetch/package.json | 23 | 
4 files changed, 0 insertions, 786 deletions
diff --git a/node_modules/whatwg-fetch/LICENSE b/node_modules/whatwg-fetch/LICENSE deleted file mode 100644 index 0e319d55d..000000000 --- a/node_modules/whatwg-fetch/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2014-2016 GitHub, Inc. - -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/whatwg-fetch/README.md b/node_modules/whatwg-fetch/README.md deleted file mode 100644 index 328cb490e..000000000 --- a/node_modules/whatwg-fetch/README.md +++ /dev/null @@ -1,282 +0,0 @@ -# window.fetch polyfill - -The `fetch()` function is a Promise-based mechanism for programmatically making -web requests in the browser. This project is a polyfill that implements a subset -of the standard [Fetch specification][], enough to make `fetch` a viable -replacement for most uses of XMLHttpRequest in traditional web applications. - -This project adheres to the [Open Code of Conduct][]. By participating, you are -expected to uphold this code. - -## Table of Contents - -* [Read this first](#read-this-first) -* [Installation](#installation) -* [Usage](#usage) -  * [HTML](#html) -  * [JSON](#json) -  * [Response metadata](#response-metadata) -  * [Post form](#post-form) -  * [Post JSON](#post-json) -  * [File upload](#file-upload) -  * [Caveats](#caveats) -    * [Handling HTTP error statuses](#handling-http-error-statuses) -    * [Sending cookies](#sending-cookies) -    * [Receiving cookies](#receiving-cookies) -    * [Obtaining the Response URL](#obtaining-the-response-url) -* [Browser Support](#browser-support) - -## Read this first - -* If you believe you found a bug with how `fetch` behaves in Chrome or Firefox, -  please **avoid opening an issue in this repository**. This project is a -  _polyfill_, and since Chrome and Firefox both implement the `window.fetch` -  function natively, no code from this project actually takes any effect in -  these browsers. See [Browser support](#browser-support) for detailed -  information. - -* If you have trouble **making a request to another domain** (a different -  subdomain or port number also constitutes as another domain), please -  familiarize yourself with all the intricacies and limitations of [CORS][] -  requests. Because CORS requires participation of the server by implementing -  specific HTTP response headers, it is often nontrivial to set up or debug. -  CORS is exclusively handled by the browser's internal mechanisms which this -  polyfill cannot influence. - -* If you have trouble **maintaining the user's session** or [CSRF][] protection -  through `fetch` requests, please ensure that you've read and understood the -  [Sending cookies](#sending-cookies) section. - -* If this polyfill **doesn't work under Node.js environments**, that is expected, -  because this project is meant for web browsers only. You should ensure that your -  application doesn't try to package and run this on the server. - -* If you have an idea for a new feature of `fetch`, please understand that we -  are only ever going to add features and APIs that are a part of the -  [Fetch specification][]. You should **submit your feature requests** to the -  [repository of the specification](https://github.com/whatwg/fetch/issues) -  itself, rather than this repository. - -## Installation - -* `npm install whatwg-fetch --save`; or - -* `bower install fetch`. - -You will also need a Promise polyfill for [older browsers](http://caniuse.com/#feat=promises). -We recommend [taylorhakes/promise-polyfill](https://github.com/taylorhakes/promise-polyfill) -for its small size and Promises/A+ compatibility. - -For use with webpack, add this package in the `entry` configuration option -before your application entry point: - -```javascript -entry: ['whatwg-fetch', ...] -``` - -For Babel and ES2015+, make sure to import the file: - -```javascript -import 'whatwg-fetch' -``` - -## Usage - -For a more comprehensive API reference that this polyfill supports, refer to -https://github.github.io/fetch/. - -### HTML - -```javascript -fetch('/users.html') -  .then(function(response) { -    return response.text() -  }).then(function(body) { -    document.body.innerHTML = body -  }) -``` - -### JSON - -```javascript -fetch('/users.json') -  .then(function(response) { -    return response.json() -  }).then(function(json) { -    console.log('parsed json', json) -  }).catch(function(ex) { -    console.log('parsing failed', ex) -  }) -``` - -### Response metadata - -```javascript -fetch('/users.json').then(function(response) { -  console.log(response.headers.get('Content-Type')) -  console.log(response.headers.get('Date')) -  console.log(response.status) -  console.log(response.statusText) -}) -``` - -### Post form - -```javascript -var form = document.querySelector('form') - -fetch('/users', { -  method: 'POST', -  body: new FormData(form) -}) -``` - -### Post JSON - -```javascript -fetch('/users', { -  method: 'POST', -  headers: { -    'Content-Type': 'application/json' -  }, -  body: JSON.stringify({ -    name: 'Hubot', -    login: 'hubot', -  }) -}) -``` - -### File upload - -```javascript -var input = document.querySelector('input[type="file"]') - -var data = new FormData() -data.append('file', input.files[0]) -data.append('user', 'hubot') - -fetch('/avatars', { -  method: 'POST', -  body: data -}) -``` - -### Caveats - -The `fetch` specification differs from `jQuery.ajax()` in mainly two ways that -bear keeping in mind: - -* The Promise returned from `fetch()` **won't reject on HTTP error status** -  even if the response is an HTTP 404 or 500. Instead, it will resolve normally, -  and it will only reject on network failure or if anything prevented the -  request from completing. - -* By default, `fetch` **won't send or receive any cookies** from the server, -  resulting in unauthenticated requests if the site relies on maintaining a user -  session. See [Sending cookies](#sending-cookies) for how to opt into cookie -  handling. - -#### Handling HTTP error statuses - -To have `fetch` Promise reject on HTTP error statuses, i.e. on any non-2xx -status, define a custom response handler: - -```javascript -function checkStatus(response) { -  if (response.status >= 200 && response.status < 300) { -    return response -  } else { -    var error = new Error(response.statusText) -    error.response = response -    throw error -  } -} - -function parseJSON(response) { -  return response.json() -} - -fetch('/users') -  .then(checkStatus) -  .then(parseJSON) -  .then(function(data) { -    console.log('request succeeded with JSON response', data) -  }).catch(function(error) { -    console.log('request failed', error) -  }) -``` - -#### Sending cookies - -To automatically send cookies for the current domain, the `credentials` option -must be provided: - -```javascript -fetch('/users', { -  credentials: 'same-origin' -}) -``` - -The "same-origin" value makes `fetch` behave similarly to XMLHttpRequest with -regards to cookies. Otherwise, cookies won't get sent, resulting in these -requests not preserving the authentication session. - -For [CORS][] requests, use the "include" value to allow sending credentials to -other domains: - -```javascript -fetch('https://example.com:1234/users', { -  credentials: 'include' -}) -``` - -#### Receiving cookies - -As with XMLHttpRequest, the `Set-Cookie` response header returned from the -server is a [forbidden header name][] and therefore can't be programmatically -read with `response.headers.get()`. Instead, it's the browser's responsibility -to handle new cookies being set (if applicable to the current URL). Unless they -are HTTP-only, new cookies will be available through `document.cookie`. - -Bear in mind that the default behavior of `fetch` is to ignore the `Set-Cookie` -header completely. To opt into accepting cookies from the server, you must use -the `credentials` option. - -#### Obtaining the Response URL - -Due to limitations of XMLHttpRequest, the `response.url` value might not be -reliable after HTTP redirects on older browsers. - -The solution is to configure the server to set the response HTTP header -`X-Request-URL` to the current URL after any redirect that might have happened. -It should be safe to set it unconditionally. - -``` ruby -# Ruby on Rails controller example -response.headers['X-Request-URL'] = request.url -``` - -This server workaround is necessary if you need reliable `response.url` in -Firefox < 32, Chrome < 37, Safari, or IE. - -## Browser Support - -- Chrome -- Firefox -- Safari 6.1+ -- Internet Explorer 10+ - -Note: modern browsers such as Chrome, Firefox, and Microsoft Edge contain native -implementations of `window.fetch`, therefore the code from this polyfill doesn't -have any effect on those browsers. If you believe you've encountered an error -with how `window.fetch` is implemented in any of these browsers, you should file -an issue with that browser vendor instead of this project. - - -  [fetch specification]: https://fetch.spec.whatwg.org -  [open code of conduct]: http://todogroup.org/opencodeofconduct/#fetch/opensource@github.com -  [cors]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS -    "Cross-origin resource sharing" -  [csrf]: https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet -    "Cross-site request forgery" -  [forbidden header name]: https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name diff --git a/node_modules/whatwg-fetch/fetch.js b/node_modules/whatwg-fetch/fetch.js deleted file mode 100644 index 6bac6b394..000000000 --- a/node_modules/whatwg-fetch/fetch.js +++ /dev/null @@ -1,461 +0,0 @@ -(function(self) { -  'use strict'; - -  if (self.fetch) { -    return -  } - -  var support = { -    searchParams: 'URLSearchParams' in self, -    iterable: 'Symbol' in self && 'iterator' in Symbol, -    blob: 'FileReader' in self && 'Blob' in self && (function() { -      try { -        new Blob() -        return true -      } catch(e) { -        return false -      } -    })(), -    formData: 'FormData' in self, -    arrayBuffer: 'ArrayBuffer' in self -  } - -  if (support.arrayBuffer) { -    var viewClasses = [ -      '[object Int8Array]', -      '[object Uint8Array]', -      '[object Uint8ClampedArray]', -      '[object Int16Array]', -      '[object Uint16Array]', -      '[object Int32Array]', -      '[object Uint32Array]', -      '[object Float32Array]', -      '[object Float64Array]' -    ] - -    var isDataView = function(obj) { -      return obj && DataView.prototype.isPrototypeOf(obj) -    } - -    var isArrayBufferView = ArrayBuffer.isView || function(obj) { -      return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1 -    } -  } - -  function normalizeName(name) { -    if (typeof name !== 'string') { -      name = String(name) -    } -    if (/[^a-z0-9\-#$%&'*+.\^_`|~]/i.test(name)) { -      throw new TypeError('Invalid character in header field name') -    } -    return name.toLowerCase() -  } - -  function normalizeValue(value) { -    if (typeof value !== 'string') { -      value = String(value) -    } -    return value -  } - -  // Build a destructive iterator for the value list -  function iteratorFor(items) { -    var iterator = { -      next: function() { -        var value = items.shift() -        return {done: value === undefined, value: value} -      } -    } - -    if (support.iterable) { -      iterator[Symbol.iterator] = function() { -        return iterator -      } -    } - -    return iterator -  } - -  function Headers(headers) { -    this.map = {} - -    if (headers instanceof Headers) { -      headers.forEach(function(value, name) { -        this.append(name, value) -      }, this) -    } else if (Array.isArray(headers)) { -      headers.forEach(function(header) { -        this.append(header[0], header[1]) -      }, this) -    } else if (headers) { -      Object.getOwnPropertyNames(headers).forEach(function(name) { -        this.append(name, headers[name]) -      }, this) -    } -  } - -  Headers.prototype.append = function(name, value) { -    name = normalizeName(name) -    value = normalizeValue(value) -    var oldValue = this.map[name] -    this.map[name] = oldValue ? oldValue+','+value : value -  } - -  Headers.prototype['delete'] = function(name) { -    delete this.map[normalizeName(name)] -  } - -  Headers.prototype.get = function(name) { -    name = normalizeName(name) -    return this.has(name) ? this.map[name] : null -  } - -  Headers.prototype.has = function(name) { -    return this.map.hasOwnProperty(normalizeName(name)) -  } - -  Headers.prototype.set = function(name, value) { -    this.map[normalizeName(name)] = normalizeValue(value) -  } - -  Headers.prototype.forEach = function(callback, thisArg) { -    for (var name in this.map) { -      if (this.map.hasOwnProperty(name)) { -        callback.call(thisArg, this.map[name], name, this) -      } -    } -  } - -  Headers.prototype.keys = function() { -    var items = [] -    this.forEach(function(value, name) { items.push(name) }) -    return iteratorFor(items) -  } - -  Headers.prototype.values = function() { -    var items = [] -    this.forEach(function(value) { items.push(value) }) -    return iteratorFor(items) -  } - -  Headers.prototype.entries = function() { -    var items = [] -    this.forEach(function(value, name) { items.push([name, value]) }) -    return iteratorFor(items) -  } - -  if (support.iterable) { -    Headers.prototype[Symbol.iterator] = Headers.prototype.entries -  } - -  function consumed(body) { -    if (body.bodyUsed) { -      return Promise.reject(new TypeError('Already read')) -    } -    body.bodyUsed = true -  } - -  function fileReaderReady(reader) { -    return new Promise(function(resolve, reject) { -      reader.onload = function() { -        resolve(reader.result) -      } -      reader.onerror = function() { -        reject(reader.error) -      } -    }) -  } - -  function readBlobAsArrayBuffer(blob) { -    var reader = new FileReader() -    var promise = fileReaderReady(reader) -    reader.readAsArrayBuffer(blob) -    return promise -  } - -  function readBlobAsText(blob) { -    var reader = new FileReader() -    var promise = fileReaderReady(reader) -    reader.readAsText(blob) -    return promise -  } - -  function readArrayBufferAsText(buf) { -    var view = new Uint8Array(buf) -    var chars = new Array(view.length) - -    for (var i = 0; i < view.length; i++) { -      chars[i] = String.fromCharCode(view[i]) -    } -    return chars.join('') -  } - -  function bufferClone(buf) { -    if (buf.slice) { -      return buf.slice(0) -    } else { -      var view = new Uint8Array(buf.byteLength) -      view.set(new Uint8Array(buf)) -      return view.buffer -    } -  } - -  function Body() { -    this.bodyUsed = false - -    this._initBody = function(body) { -      this._bodyInit = body -      if (!body) { -        this._bodyText = '' -      } else if (typeof body === 'string') { -        this._bodyText = body -      } else if (support.blob && Blob.prototype.isPrototypeOf(body)) { -        this._bodyBlob = body -      } else if (support.formData && FormData.prototype.isPrototypeOf(body)) { -        this._bodyFormData = body -      } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) { -        this._bodyText = body.toString() -      } else if (support.arrayBuffer && support.blob && isDataView(body)) { -        this._bodyArrayBuffer = bufferClone(body.buffer) -        // IE 10-11 can't handle a DataView body. -        this._bodyInit = new Blob([this._bodyArrayBuffer]) -      } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) { -        this._bodyArrayBuffer = bufferClone(body) -      } else { -        throw new Error('unsupported BodyInit type') -      } - -      if (!this.headers.get('content-type')) { -        if (typeof body === 'string') { -          this.headers.set('content-type', 'text/plain;charset=UTF-8') -        } else if (this._bodyBlob && this._bodyBlob.type) { -          this.headers.set('content-type', this._bodyBlob.type) -        } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) { -          this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8') -        } -      } -    } - -    if (support.blob) { -      this.blob = function() { -        var rejected = consumed(this) -        if (rejected) { -          return rejected -        } - -        if (this._bodyBlob) { -          return Promise.resolve(this._bodyBlob) -        } else if (this._bodyArrayBuffer) { -          return Promise.resolve(new Blob([this._bodyArrayBuffer])) -        } else if (this._bodyFormData) { -          throw new Error('could not read FormData body as blob') -        } else { -          return Promise.resolve(new Blob([this._bodyText])) -        } -      } - -      this.arrayBuffer = function() { -        if (this._bodyArrayBuffer) { -          return consumed(this) || Promise.resolve(this._bodyArrayBuffer) -        } else { -          return this.blob().then(readBlobAsArrayBuffer) -        } -      } -    } - -    this.text = function() { -      var rejected = consumed(this) -      if (rejected) { -        return rejected -      } - -      if (this._bodyBlob) { -        return readBlobAsText(this._bodyBlob) -      } else if (this._bodyArrayBuffer) { -        return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer)) -      } else if (this._bodyFormData) { -        throw new Error('could not read FormData body as text') -      } else { -        return Promise.resolve(this._bodyText) -      } -    } - -    if (support.formData) { -      this.formData = function() { -        return this.text().then(decode) -      } -    } - -    this.json = function() { -      return this.text().then(JSON.parse) -    } - -    return this -  } - -  // HTTP methods whose capitalization should be normalized -  var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'] - -  function normalizeMethod(method) { -    var upcased = method.toUpperCase() -    return (methods.indexOf(upcased) > -1) ? upcased : method -  } - -  function Request(input, options) { -    options = options || {} -    var body = options.body - -    if (input instanceof Request) { -      if (input.bodyUsed) { -        throw new TypeError('Already read') -      } -      this.url = input.url -      this.credentials = input.credentials -      if (!options.headers) { -        this.headers = new Headers(input.headers) -      } -      this.method = input.method -      this.mode = input.mode -      if (!body && input._bodyInit != null) { -        body = input._bodyInit -        input.bodyUsed = true -      } -    } else { -      this.url = String(input) -    } - -    this.credentials = options.credentials || this.credentials || 'omit' -    if (options.headers || !this.headers) { -      this.headers = new Headers(options.headers) -    } -    this.method = normalizeMethod(options.method || this.method || 'GET') -    this.mode = options.mode || this.mode || null -    this.referrer = null - -    if ((this.method === 'GET' || this.method === 'HEAD') && body) { -      throw new TypeError('Body not allowed for GET or HEAD requests') -    } -    this._initBody(body) -  } - -  Request.prototype.clone = function() { -    return new Request(this, { body: this._bodyInit }) -  } - -  function decode(body) { -    var form = new FormData() -    body.trim().split('&').forEach(function(bytes) { -      if (bytes) { -        var split = bytes.split('=') -        var name = split.shift().replace(/\+/g, ' ') -        var value = split.join('=').replace(/\+/g, ' ') -        form.append(decodeURIComponent(name), decodeURIComponent(value)) -      } -    }) -    return form -  } - -  function parseHeaders(rawHeaders) { -    var headers = new Headers() -    rawHeaders.split(/\r?\n/).forEach(function(line) { -      var parts = line.split(':') -      var key = parts.shift().trim() -      if (key) { -        var value = parts.join(':').trim() -        headers.append(key, value) -      } -    }) -    return headers -  } - -  Body.call(Request.prototype) - -  function Response(bodyInit, options) { -    if (!options) { -      options = {} -    } - -    this.type = 'default' -    this.status = 'status' in options ? options.status : 200 -    this.ok = this.status >= 200 && this.status < 300 -    this.statusText = 'statusText' in options ? options.statusText : 'OK' -    this.headers = new Headers(options.headers) -    this.url = options.url || '' -    this._initBody(bodyInit) -  } - -  Body.call(Response.prototype) - -  Response.prototype.clone = function() { -    return new Response(this._bodyInit, { -      status: this.status, -      statusText: this.statusText, -      headers: new Headers(this.headers), -      url: this.url -    }) -  } - -  Response.error = function() { -    var response = new Response(null, {status: 0, statusText: ''}) -    response.type = 'error' -    return response -  } - -  var redirectStatuses = [301, 302, 303, 307, 308] - -  Response.redirect = function(url, status) { -    if (redirectStatuses.indexOf(status) === -1) { -      throw new RangeError('Invalid status code') -    } - -    return new Response(null, {status: status, headers: {location: url}}) -  } - -  self.Headers = Headers -  self.Request = Request -  self.Response = Response - -  self.fetch = function(input, init) { -    return new Promise(function(resolve, reject) { -      var request = new Request(input, init) -      var xhr = new XMLHttpRequest() - -      xhr.onload = function() { -        var options = { -          status: xhr.status, -          statusText: xhr.statusText, -          headers: parseHeaders(xhr.getAllResponseHeaders() || '') -        } -        options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL') -        var body = 'response' in xhr ? xhr.response : xhr.responseText -        resolve(new Response(body, options)) -      } - -      xhr.onerror = function() { -        reject(new TypeError('Network request failed')) -      } - -      xhr.ontimeout = function() { -        reject(new TypeError('Network request failed')) -      } - -      xhr.open(request.method, request.url, true) - -      if (request.credentials === 'include') { -        xhr.withCredentials = true -      } - -      if ('responseType' in xhr && support.blob) { -        xhr.responseType = 'blob' -      } - -      request.headers.forEach(function(value, name) { -        xhr.setRequestHeader(name, value) -      }) - -      xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit) -    }) -  } -  self.fetch.polyfill = true -})(typeof self !== 'undefined' ? self : this); diff --git a/node_modules/whatwg-fetch/package.json b/node_modules/whatwg-fetch/package.json deleted file mode 100644 index e6d80cc9f..000000000 --- a/node_modules/whatwg-fetch/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ -  "name": "whatwg-fetch", -  "description": "A window.fetch polyfill.", -  "version": "2.0.3", -  "main": "fetch.js", -  "repository": "github/fetch", -  "license": "MIT", -  "devDependencies": { -    "chai": "1.10.0", -    "jshint": "2.8.0", -    "mocha": "2.1.0", -    "mocha-phantomjs-core": "2.0.1", -    "promise-polyfill": "6.0.2", -    "url-search-params": "0.6.1" -  }, -  "files": [ -    "LICENSE", -    "fetch.js" -  ], -  "scripts": { -    "test": "make" -  } -}  | 
