From dbb1d98290269704f285bf40972aa5c2a7068ab1 Mon Sep 17 00:00:00 2001 From: desrosj Date: Fri, 11 Aug 2023 14:44:18 +0000 Subject: [PATCH] External Libraries: Update the `whatwg-fetch` polyfill library. This updates the `whatwg-fetch` library from version `3.6.2` to `3.6.17`, the latest current version. This library is included and registered within WordPress as the `wp-polyfill-fetch` script and is no longer used by WordPress itself. Props rajinsharwar, hareesh-pillai. Fixes #59066. Built from https://develop.svn.wordpress.org/trunk@56389 git-svn-id: http://core.svn.wordpress.org/trunk@55901 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- .../js/dist/vendor/wp-polyfill-fetch.js | 120 +++++++++++------- .../js/dist/vendor/wp-polyfill-fetch.min.js | 2 +- wp-includes/script-loader.php | 2 +- wp-includes/version.php | 2 +- 4 files changed, 78 insertions(+), 48 deletions(-) diff --git a/wp-includes/js/dist/vendor/wp-polyfill-fetch.js b/wp-includes/js/dist/vendor/wp-polyfill-fetch.js index 8c3269e3c7..d5dc3998b6 100644 --- a/wp-includes/js/dist/vendor/wp-polyfill-fetch.js +++ b/wp-includes/js/dist/vendor/wp-polyfill-fetch.js @@ -4,17 +4,20 @@ (factory((global.WHATWGFetch = {}))); }(this, (function (exports) { 'use strict'; - var global = + /* eslint-disable no-prototype-builtins */ + var g = (typeof globalThis !== 'undefined' && globalThis) || (typeof self !== 'undefined' && self) || - (typeof global !== 'undefined' && global); + // eslint-disable-next-line no-undef + (typeof global !== 'undefined' && global) || + {}; var support = { - searchParams: 'URLSearchParams' in global, - iterable: 'Symbol' in global && 'iterator' in Symbol, + searchParams: 'URLSearchParams' in g, + iterable: 'Symbol' in g && 'iterator' in Symbol, blob: - 'FileReader' in global && - 'Blob' in global && + 'FileReader' in g && + 'Blob' in g && (function() { try { new Blob(); @@ -23,8 +26,8 @@ return false } })(), - formData: 'FormData' in global, - arrayBuffer: 'ArrayBuffer' in global + formData: 'FormData' in g, + arrayBuffer: 'ArrayBuffer' in g }; function isDataView(obj) { @@ -95,6 +98,9 @@ }, this); } else if (Array.isArray(headers)) { headers.forEach(function(header) { + if (header.length != 2) { + throw new TypeError('Headers constructor: expected name/value pair to be length 2, found' + header.length) + } this.append(header[0], header[1]); }, this); } else if (headers) { @@ -165,6 +171,7 @@ } function consumed(body) { + if (body._noBody) return if (body.bodyUsed) { return Promise.reject(new TypeError('Already read')) } @@ -192,7 +199,9 @@ function readBlobAsText(blob) { var reader = new FileReader(); var promise = fileReaderReady(reader); - reader.readAsText(blob); + var match = /charset=([A-Za-z0-9_-]+)/.exec(blob.type); + var encoding = match ? match[1] : 'utf-8'; + reader.readAsText(blob, encoding); return promise } @@ -230,9 +239,11 @@ semantic of setting Request.bodyUsed in the constructor before _initBody is called. */ + // eslint-disable-next-line no-self-assign this.bodyUsed = this.bodyUsed; this._bodyInit = body; if (!body) { + this._noBody = true; this._bodyText = ''; } else if (typeof body === 'string') { this._bodyText = body; @@ -280,29 +291,30 @@ return Promise.resolve(new Blob([this._bodyText])) } }; - - this.arrayBuffer = function() { - if (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) - } - }; } + this.arrayBuffer = function() { + if (this._bodyArrayBuffer) { + var isConsumed = consumed(this); + if (isConsumed) { + return isConsumed + } else 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 if (support.blob) { + return this.blob().then(readBlobAsArrayBuffer) + } else { + throw new Error('could not read as ArrayBuffer') + } + }; + this.text = function() { var rejected = consumed(this); if (rejected) { @@ -334,7 +346,7 @@ } // HTTP methods whose capitalization should be normalized - var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']; + var methods = ['CONNECT', 'DELETE', 'GET', 'HEAD', 'OPTIONS', 'PATCH', 'POST', 'PUT', 'TRACE']; function normalizeMethod(method) { var upcased = method.toUpperCase(); @@ -375,7 +387,12 @@ } this.method = normalizeMethod(options.method || this.method || 'GET'); this.mode = options.mode || this.mode || null; - this.signal = options.signal || this.signal; + this.signal = options.signal || this.signal || (function () { + if ('AbortController' in g) { + var ctrl = new AbortController(); + return ctrl.signal; + } + }()); this.referrer = null; if ((this.method === 'GET' || this.method === 'HEAD') && body) { @@ -437,7 +454,11 @@ var key = parts.shift().trim(); if (key) { var value = parts.join(':').trim(); - headers.append(key, value); + try { + headers.append(key, value); + } catch (error) { + console.warn('Response ' + error.message); + } } }); return headers @@ -455,6 +476,9 @@ this.type = 'default'; this.status = options.status === undefined ? 200 : options.status; + if (this.status < 200 || this.status > 599) { + throw new RangeError("Failed to construct 'Response': The status provided (0) is outside the range [200, 599].") + } this.ok = this.status >= 200 && this.status < 300; this.statusText = options.statusText === undefined ? '' : '' + options.statusText; this.headers = new Headers(options.headers); @@ -474,7 +498,8 @@ }; Response.error = function() { - var response = new Response(null, {status: 0, statusText: ''}); + var response = new Response(null, {status: 200, statusText: ''}); + response.status = 0; response.type = 'error'; return response }; @@ -489,7 +514,7 @@ return new Response(null, {status: status, headers: {location: url}}) }; - exports.DOMException = global.DOMException; + exports.DOMException = g.DOMException; try { new exports.DOMException(); } catch (err) { @@ -550,7 +575,7 @@ function fixUrl(url) { try { - return url === '' && global.location.href ? global.location.href : url + return url === '' && g.location.href ? g.location.href : url } catch (e) { return url } @@ -568,18 +593,23 @@ 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 + support.arrayBuffer ) { xhr.responseType = 'arraybuffer'; } } - if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers)) { + if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers || (g.Headers && init.headers instanceof g.Headers))) { + var names = []; Object.getOwnPropertyNames(init.headers).forEach(function(name) { + names.push(normalizeName(name)); xhr.setRequestHeader(name, normalizeValue(init.headers[name])); }); + request.headers.forEach(function(value, name) { + if (names.indexOf(name) === -1) { + xhr.setRequestHeader(name, value); + } + }); } else { request.headers.forEach(function(value, name) { xhr.setRequestHeader(name, value); @@ -603,11 +633,11 @@ fetch.polyfill = true; - if (!global.fetch) { - global.fetch = fetch; - global.Headers = Headers; - global.Request = Request; - global.Response = Response; + if (!g.fetch) { + g.fetch = fetch; + g.Headers = Headers; + g.Request = Request; + g.Response = Response; } exports.Headers = Headers; diff --git a/wp-includes/js/dist/vendor/wp-polyfill-fetch.min.js b/wp-includes/js/dist/vendor/wp-polyfill-fetch.min.js index 9232e40974..a0764ec920 100644 --- a/wp-includes/js/dist/vendor/wp-polyfill-fetch.min.js +++ b/wp-includes/js/dist/vendor/wp-polyfill-fetch.min.js @@ -1 +1 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(t.WHATWGFetch={})}(this,(function(t){"use strict";var e,r,o="undefined"!=typeof globalThis&&globalThis||"undefined"!=typeof self&&self||void 0!==o&&o,n="URLSearchParams"in o,i="Symbol"in o&&"iterator"in Symbol,s="FileReader"in o&&"Blob"in o&&function(){try{return new Blob,!0}catch(t){return!1}}(),a="FormData"in o,h="ArrayBuffer"in o;function u(t){if("string"!=typeof t&&(t=String(t)),/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(t)||""===t)throw new TypeError('Invalid character in header field name: "'+t+'"');return t.toLowerCase()}function f(t){return"string"!=typeof t?String(t):t}function c(t){var e={next:function(){var e=t.shift();return{done:void 0===e,value:e}}};return i&&(e[Symbol.iterator]=function(){return e}),e}function d(t){this.map={},t instanceof d?t.forEach((function(t,e){this.append(e,t)}),this):Array.isArray(t)?t.forEach((function(t){this.append(t[0],t[1])}),this):t&&Object.getOwnPropertyNames(t).forEach((function(e){this.append(e,t[e])}),this)}function y(t){if(t.bodyUsed)return Promise.reject(new TypeError("Already read"));t.bodyUsed=!0}function p(t){return new Promise((function(e,r){t.onload=function(){e(t.result)},t.onerror=function(){r(t.error)}}))}function l(t){var e=new FileReader,r=p(e);return e.readAsArrayBuffer(t),r}function b(t){var e;return t.slice?t.slice(0):((e=new Uint8Array(t.byteLength)).set(new Uint8Array(t)),e.buffer)}function m(){return this.bodyUsed=!1,this._initBody=function(t){var e;this.bodyUsed=this.bodyUsed,(this._bodyInit=t)?"string"==typeof t?this._bodyText=t:s&&Blob.prototype.isPrototypeOf(t)?this._bodyBlob=t:a&&FormData.prototype.isPrototypeOf(t)?this._bodyFormData=t:n&&URLSearchParams.prototype.isPrototypeOf(t)?this._bodyText=t.toString():h&&s&&(e=t)&&DataView.prototype.isPrototypeOf(e)?(this._bodyArrayBuffer=b(t.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):h&&(ArrayBuffer.prototype.isPrototypeOf(t)||r(t))?this._bodyArrayBuffer=b(t):this._bodyText=t=Object.prototype.toString.call(t):this._bodyText="",this.headers.get("content-type")||("string"==typeof t?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):n&&URLSearchParams.prototype.isPrototypeOf(t)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},s&&(this.blob=function(){var t=y(this);if(t)return t;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?y(this)||(ArrayBuffer.isView(this._bodyArrayBuffer)?Promise.resolve(this._bodyArrayBuffer.buffer.slice(this._bodyArrayBuffer.byteOffset,this._bodyArrayBuffer.byteOffset+this._bodyArrayBuffer.byteLength)):Promise.resolve(this._bodyArrayBuffer)):this.blob().then(l)}),this.text=function(){var t,e,r=y(this);if(r)return r;if(this._bodyBlob)return r=this._bodyBlob,e=p(t=new FileReader),t.readAsText(r),e;if(this._bodyArrayBuffer)return Promise.resolve(function(t){for(var e=new Uint8Array(t),r=new Array(e.length),o=0;o '0.13.11', 'moment' => '2.29.4', 'lodash' => '4.17.19', - 'wp-polyfill-fetch' => '3.6.2', + 'wp-polyfill-fetch' => '3.6.17', 'wp-polyfill-formdata' => '4.0.10', 'wp-polyfill-node-contains' => '4.6.0', 'wp-polyfill-url' => '3.6.4', diff --git a/wp-includes/version.php b/wp-includes/version.php index b8fe264739..250a02af52 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -16,7 +16,7 @@ * * @global string $wp_version */ -$wp_version = '6.4-alpha-56388'; +$wp_version = '6.4-alpha-56389'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.