--- a/wp/wp-includes/js/dist/vendor/wp-polyfill-fetch.js Wed Sep 21 18:19:35 2022 +0200
+++ b/wp/wp-includes/js/dist/vendor/wp-polyfill-fetch.js Tue Sep 27 16:37:53 2022 +0200
@@ -4,12 +4,17 @@
(factory((global.WHATWGFetch = {})));
}(this, (function (exports) { 'use strict';
+ var global =
+ (typeof globalThis !== 'undefined' && globalThis) ||
+ (typeof self !== 'undefined' && self) ||
+ (typeof global !== 'undefined' && global);
+
var support = {
- searchParams: 'URLSearchParams' in self,
- iterable: 'Symbol' in self && 'iterator' in Symbol,
+ searchParams: 'URLSearchParams' in global,
+ iterable: 'Symbol' in global && 'iterator' in Symbol,
blob:
- 'FileReader' in self &&
- 'Blob' in self &&
+ 'FileReader' in global &&
+ 'Blob' in global &&
(function() {
try {
new Blob();
@@ -18,8 +23,8 @@
return false
}
})(),
- formData: 'FormData' in self,
- arrayBuffer: 'ArrayBuffer' in self
+ formData: 'FormData' in global,
+ arrayBuffer: 'ArrayBuffer' in global
};
function isDataView(obj) {
@@ -50,8 +55,8 @@
if (typeof name !== 'string') {
name = String(name);
}
- if (/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(name)) {
- throw new TypeError('Invalid character in header field name')
+ if (/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {
+ throw new TypeError('Invalid character in header field name: "' + name + '"')
}
return name.toLowerCase()
}
@@ -215,6 +220,17 @@
this.bodyUsed = false;
this._initBody = function(body) {
+ /*
+ fetch-mock wraps the Response object in an ES6 Proxy to
+ provide useful test harness features such as flush. However, on
+ ES5 browsers without fetch or Proxy support pollyfills must be used;
+ the proxy-pollyfill is unable to proxy an attribute unless it exists
+ on the object before the Proxy is created. This change ensures
+ Response.bodyUsed exists on the instance, while maintaining the
+ semantic of setting Request.bodyUsed in the constructor before
+ _initBody is called.
+ */
+ this.bodyUsed = this.bodyUsed;
this._bodyInit = body;
if (!body) {
this._bodyText = '';
@@ -267,7 +283,20 @@
this.arrayBuffer = function() {
if (this._bodyArrayBuffer) {
- return consumed(this) || Promise.resolve(this._bodyArrayBuffer)
+ var isConsumed = consumed(this);
+ if (isConsumed) {
+ return isConsumed
+ }
+ if (ArrayBuffer.isView(this._bodyArrayBuffer)) {
+ return Promise.resolve(
+ this._bodyArrayBuffer.buffer.slice(
+ this._bodyArrayBuffer.byteOffset,
+ this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength
+ )
+ )
+ } else {
+ return Promise.resolve(this._bodyArrayBuffer)
+ }
} else {
return this.blob().then(readBlobAsArrayBuffer)
}
@@ -313,6 +342,10 @@
}
function Request(input, options) {
+ if (!(this instanceof Request)) {
+ throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.')
+ }
+
options = options || {};
var body = options.body;
@@ -349,6 +382,21 @@
throw new TypeError('Body not allowed for GET or HEAD requests')
}
this._initBody(body);
+
+ if (this.method === 'GET' || this.method === 'HEAD') {
+ if (options.cache === 'no-store' || options.cache === 'no-cache') {
+ // Search for a '_' parameter in the query string
+ var reParamSearch = /([?&])_=[^&]*/;
+ if (reParamSearch.test(this.url)) {
+ // If it already exists then set the value with the current time
+ this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime());
+ } else {
+ // Otherwise add a new '_' parameter to the end with the current time
+ var reQueryString = /\?/;
+ this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime();
+ }
+ }
+ }
}
Request.prototype.clone = function() {
@@ -376,20 +424,31 @@
// Replace instances of \r\n and \n followed by at least one space or horizontal tab with a space
// https://tools.ietf.org/html/rfc7230#section-3.2
var preProcessedHeaders = rawHeaders.replace(/\r?\n[\t ]+/g, ' ');
- preProcessedHeaders.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);
- }
- });
+ // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill
+ // https://github.com/github/fetch/issues/748
+ // https://github.com/zloirock/core-js/issues/751
+ preProcessedHeaders
+ .split('\r')
+ .map(function(header) {
+ return header.indexOf('\n') === 0 ? header.substr(1, header.length) : header
+ })
+ .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 (!(this instanceof Response)) {
+ throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.')
+ }
if (!options) {
options = {};
}
@@ -397,7 +456,7 @@
this.type = 'default';
this.status = options.status === undefined ? 200 : options.status;
this.ok = this.status >= 200 && this.status < 300;
- this.statusText = 'statusText' in options ? options.statusText : 'OK';
+ this.statusText = options.statusText === undefined ? '' : '' + options.statusText;
this.headers = new Headers(options.headers);
this.url = options.url || '';
this._initBody(bodyInit);
@@ -430,7 +489,7 @@
return new Response(null, {status: status, headers: {location: url}})
};
- exports.DOMException = self.DOMException;
+ exports.DOMException = global.DOMException;
try {
new exports.DOMException();
} catch (err) {
@@ -466,22 +525,38 @@
};
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));
+ setTimeout(function() {
+ resolve(new Response(body, options));
+ }, 0);
};
xhr.onerror = function() {
- reject(new TypeError('Network request failed'));
+ setTimeout(function() {
+ reject(new TypeError('Network request failed'));
+ }, 0);
};
xhr.ontimeout = function() {
- reject(new TypeError('Network request failed'));
+ setTimeout(function() {
+ reject(new TypeError('Network request failed'));
+ }, 0);
};
xhr.onabort = function() {
- reject(new exports.DOMException('Aborted', 'AbortError'));
+ setTimeout(function() {
+ reject(new exports.DOMException('Aborted', 'AbortError'));
+ }, 0);
};
- xhr.open(request.method, request.url, true);
+ function fixUrl(url) {
+ try {
+ return url === '' && global.location.href ? global.location.href : url
+ } catch (e) {
+ return url
+ }
+ }
+
+ xhr.open(request.method, fixUrl(request.url), true);
if (request.credentials === 'include') {
xhr.withCredentials = true;
@@ -489,13 +564,27 @@
xhr.withCredentials = false;
}
- if ('responseType' in xhr && support.blob) {
- xhr.responseType = 'blob';
+ if ('responseType' in xhr) {
+ if (support.blob) {
+ xhr.responseType = 'blob';
+ } else if (
+ support.arrayBuffer &&
+ request.headers.get('Content-Type') &&
+ request.headers.get('Content-Type').indexOf('application/octet-stream') !== -1
+ ) {
+ xhr.responseType = 'arraybuffer';
+ }
}
- request.headers.forEach(function(value, name) {
- xhr.setRequestHeader(name, value);
- });
+ if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers)) {
+ Object.getOwnPropertyNames(init.headers).forEach(function(name) {
+ xhr.setRequestHeader(name, normalizeValue(init.headers[name]));
+ });
+ } else {
+ request.headers.forEach(function(value, name) {
+ xhr.setRequestHeader(name, value);
+ });
+ }
if (request.signal) {
request.signal.addEventListener('abort', abortXhr);
@@ -514,11 +603,11 @@
fetch.polyfill = true;
- if (!self.fetch) {
- self.fetch = fetch;
- self.Headers = Headers;
- self.Request = Request;
- self.Response = Response;
+ if (!global.fetch) {
+ global.fetch = fetch;
+ global.Headers = Headers;
+ global.Request = Request;
+ global.Response = Response;
}
exports.Headers = Headers;