[ Index ] |
PHP Cross Reference of WordPress |
[Summary view] [Print] [Text view]
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 global = 8 (typeof globalThis !== 'undefined' && globalThis) || 9 (typeof self !== 'undefined' && self) || 10 (typeof global !== 'undefined' && global); 11 12 var support = { 13 searchParams: 'URLSearchParams' in global, 14 iterable: 'Symbol' in global && 'iterator' in Symbol, 15 blob: 16 'FileReader' in global && 17 'Blob' in global && 18 (function() { 19 try { 20 new Blob(); 21 return true 22 } catch (e) { 23 return false 24 } 25 })(), 26 formData: 'FormData' in global, 27 arrayBuffer: 'ArrayBuffer' in global 28 }; 29 30 function isDataView(obj) { 31 return obj && DataView.prototype.isPrototypeOf(obj) 32 } 33 34 if (support.arrayBuffer) { 35 var viewClasses = [ 36 '[object Int8Array]', 37 '[object Uint8Array]', 38 '[object Uint8ClampedArray]', 39 '[object Int16Array]', 40 '[object Uint16Array]', 41 '[object Int32Array]', 42 '[object Uint32Array]', 43 '[object Float32Array]', 44 '[object Float64Array]' 45 ]; 46 47 var isArrayBufferView = 48 ArrayBuffer.isView || 49 function(obj) { 50 return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1 51 }; 52 } 53 54 function normalizeName(name) { 55 if (typeof name !== 'string') { 56 name = String(name); 57 } 58 if (/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(name) || name === '') { 59 throw new TypeError('Invalid character in header field name: "' + name + '"') 60 } 61 return name.toLowerCase() 62 } 63 64 function normalizeValue(value) { 65 if (typeof value !== 'string') { 66 value = String(value); 67 } 68 return value 69 } 70 71 // Build a destructive iterator for the value list 72 function iteratorFor(items) { 73 var iterator = { 74 next: function() { 75 var value = items.shift(); 76 return {done: value === undefined, value: value} 77 } 78 }; 79 80 if (support.iterable) { 81 iterator[Symbol.iterator] = function() { 82 return iterator 83 }; 84 } 85 86 return iterator 87 } 88 89 function Headers(headers) { 90 this.map = {}; 91 92 if (headers instanceof Headers) { 93 headers.forEach(function(value, name) { 94 this.append(name, value); 95 }, this); 96 } else if (Array.isArray(headers)) { 97 headers.forEach(function(header) { 98 this.append(header[0], header[1]); 99 }, this); 100 } else if (headers) { 101 Object.getOwnPropertyNames(headers).forEach(function(name) { 102 this.append(name, headers[name]); 103 }, this); 104 } 105 } 106 107 Headers.prototype.append = function(name, value) { 108 name = normalizeName(name); 109 value = normalizeValue(value); 110 var oldValue = this.map[name]; 111 this.map[name] = oldValue ? oldValue + ', ' + value : value; 112 }; 113 114 Headers.prototype['delete'] = function(name) { 115 delete this.map[normalizeName(name)]; 116 }; 117 118 Headers.prototype.get = function(name) { 119 name = normalizeName(name); 120 return this.has(name) ? this.map[name] : null 121 }; 122 123 Headers.prototype.has = function(name) { 124 return this.map.hasOwnProperty(normalizeName(name)) 125 }; 126 127 Headers.prototype.set = function(name, value) { 128 this.map[normalizeName(name)] = normalizeValue(value); 129 }; 130 131 Headers.prototype.forEach = function(callback, thisArg) { 132 for (var name in this.map) { 133 if (this.map.hasOwnProperty(name)) { 134 callback.call(thisArg, this.map[name], name, this); 135 } 136 } 137 }; 138 139 Headers.prototype.keys = function() { 140 var items = []; 141 this.forEach(function(value, name) { 142 items.push(name); 143 }); 144 return iteratorFor(items) 145 }; 146 147 Headers.prototype.values = function() { 148 var items = []; 149 this.forEach(function(value) { 150 items.push(value); 151 }); 152 return iteratorFor(items) 153 }; 154 155 Headers.prototype.entries = function() { 156 var items = []; 157 this.forEach(function(value, name) { 158 items.push([name, value]); 159 }); 160 return iteratorFor(items) 161 }; 162 163 if (support.iterable) { 164 Headers.prototype[Symbol.iterator] = Headers.prototype.entries; 165 } 166 167 function consumed(body) { 168 if (body.bodyUsed) { 169 return Promise.reject(new TypeError('Already read')) 170 } 171 body.bodyUsed = true; 172 } 173 174 function fileReaderReady(reader) { 175 return new Promise(function(resolve, reject) { 176 reader.onload = function() { 177 resolve(reader.result); 178 }; 179 reader.onerror = function() { 180 reject(reader.error); 181 }; 182 }) 183 } 184 185 function readBlobAsArrayBuffer(blob) { 186 var reader = new FileReader(); 187 var promise = fileReaderReady(reader); 188 reader.readAsArrayBuffer(blob); 189 return promise 190 } 191 192 function readBlobAsText(blob) { 193 var reader = new FileReader(); 194 var promise = fileReaderReady(reader); 195 reader.readAsText(blob); 196 return promise 197 } 198 199 function readArrayBufferAsText(buf) { 200 var view = new Uint8Array(buf); 201 var chars = new Array(view.length); 202 203 for (var i = 0; i < view.length; i++) { 204 chars[i] = String.fromCharCode(view[i]); 205 } 206 return chars.join('') 207 } 208 209 function bufferClone(buf) { 210 if (buf.slice) { 211 return buf.slice(0) 212 } else { 213 var view = new Uint8Array(buf.byteLength); 214 view.set(new Uint8Array(buf)); 215 return view.buffer 216 } 217 } 218 219 function Body() { 220 this.bodyUsed = false; 221 222 this._initBody = function(body) { 223 /* 224 fetch-mock wraps the Response object in an ES6 Proxy to 225 provide useful test harness features such as flush. However, on 226 ES5 browsers without fetch or Proxy support pollyfills must be used; 227 the proxy-pollyfill is unable to proxy an attribute unless it exists 228 on the object before the Proxy is created. This change ensures 229 Response.bodyUsed exists on the instance, while maintaining the 230 semantic of setting Request.bodyUsed in the constructor before 231 _initBody is called. 232 */ 233 this.bodyUsed = this.bodyUsed; 234 this._bodyInit = body; 235 if (!body) { 236 this._bodyText = ''; 237 } else if (typeof body === 'string') { 238 this._bodyText = body; 239 } else if (support.blob && Blob.prototype.isPrototypeOf(body)) { 240 this._bodyBlob = body; 241 } else if (support.formData && FormData.prototype.isPrototypeOf(body)) { 242 this._bodyFormData = body; 243 } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) { 244 this._bodyText = body.toString(); 245 } else if (support.arrayBuffer && support.blob && isDataView(body)) { 246 this._bodyArrayBuffer = bufferClone(body.buffer); 247 // IE 10-11 can't handle a DataView body. 248 this._bodyInit = new Blob([this._bodyArrayBuffer]); 249 } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) { 250 this._bodyArrayBuffer = bufferClone(body); 251 } else { 252 this._bodyText = body = Object.prototype.toString.call(body); 253 } 254 255 if (!this.headers.get('content-type')) { 256 if (typeof body === 'string') { 257 this.headers.set('content-type', 'text/plain;charset=UTF-8'); 258 } else if (this._bodyBlob && this._bodyBlob.type) { 259 this.headers.set('content-type', this._bodyBlob.type); 260 } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) { 261 this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8'); 262 } 263 } 264 }; 265 266 if (support.blob) { 267 this.blob = function() { 268 var rejected = consumed(this); 269 if (rejected) { 270 return rejected 271 } 272 273 if (this._bodyBlob) { 274 return Promise.resolve(this._bodyBlob) 275 } else if (this._bodyArrayBuffer) { 276 return Promise.resolve(new Blob([this._bodyArrayBuffer])) 277 } else if (this._bodyFormData) { 278 throw new Error('could not read FormData body as blob') 279 } else { 280 return Promise.resolve(new Blob([this._bodyText])) 281 } 282 }; 283 284 this.arrayBuffer = function() { 285 if (this._bodyArrayBuffer) { 286 var isConsumed = consumed(this); 287 if (isConsumed) { 288 return isConsumed 289 } 290 if (ArrayBuffer.isView(this._bodyArrayBuffer)) { 291 return Promise.resolve( 292 this._bodyArrayBuffer.buffer.slice( 293 this._bodyArrayBuffer.byteOffset, 294 this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength 295 ) 296 ) 297 } else { 298 return Promise.resolve(this._bodyArrayBuffer) 299 } 300 } else { 301 return this.blob().then(readBlobAsArrayBuffer) 302 } 303 }; 304 } 305 306 this.text = function() { 307 var rejected = consumed(this); 308 if (rejected) { 309 return rejected 310 } 311 312 if (this._bodyBlob) { 313 return readBlobAsText(this._bodyBlob) 314 } else if (this._bodyArrayBuffer) { 315 return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer)) 316 } else if (this._bodyFormData) { 317 throw new Error('could not read FormData body as text') 318 } else { 319 return Promise.resolve(this._bodyText) 320 } 321 }; 322 323 if (support.formData) { 324 this.formData = function() { 325 return this.text().then(decode) 326 }; 327 } 328 329 this.json = function() { 330 return this.text().then(JSON.parse) 331 }; 332 333 return this 334 } 335 336 // HTTP methods whose capitalization should be normalized 337 var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']; 338 339 function normalizeMethod(method) { 340 var upcased = method.toUpperCase(); 341 return methods.indexOf(upcased) > -1 ? upcased : method 342 } 343 344 function Request(input, options) { 345 if (!(this instanceof Request)) { 346 throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.') 347 } 348 349 options = options || {}; 350 var body = options.body; 351 352 if (input instanceof Request) { 353 if (input.bodyUsed) { 354 throw new TypeError('Already read') 355 } 356 this.url = input.url; 357 this.credentials = input.credentials; 358 if (!options.headers) { 359 this.headers = new Headers(input.headers); 360 } 361 this.method = input.method; 362 this.mode = input.mode; 363 this.signal = input.signal; 364 if (!body && input._bodyInit != null) { 365 body = input._bodyInit; 366 input.bodyUsed = true; 367 } 368 } else { 369 this.url = String(input); 370 } 371 372 this.credentials = options.credentials || this.credentials || 'same-origin'; 373 if (options.headers || !this.headers) { 374 this.headers = new Headers(options.headers); 375 } 376 this.method = normalizeMethod(options.method || this.method || 'GET'); 377 this.mode = options.mode || this.mode || null; 378 this.signal = options.signal || this.signal; 379 this.referrer = null; 380 381 if ((this.method === 'GET' || this.method === 'HEAD') && body) { 382 throw new TypeError('Body not allowed for GET or HEAD requests') 383 } 384 this._initBody(body); 385 386 if (this.method === 'GET' || this.method === 'HEAD') { 387 if (options.cache === 'no-store' || options.cache === 'no-cache') { 388 // Search for a '_' parameter in the query string 389 var reParamSearch = /([?&])_=[^&]*/; 390 if (reParamSearch.test(this.url)) { 391 // If it already exists then set the value with the current time 392 this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime()); 393 } else { 394 // Otherwise add a new '_' parameter to the end with the current time 395 var reQueryString = /\?/; 396 this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime(); 397 } 398 } 399 } 400 } 401 402 Request.prototype.clone = function() { 403 return new Request(this, {body: this._bodyInit}) 404 }; 405 406 function decode(body) { 407 var form = new FormData(); 408 body 409 .trim() 410 .split('&') 411 .forEach(function(bytes) { 412 if (bytes) { 413 var split = bytes.split('='); 414 var name = split.shift().replace(/\+/g, ' '); 415 var value = split.join('=').replace(/\+/g, ' '); 416 form.append(decodeURIComponent(name), decodeURIComponent(value)); 417 } 418 }); 419 return form 420 } 421 422 function parseHeaders(rawHeaders) { 423 var headers = new Headers(); 424 // Replace instances of \r\n and \n followed by at least one space or horizontal tab with a space 425 // https://tools.ietf.org/html/rfc7230#section-3.2 426 var preProcessedHeaders = rawHeaders.replace(/\r?\n[\t ]+/g, ' '); 427 // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill 428 // https://github.com/github/fetch/issues/748 429 // https://github.com/zloirock/core-js/issues/751 430 preProcessedHeaders 431 .split('\r') 432 .map(function(header) { 433 return header.indexOf('\n') === 0 ? header.substr(1, header.length) : header 434 }) 435 .forEach(function(line) { 436 var parts = line.split(':'); 437 var key = parts.shift().trim(); 438 if (key) { 439 var value = parts.join(':').trim(); 440 headers.append(key, value); 441 } 442 }); 443 return headers 444 } 445 446 Body.call(Request.prototype); 447 448 function Response(bodyInit, options) { 449 if (!(this instanceof Response)) { 450 throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.') 451 } 452 if (!options) { 453 options = {}; 454 } 455 456 this.type = 'default'; 457 this.status = options.status === undefined ? 200 : options.status; 458 this.ok = this.status >= 200 && this.status < 300; 459 this.statusText = options.statusText === undefined ? '' : '' + options.statusText; 460 this.headers = new Headers(options.headers); 461 this.url = options.url || ''; 462 this._initBody(bodyInit); 463 } 464 465 Body.call(Response.prototype); 466 467 Response.prototype.clone = function() { 468 return new Response(this._bodyInit, { 469 status: this.status, 470 statusText: this.statusText, 471 headers: new Headers(this.headers), 472 url: this.url 473 }) 474 }; 475 476 Response.error = function() { 477 var response = new Response(null, {status: 0, statusText: ''}); 478 response.type = 'error'; 479 return response 480 }; 481 482 var redirectStatuses = [301, 302, 303, 307, 308]; 483 484 Response.redirect = function(url, status) { 485 if (redirectStatuses.indexOf(status) === -1) { 486 throw new RangeError('Invalid status code') 487 } 488 489 return new Response(null, {status: status, headers: {location: url}}) 490 }; 491 492 exports.DOMException = global.DOMException; 493 try { 494 new exports.DOMException(); 495 } catch (err) { 496 exports.DOMException = function(message, name) { 497 this.message = message; 498 this.name = name; 499 var error = Error(message); 500 this.stack = error.stack; 501 }; 502 exports.DOMException.prototype = Object.create(Error.prototype); 503 exports.DOMException.prototype.constructor = exports.DOMException; 504 } 505 506 function fetch(input, init) { 507 return new Promise(function(resolve, reject) { 508 var request = new Request(input, init); 509 510 if (request.signal && request.signal.aborted) { 511 return reject(new exports.DOMException('Aborted', 'AbortError')) 512 } 513 514 var xhr = new XMLHttpRequest(); 515 516 function abortXhr() { 517 xhr.abort(); 518 } 519 520 xhr.onload = function() { 521 var options = { 522 status: xhr.status, 523 statusText: xhr.statusText, 524 headers: parseHeaders(xhr.getAllResponseHeaders() || '') 525 }; 526 options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL'); 527 var body = 'response' in xhr ? xhr.response : xhr.responseText; 528 setTimeout(function() { 529 resolve(new Response(body, options)); 530 }, 0); 531 }; 532 533 xhr.onerror = function() { 534 setTimeout(function() { 535 reject(new TypeError('Network request failed')); 536 }, 0); 537 }; 538 539 xhr.ontimeout = function() { 540 setTimeout(function() { 541 reject(new TypeError('Network request failed')); 542 }, 0); 543 }; 544 545 xhr.onabort = function() { 546 setTimeout(function() { 547 reject(new exports.DOMException('Aborted', 'AbortError')); 548 }, 0); 549 }; 550 551 function fixUrl(url) { 552 try { 553 return url === '' && global.location.href ? global.location.href : url 554 } catch (e) { 555 return url 556 } 557 } 558 559 xhr.open(request.method, fixUrl(request.url), true); 560 561 if (request.credentials === 'include') { 562 xhr.withCredentials = true; 563 } else if (request.credentials === 'omit') { 564 xhr.withCredentials = false; 565 } 566 567 if ('responseType' in xhr) { 568 if (support.blob) { 569 xhr.responseType = 'blob'; 570 } else if ( 571 support.arrayBuffer && 572 request.headers.get('Content-Type') && 573 request.headers.get('Content-Type').indexOf('application/octet-stream') !== -1 574 ) { 575 xhr.responseType = 'arraybuffer'; 576 } 577 } 578 579 if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers)) { 580 Object.getOwnPropertyNames(init.headers).forEach(function(name) { 581 xhr.setRequestHeader(name, normalizeValue(init.headers[name])); 582 }); 583 } else { 584 request.headers.forEach(function(value, name) { 585 xhr.setRequestHeader(name, value); 586 }); 587 } 588 589 if (request.signal) { 590 request.signal.addEventListener('abort', abortXhr); 591 592 xhr.onreadystatechange = function() { 593 // DONE (success or failure) 594 if (xhr.readyState === 4) { 595 request.signal.removeEventListener('abort', abortXhr); 596 } 597 }; 598 } 599 600 xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit); 601 }) 602 } 603 604 fetch.polyfill = true; 605 606 if (!global.fetch) { 607 global.fetch = fetch; 608 global.Headers = Headers; 609 global.Request = Request; 610 global.Response = Response; 611 } 612 613 exports.Headers = Headers; 614 exports.Request = Request; 615 exports.Response = Response; 616 exports.fetch = fetch; 617 618 Object.defineProperty(exports, '__esModule', { value: true }); 619 620 })));
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Thu Nov 21 01:00:03 2024 | Cross-referenced by PHPXref 0.7.1 |