[ Index ]

PHP Cross Reference of WordPress

title

Body

[close]

/wp-includes/js/dist/vendor/ -> wp-polyfill-fetch.js (source)

   1  (function (global, factory) {
   2    typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
   3    typeof define === 'function' && define.amd ? define(['exports'], factory) :
   4    (factory((global.WHATWGFetch = {})));
   5  }(this, (function (exports) { 'use strict';
   6  
   7    var support = {
   8      searchParams: 'URLSearchParams' in self,
   9      iterable: 'Symbol' in self && 'iterator' in Symbol,
  10      blob:
  11        'FileReader' in self &&
  12        'Blob' in self &&
  13        (function() {
  14          try {
  15            new Blob();
  16            return true
  17          } catch (e) {
  18            return false
  19          }
  20        })(),
  21      formData: 'FormData' in self,
  22      arrayBuffer: 'ArrayBuffer' in self
  23    };
  24  
  25    function isDataView(obj) {
  26      return obj && DataView.prototype.isPrototypeOf(obj)
  27    }
  28  
  29    if (support.arrayBuffer) {
  30      var viewClasses = [
  31        '[object Int8Array]',
  32        '[object Uint8Array]',
  33        '[object Uint8ClampedArray]',
  34        '[object Int16Array]',
  35        '[object Uint16Array]',
  36        '[object Int32Array]',
  37        '[object Uint32Array]',
  38        '[object Float32Array]',
  39        '[object Float64Array]'
  40      ];
  41  
  42      var isArrayBufferView =
  43        ArrayBuffer.isView ||
  44        function(obj) {
  45          return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1
  46        };
  47    }
  48  
  49    function normalizeName(name) {
  50      if (typeof name !== 'string') {
  51        name = String(name);
  52      }
  53      if (/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(name)) {
  54        throw new TypeError('Invalid character in header field name')
  55      }
  56      return name.toLowerCase()
  57    }
  58  
  59    function normalizeValue(value) {
  60      if (typeof value !== 'string') {
  61        value = String(value);
  62      }
  63      return value
  64    }
  65  
  66    // Build a destructive iterator for the value list
  67    function iteratorFor(items) {
  68      var iterator = {
  69        next: function() {
  70          var value = items.shift();
  71          return {done: value === undefined, value: value}
  72        }
  73      };
  74  
  75      if (support.iterable) {
  76        iterator[Symbol.iterator] = function() {
  77          return iterator
  78        };
  79      }
  80  
  81      return iterator
  82    }
  83  
  84    function Headers(headers) {
  85      this.map = {};
  86  
  87      if (headers instanceof Headers) {
  88        headers.forEach(function(value, name) {
  89          this.append(name, value);
  90        }, this);
  91      } else if (Array.isArray(headers)) {
  92        headers.forEach(function(header) {
  93          this.append(header[0], header[1]);
  94        }, this);
  95      } else if (headers) {
  96        Object.getOwnPropertyNames(headers).forEach(function(name) {
  97          this.append(name, headers[name]);
  98        }, this);
  99      }
 100    }
 101  
 102    Headers.prototype.append = function(name, value) {
 103      name = normalizeName(name);
 104      value = normalizeValue(value);
 105      var oldValue = this.map[name];
 106      this.map[name] = oldValue ? oldValue + ', ' + value : value;
 107    };
 108  
 109    Headers.prototype['delete'] = function(name) {
 110      delete this.map[normalizeName(name)];
 111    };
 112  
 113    Headers.prototype.get = function(name) {
 114      name = normalizeName(name);
 115      return this.has(name) ? this.map[name] : null
 116    };
 117  
 118    Headers.prototype.has = function(name) {
 119      return this.map.hasOwnProperty(normalizeName(name))
 120    };
 121  
 122    Headers.prototype.set = function(name, value) {
 123      this.map[normalizeName(name)] = normalizeValue(value);
 124    };
 125  
 126    Headers.prototype.forEach = function(callback, thisArg) {
 127      for (var name in this.map) {
 128        if (this.map.hasOwnProperty(name)) {
 129          callback.call(thisArg, this.map[name], name, this);
 130        }
 131      }
 132    };
 133  
 134    Headers.prototype.keys = function() {
 135      var items = [];
 136      this.forEach(function(value, name) {
 137        items.push(name);
 138      });
 139      return iteratorFor(items)
 140    };
 141  
 142    Headers.prototype.values = function() {
 143      var items = [];
 144      this.forEach(function(value) {
 145        items.push(value);
 146      });
 147      return iteratorFor(items)
 148    };
 149  
 150    Headers.prototype.entries = function() {
 151      var items = [];
 152      this.forEach(function(value, name) {
 153        items.push([name, value]);
 154      });
 155      return iteratorFor(items)
 156    };
 157  
 158    if (support.iterable) {
 159      Headers.prototype[Symbol.iterator] = Headers.prototype.entries;
 160    }
 161  
 162    function consumed(body) {
 163      if (body.bodyUsed) {
 164        return Promise.reject(new TypeError('Already read'))
 165      }
 166      body.bodyUsed = true;
 167    }
 168  
 169    function fileReaderReady(reader) {
 170      return new Promise(function(resolve, reject) {
 171        reader.onload = function() {
 172          resolve(reader.result);
 173        };
 174        reader.onerror = function() {
 175          reject(reader.error);
 176        };
 177      })
 178    }
 179  
 180    function readBlobAsArrayBuffer(blob) {
 181      var reader = new FileReader();
 182      var promise = fileReaderReady(reader);
 183      reader.readAsArrayBuffer(blob);
 184      return promise
 185    }
 186  
 187    function readBlobAsText(blob) {
 188      var reader = new FileReader();
 189      var promise = fileReaderReady(reader);
 190      reader.readAsText(blob);
 191      return promise
 192    }
 193  
 194    function readArrayBufferAsText(buf) {
 195      var view = new Uint8Array(buf);
 196      var chars = new Array(view.length);
 197  
 198      for (var i = 0; i < view.length; i++) {
 199        chars[i] = String.fromCharCode(view[i]);
 200      }
 201      return chars.join('')
 202    }
 203  
 204    function bufferClone(buf) {
 205      if (buf.slice) {
 206        return buf.slice(0)
 207      } else {
 208        var view = new Uint8Array(buf.byteLength);
 209        view.set(new Uint8Array(buf));
 210        return view.buffer
 211      }
 212    }
 213  
 214    function Body() {
 215      this.bodyUsed = false;
 216  
 217      this._initBody = function(body) {
 218        this._bodyInit = body;
 219        if (!body) {
 220          this._bodyText = '';
 221        } else if (typeof body === 'string') {
 222          this._bodyText = body;
 223        } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {
 224          this._bodyBlob = body;
 225        } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {
 226          this._bodyFormData = body;
 227        } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {
 228          this._bodyText = body.toString();
 229        } else if (support.arrayBuffer && support.blob && isDataView(body)) {
 230          this._bodyArrayBuffer = bufferClone(body.buffer);
 231          // IE 10-11 can't handle a DataView body.
 232          this._bodyInit = new Blob([this._bodyArrayBuffer]);
 233        } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {
 234          this._bodyArrayBuffer = bufferClone(body);
 235        } else {
 236          this._bodyText = body = Object.prototype.toString.call(body);
 237        }
 238  
 239        if (!this.headers.get('content-type')) {
 240          if (typeof body === 'string') {
 241            this.headers.set('content-type', 'text/plain;charset=UTF-8');
 242          } else if (this._bodyBlob && this._bodyBlob.type) {
 243            this.headers.set('content-type', this._bodyBlob.type);
 244          } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {
 245            this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');
 246          }
 247        }
 248      };
 249  
 250      if (support.blob) {
 251        this.blob = function() {
 252          var rejected = consumed(this);
 253          if (rejected) {
 254            return rejected
 255          }
 256  
 257          if (this._bodyBlob) {
 258            return Promise.resolve(this._bodyBlob)
 259          } else if (this._bodyArrayBuffer) {
 260            return Promise.resolve(new Blob([this._bodyArrayBuffer]))
 261          } else if (this._bodyFormData) {
 262            throw new Error('could not read FormData body as blob')
 263          } else {
 264            return Promise.resolve(new Blob([this._bodyText]))
 265          }
 266        };
 267  
 268        this.arrayBuffer = function() {
 269          if (this._bodyArrayBuffer) {
 270            return consumed(this) || Promise.resolve(this._bodyArrayBuffer)
 271          } else {
 272            return this.blob().then(readBlobAsArrayBuffer)
 273          }
 274        };
 275      }
 276  
 277      this.text = function() {
 278        var rejected = consumed(this);
 279        if (rejected) {
 280          return rejected
 281        }
 282  
 283        if (this._bodyBlob) {
 284          return readBlobAsText(this._bodyBlob)
 285        } else if (this._bodyArrayBuffer) {
 286          return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))
 287        } else if (this._bodyFormData) {
 288          throw new Error('could not read FormData body as text')
 289        } else {
 290          return Promise.resolve(this._bodyText)
 291        }
 292      };
 293  
 294      if (support.formData) {
 295        this.formData = function() {
 296          return this.text().then(decode)
 297        };
 298      }
 299  
 300      this.json = function() {
 301        return this.text().then(JSON.parse)
 302      };
 303  
 304      return this
 305    }
 306  
 307    // HTTP methods whose capitalization should be normalized
 308    var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];
 309  
 310    function normalizeMethod(method) {
 311      var upcased = method.toUpperCase();
 312      return methods.indexOf(upcased) > -1 ? upcased : method
 313    }
 314  
 315    function Request(input, options) {
 316      options = options || {};
 317      var body = options.body;
 318  
 319      if (input instanceof Request) {
 320        if (input.bodyUsed) {
 321          throw new TypeError('Already read')
 322        }
 323        this.url = input.url;
 324        this.credentials = input.credentials;
 325        if (!options.headers) {
 326          this.headers = new Headers(input.headers);
 327        }
 328        this.method = input.method;
 329        this.mode = input.mode;
 330        this.signal = input.signal;
 331        if (!body && input._bodyInit != null) {
 332          body = input._bodyInit;
 333          input.bodyUsed = true;
 334        }
 335      } else {
 336        this.url = String(input);
 337      }
 338  
 339      this.credentials = options.credentials || this.credentials || 'same-origin';
 340      if (options.headers || !this.headers) {
 341        this.headers = new Headers(options.headers);
 342      }
 343      this.method = normalizeMethod(options.method || this.method || 'GET');
 344      this.mode = options.mode || this.mode || null;
 345      this.signal = options.signal || this.signal;
 346      this.referrer = null;
 347  
 348      if ((this.method === 'GET' || this.method === 'HEAD') && body) {
 349        throw new TypeError('Body not allowed for GET or HEAD requests')
 350      }
 351      this._initBody(body);
 352    }
 353  
 354    Request.prototype.clone = function() {
 355      return new Request(this, {body: this._bodyInit})
 356    };
 357  
 358    function decode(body) {
 359      var form = new FormData();
 360      body
 361        .trim()
 362        .split('&')
 363        .forEach(function(bytes) {
 364          if (bytes) {
 365            var split = bytes.split('=');
 366            var name = split.shift().replace(/\+/g, ' ');
 367            var value = split.join('=').replace(/\+/g, ' ');
 368            form.append(decodeURIComponent(name), decodeURIComponent(value));
 369          }
 370        });
 371      return form
 372    }
 373  
 374    function parseHeaders(rawHeaders) {
 375      var headers = new Headers();
 376      // Replace instances of \r\n and \n followed by at least one space or horizontal tab with a space
 377      // https://tools.ietf.org/html/rfc7230#section-3.2
 378      var preProcessedHeaders = rawHeaders.replace(/\r?\n[\t ]+/g, ' ');
 379      preProcessedHeaders.split(/\r?\n/).forEach(function(line) {
 380        var parts = line.split(':');
 381        var key = parts.shift().trim();
 382        if (key) {
 383          var value = parts.join(':').trim();
 384          headers.append(key, value);
 385        }
 386      });
 387      return headers
 388    }
 389  
 390    Body.call(Request.prototype);
 391  
 392    function Response(bodyInit, options) {
 393      if (!options) {
 394        options = {};
 395      }
 396  
 397      this.type = 'default';
 398      this.status = options.status === undefined ? 200 : options.status;
 399      this.ok = this.status >= 200 && this.status < 300;
 400      this.statusText = 'statusText' in options ? options.statusText : 'OK';
 401      this.headers = new Headers(options.headers);
 402      this.url = options.url || '';
 403      this._initBody(bodyInit);
 404    }
 405  
 406    Body.call(Response.prototype);
 407  
 408    Response.prototype.clone = function() {
 409      return new Response(this._bodyInit, {
 410        status: this.status,
 411        statusText: this.statusText,
 412        headers: new Headers(this.headers),
 413        url: this.url
 414      })
 415    };
 416  
 417    Response.error = function() {
 418      var response = new Response(null, {status: 0, statusText: ''});
 419      response.type = 'error';
 420      return response
 421    };
 422  
 423    var redirectStatuses = [301, 302, 303, 307, 308];
 424  
 425    Response.redirect = function(url, status) {
 426      if (redirectStatuses.indexOf(status) === -1) {
 427        throw new RangeError('Invalid status code')
 428      }
 429  
 430      return new Response(null, {status: status, headers: {location: url}})
 431    };
 432  
 433    exports.DOMException = self.DOMException;
 434    try {
 435      new exports.DOMException();
 436    } catch (err) {
 437      exports.DOMException = function(message, name) {
 438        this.message = message;
 439        this.name = name;
 440        var error = Error(message);
 441        this.stack = error.stack;
 442      };
 443      exports.DOMException.prototype = Object.create(Error.prototype);
 444      exports.DOMException.prototype.constructor = exports.DOMException;
 445    }
 446  
 447    function fetch(input, init) {
 448      return new Promise(function(resolve, reject) {
 449        var request = new Request(input, init);
 450  
 451        if (request.signal && request.signal.aborted) {
 452          return reject(new exports.DOMException('Aborted', 'AbortError'))
 453        }
 454  
 455        var xhr = new XMLHttpRequest();
 456  
 457        function abortXhr() {
 458          xhr.abort();
 459        }
 460  
 461        xhr.onload = function() {
 462          var options = {
 463            status: xhr.status,
 464            statusText: xhr.statusText,
 465            headers: parseHeaders(xhr.getAllResponseHeaders() || '')
 466          };
 467          options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');
 468          var body = 'response' in xhr ? xhr.response : xhr.responseText;
 469          resolve(new Response(body, options));
 470        };
 471  
 472        xhr.onerror = function() {
 473          reject(new TypeError('Network request failed'));
 474        };
 475  
 476        xhr.ontimeout = function() {
 477          reject(new TypeError('Network request failed'));
 478        };
 479  
 480        xhr.onabort = function() {
 481          reject(new exports.DOMException('Aborted', 'AbortError'));
 482        };
 483  
 484        xhr.open(request.method, request.url, true);
 485  
 486        if (request.credentials === 'include') {
 487          xhr.withCredentials = true;
 488        } else if (request.credentials === 'omit') {
 489          xhr.withCredentials = false;
 490        }
 491  
 492        if ('responseType' in xhr && support.blob) {
 493          xhr.responseType = 'blob';
 494        }
 495  
 496        request.headers.forEach(function(value, name) {
 497          xhr.setRequestHeader(name, value);
 498        });
 499  
 500        if (request.signal) {
 501          request.signal.addEventListener('abort', abortXhr);
 502  
 503          xhr.onreadystatechange = function() {
 504            // DONE (success or failure)
 505            if (xhr.readyState === 4) {
 506              request.signal.removeEventListener('abort', abortXhr);
 507            }
 508          };
 509        }
 510  
 511        xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);
 512      })
 513    }
 514  
 515    fetch.polyfill = true;
 516  
 517    if (!self.fetch) {
 518      self.fetch = fetch;
 519      self.Headers = Headers;
 520      self.Request = Request;
 521      self.Response = Response;
 522    }
 523  
 524    exports.Headers = Headers;
 525    exports.Request = Request;
 526    exports.Response = Response;
 527    exports.fetch = fetch;
 528  
 529    Object.defineProperty(exports, '__esModule', { value: true });
 530  
 531  })));


Generated: Sun Sep 15 01:00:03 2019 Cross-referenced by PHPXref 0.7.1