--- a/wp/wp-includes/js/dist/api-fetch.js Tue Dec 15 15:52:01 2020 +0100
+++ b/wp/wp-includes/js/dist/api-fetch.js Wed Sep 21 18:19:35 2022 +0200
@@ -82,123 +82,55 @@
/******/
/******/
/******/ // Load entry module and return exports
-/******/ return __webpack_require__(__webpack_require__.s = 451);
+/******/ return __webpack_require__(__webpack_require__.s = "jqrR");
/******/ })
/************************************************************************/
/******/ ({
-/***/ 1:
+/***/ "Mmq9":
/***/ (function(module, exports) {
-(function() { module.exports = this["wp"]["i18n"]; }());
-
-/***/ }),
-
-/***/ 15:
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _objectWithoutProperties; });
-/* harmony import */ var _objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(41);
-
-function _objectWithoutProperties(source, excluded) {
- if (source == null) return {};
- var target = Object(_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(source, excluded);
- var key, i;
-
- if (Object.getOwnPropertySymbols) {
- var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
-
- for (i = 0; i < sourceSymbolKeys.length; i++) {
- key = sourceSymbolKeys[i];
- if (excluded.indexOf(key) >= 0) continue;
- if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
- target[key] = source[key];
- }
- }
-
- return target;
-}
+(function() { module.exports = window["wp"]["url"]; }());
/***/ }),
-/***/ 24:
-/***/ (function(module, exports) {
-
-(function() { module.exports = this["regeneratorRuntime"]; }());
-
-/***/ }),
-
-/***/ 31:
-/***/ (function(module, exports) {
-
-(function() { module.exports = this["wp"]["url"]; }());
-
-/***/ }),
-
-/***/ 41:
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _objectWithoutPropertiesLoose; });
-function _objectWithoutPropertiesLoose(source, excluded) {
- if (source == null) return {};
- var target = {};
- var sourceKeys = Object.keys(source);
- var key, i;
-
- for (i = 0; i < sourceKeys.length; i++) {
- key = sourceKeys[i];
- if (excluded.indexOf(key) >= 0) continue;
- target[key] = source[key];
- }
-
- return target;
-}
-
-/***/ }),
-
-/***/ 451:
+/***/ "jqrR":
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
// ESM COMPAT FLAG
__webpack_require__.r(__webpack_exports__);
-// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/defineProperty.js
-var defineProperty = __webpack_require__(5);
-
-// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js
-var objectWithoutProperties = __webpack_require__(15);
-
-// EXTERNAL MODULE: external {"this":["wp","i18n"]}
-var external_this_wp_i18n_ = __webpack_require__(1);
+// EXTERNAL MODULE: external ["wp","i18n"]
+var external_wp_i18n_ = __webpack_require__("l3Sj");
// CONCATENATED MODULE: ./node_modules/@wordpress/api-fetch/build-module/middlewares/nonce.js
-
-
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
-
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { Object(defineProperty["a" /* default */])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
-
+/**
+ * @param {string} nonce
+ * @return {import('../types').APIFetchMiddleware & { nonce: string }} A middleware to enhance a request with a nonce.
+ */
function createNonceMiddleware(nonce) {
- function middleware(options, next) {
- var _options$headers = options.headers,
- headers = _options$headers === void 0 ? {} : _options$headers; // If an 'X-WP-Nonce' header (or any case-insensitive variation
+ /**
+ * @type {import('../types').APIFetchMiddleware & { nonce: string }}
+ */
+ const middleware = (options, next) => {
+ const {
+ headers = {}
+ } = options; // If an 'X-WP-Nonce' header (or any case-insensitive variation
// thereof) was specified, no need to add a nonce header.
- for (var headerName in headers) {
- if (headerName.toLowerCase() === 'x-wp-nonce') {
+ for (const headerName in headers) {
+ if (headerName.toLowerCase() === 'x-wp-nonce' && headers[headerName] === middleware.nonce) {
return next(options);
}
}
- return next(_objectSpread({}, options, {
- headers: _objectSpread({}, headers, {
+ return next({ ...options,
+ headers: { ...headers,
'X-WP-Nonce': middleware.nonce
- })
- }));
- }
+ }
+ });
+ };
middleware.nonce = nonce;
return middleware;
@@ -207,15 +139,12 @@
/* harmony default export */ var nonce = (createNonceMiddleware);
// CONCATENATED MODULE: ./node_modules/@wordpress/api-fetch/build-module/middlewares/namespace-endpoint.js
-
-
-function namespace_endpoint_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
-
-function namespace_endpoint_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { namespace_endpoint_ownKeys(Object(source), true).forEach(function (key) { Object(defineProperty["a" /* default */])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { namespace_endpoint_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
-
-var namespaceAndEndpointMiddleware = function namespaceAndEndpointMiddleware(options, next) {
- var path = options.path;
- var namespaceTrimmed, endpointTrimmed;
+/**
+ * @type {import('../types').APIFetchMiddleware}
+ */
+const namespaceAndEndpointMiddleware = (options, next) => {
+ let path = options.path;
+ let namespaceTrimmed, endpointTrimmed;
if (typeof options.namespace === 'string' && typeof options.endpoint === 'string') {
namespaceTrimmed = options.namespace.replace(/^\/|\/$/g, '');
@@ -230,57 +159,53 @@
delete options.namespace;
delete options.endpoint;
- return next(namespace_endpoint_objectSpread({}, options, {
- path: path
- }));
+ return next({ ...options,
+ path
+ });
};
/* harmony default export */ var namespace_endpoint = (namespaceAndEndpointMiddleware);
// CONCATENATED MODULE: ./node_modules/@wordpress/api-fetch/build-module/middlewares/root-url.js
-
-
-function root_url_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
-
-function root_url_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { root_url_ownKeys(Object(source), true).forEach(function (key) { Object(defineProperty["a" /* default */])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { root_url_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
-
/**
* Internal dependencies
*/
-
-var root_url_createRootURLMiddleware = function createRootURLMiddleware(rootURL) {
- return function (options, next) {
- return namespace_endpoint(options, function (optionsWithPath) {
- var url = optionsWithPath.url;
- var path = optionsWithPath.path;
- var apiRoot;
-
- if (typeof path === 'string') {
- apiRoot = rootURL;
+/**
+ * @param {string} rootURL
+ * @return {import('../types').APIFetchMiddleware} Root URL middleware.
+ */
- if (-1 !== rootURL.indexOf('?')) {
- path = path.replace('?', '&');
- }
+const createRootURLMiddleware = rootURL => (options, next) => {
+ return namespace_endpoint(options, optionsWithPath => {
+ let url = optionsWithPath.url;
+ let path = optionsWithPath.path;
+ let apiRoot;
- path = path.replace(/^\//, ''); // API root may already include query parameter prefix if site is
- // configured to use plain permalinks.
+ if (typeof path === 'string') {
+ apiRoot = rootURL;
- if ('string' === typeof apiRoot && -1 !== apiRoot.indexOf('?')) {
- path = path.replace('?', '&');
- }
-
- url = apiRoot + path;
+ if (-1 !== rootURL.indexOf('?')) {
+ path = path.replace('?', '&');
}
- return next(root_url_objectSpread({}, optionsWithPath, {
- url: url
- }));
+ path = path.replace(/^\//, ''); // API root may already include query parameter prefix if site is
+ // configured to use plain permalinks.
+
+ if ('string' === typeof apiRoot && -1 !== apiRoot.indexOf('?')) {
+ path = path.replace('?', '&');
+ }
+
+ url = apiRoot + path;
+ }
+
+ return next({ ...optionsWithPath,
+ url
});
- };
+ });
};
-/* harmony default export */ var root_url = (root_url_createRootURLMiddleware);
+/* harmony default export */ var root_url = (createRootURLMiddleware);
// CONCATENATED MODULE: ./node_modules/@wordpress/api-fetch/build-module/middlewares/preloading.js
/**
@@ -293,9 +218,9 @@
* @return {string} Normalized path.
*/
function getStablePath(path) {
- var splitted = path.split('?');
- var query = splitted[1];
- var base = splitted[0];
+ const splitted = path.split('?');
+ const query = splitted[1];
+ const base = splitted[0];
if (!query) {
return base;
@@ -304,35 +229,43 @@
return base + '?' + query // [ 'b=1', 'c=2', 'a=5' ]
.split('&') // [ [ 'b, '1' ], [ 'c', '2' ], [ 'a', '5' ] ]
- .map(function (entry) {
- return entry.split('=');
- }) // [ [ 'a', '5' ], [ 'b, '1' ], [ 'c', '2' ] ]
- .sort(function (a, b) {
- return a[0].localeCompare(b[0]);
- }) // [ 'a=5', 'b=1', 'c=2' ]
- .map(function (pair) {
- return pair.join('=');
- }) // 'a=5&b=1&c=2'
+ .map(entry => entry.split('=')) // [ [ 'a', '5' ], [ 'b, '1' ], [ 'c', '2' ] ]
+ .sort((a, b) => a[0].localeCompare(b[0])) // [ 'a=5', 'b=1', 'c=2' ]
+ .map(pair => pair.join('=')) // 'a=5&b=1&c=2'
.join('&');
}
+/**
+ * @param {Record<string, any>} preloadedData
+ * @return {import('../types').APIFetchMiddleware} Preloading middleware.
+ */
function createPreloadingMiddleware(preloadedData) {
- var cache = Object.keys(preloadedData).reduce(function (result, path) {
+ const cache = Object.keys(preloadedData).reduce((result, path) => {
result[getStablePath(path)] = preloadedData[path];
return result;
- }, {});
- return function (options, next) {
- var _options$parse = options.parse,
- parse = _options$parse === void 0 ? true : _options$parse;
+ },
+ /** @type {Record<string, any>} */
+ {});
+ return (options, next) => {
+ const {
+ parse = true
+ } = options;
if (typeof options.path === 'string') {
- var method = options.method || 'GET';
- var path = getStablePath(options.path);
+ const method = options.method || 'GET';
+ const path = getStablePath(options.path);
+
+ if ('GET' === method && cache[path]) {
+ const cacheData = cache[path]; // Unsetting the cache key ensures that the data is only preloaded a single time
- if (parse && 'GET' === method && cache[path]) {
- return Promise.resolve(cache[path].body);
+ delete cache[path];
+ return Promise.resolve(parse ? cacheData.body : new window.Response(JSON.stringify(cacheData.body), {
+ status: 200,
+ statusText: 'OK',
+ headers: cacheData.headers
+ }));
} else if ('OPTIONS' === method && cache[method] && cache[method][path]) {
- return Promise.resolve(cache[method][path]);
+ return Promise.resolve(parse ? cache[method][path].body : cache[method][path]);
}
}
@@ -342,26 +275,10 @@
/* harmony default export */ var preloading = (createPreloadingMiddleware);
-// EXTERNAL MODULE: external {"this":"regeneratorRuntime"}
-var external_this_regeneratorRuntime_ = __webpack_require__(24);
-var external_this_regeneratorRuntime_default = /*#__PURE__*/__webpack_require__.n(external_this_regeneratorRuntime_);
-
-// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js
-var asyncToGenerator = __webpack_require__(50);
-
-// EXTERNAL MODULE: external {"this":["wp","url"]}
-var external_this_wp_url_ = __webpack_require__(31);
+// EXTERNAL MODULE: external ["wp","url"]
+var external_wp_url_ = __webpack_require__("Mmq9");
// CONCATENATED MODULE: ./node_modules/@wordpress/api-fetch/build-module/middlewares/fetch-all-middleware.js
-
-
-
-
-
-function fetch_all_middleware_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
-
-function fetch_all_middleware_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { fetch_all_middleware_ownKeys(Object(source), true).forEach(function (key) { Object(defineProperty["a" /* default */])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { fetch_all_middleware_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
-
/**
* WordPress dependencies
*/
@@ -370,169 +287,142 @@
* Internal dependencies
*/
- // Apply query arguments to both URL and Path, whichever is present.
+
+/**
+ * Apply query arguments to both URL and Path, whichever is present.
+ *
+ * @param {import('../types').APIFetchOptions} props
+ * @param {Record<string, string | number>} queryArgs
+ * @return {import('../types').APIFetchOptions} The request with the modified query args
+ */
-var fetch_all_middleware_modifyQuery = function modifyQuery(_ref, queryArgs) {
- var path = _ref.path,
- url = _ref.url,
- options = Object(objectWithoutProperties["a" /* default */])(_ref, ["path", "url"]);
-
- return fetch_all_middleware_objectSpread({}, options, {
- url: url && Object(external_this_wp_url_["addQueryArgs"])(url, queryArgs),
- path: path && Object(external_this_wp_url_["addQueryArgs"])(path, queryArgs)
- });
-}; // Duplicates parsing functionality from apiFetch.
+const modifyQuery = ({
+ path,
+ url,
+ ...options
+}, queryArgs) => ({ ...options,
+ url: url && Object(external_wp_url_["addQueryArgs"])(url, queryArgs),
+ path: path && Object(external_wp_url_["addQueryArgs"])(path, queryArgs)
+});
+/**
+ * Duplicates parsing functionality from apiFetch.
+ *
+ * @param {Response} response
+ * @return {Promise<any>} Parsed response json.
+ */
-var parseResponse = function parseResponse(response) {
- return response.json ? response.json() : Promise.reject(response);
-};
+const parseResponse = response => response.json ? response.json() : Promise.reject(response);
+/**
+ * @param {string | null} linkHeader
+ * @return {{ next?: string }} The parsed link header.
+ */
-var parseLinkHeader = function parseLinkHeader(linkHeader) {
+
+const parseLinkHeader = linkHeader => {
if (!linkHeader) {
return {};
}
- var match = linkHeader.match(/<([^>]+)>; rel="next"/);
+ const match = linkHeader.match(/<([^>]+)>; rel="next"/);
return match ? {
next: match[1]
} : {};
};
+/**
+ * @param {Response} response
+ * @return {string | undefined} The next page URL.
+ */
-var getNextPageUrl = function getNextPageUrl(response) {
- var _parseLinkHeader = parseLinkHeader(response.headers.get('link')),
- next = _parseLinkHeader.next;
+const getNextPageUrl = response => {
+ const {
+ next
+ } = parseLinkHeader(response.headers.get('link'));
return next;
};
+/**
+ * @param {import('../types').APIFetchOptions} options
+ * @return {boolean} True if the request contains an unbounded query.
+ */
-var requestContainsUnboundedQuery = function requestContainsUnboundedQuery(options) {
- var pathIsUnbounded = options.path && options.path.indexOf('per_page=-1') !== -1;
- var urlIsUnbounded = options.url && options.url.indexOf('per_page=-1') !== -1;
+
+const requestContainsUnboundedQuery = options => {
+ const pathIsUnbounded = !!options.path && options.path.indexOf('per_page=-1') !== -1;
+ const urlIsUnbounded = !!options.url && options.url.indexOf('per_page=-1') !== -1;
return pathIsUnbounded || urlIsUnbounded;
-}; // The REST API enforces an upper limit on the per_page option. To handle large
-// collections, apiFetch consumers can pass `per_page=-1`; this middleware will
-// then recursively assemble a full response array from all available pages.
+};
+/**
+ * The REST API enforces an upper limit on the per_page option. To handle large
+ * collections, apiFetch consumers can pass `per_page=-1`; this middleware will
+ * then recursively assemble a full response array from all available pages.
+ *
+ * @type {import('../types').APIFetchMiddleware}
+ */
-var fetchAllMiddleware = /*#__PURE__*/function () {
- var _ref2 = Object(asyncToGenerator["a" /* default */])( /*#__PURE__*/external_this_regeneratorRuntime_default.a.mark(function _callee(options, next) {
- var response, results, nextPage, mergedResults, nextResponse, nextResults;
- return external_this_regeneratorRuntime_default.a.wrap(function _callee$(_context) {
- while (1) {
- switch (_context.prev = _context.next) {
- case 0:
- if (!(options.parse === false)) {
- _context.next = 2;
- break;
- }
+const fetchAllMiddleware = async (options, next) => {
+ if (options.parse === false) {
+ // If a consumer has opted out of parsing, do not apply middleware.
+ return next(options);
+ }
- return _context.abrupt("return", next(options));
+ if (!requestContainsUnboundedQuery(options)) {
+ // If neither url nor path is requesting all items, do not apply middleware.
+ return next(options);
+ } // Retrieve requested page of results.
- case 2:
- if (requestContainsUnboundedQuery(options)) {
- _context.next = 4;
- break;
- }
-
- return _context.abrupt("return", next(options));
- case 4:
- _context.next = 6;
- return build_module(fetch_all_middleware_objectSpread({}, fetch_all_middleware_modifyQuery(options, {
- per_page: 100
- }), {
- // Ensure headers are returned for page 1.
- parse: false
- }));
+ const response = await build_module({ ...modifyQuery(options, {
+ per_page: 100
+ }),
+ // Ensure headers are returned for page 1.
+ parse: false
+ });
+ const results = await parseResponse(response);
- case 6:
- response = _context.sent;
- _context.next = 9;
- return parseResponse(response);
-
- case 9:
- results = _context.sent;
-
- if (Array.isArray(results)) {
- _context.next = 12;
- break;
- }
-
- return _context.abrupt("return", results);
-
- case 12:
- nextPage = getNextPageUrl(response);
+ if (!Array.isArray(results)) {
+ // We have no reliable way of merging non-array results.
+ return results;
+ }
- if (nextPage) {
- _context.next = 15;
- break;
- }
-
- return _context.abrupt("return", results);
-
- case 15:
- // Iteratively fetch all remaining pages until no "next" header is found.
- mergedResults = [].concat(results);
+ let nextPage = getNextPageUrl(response);
- case 16:
- if (!nextPage) {
- _context.next = 27;
- break;
- }
+ if (!nextPage) {
+ // There are no further pages to request.
+ return results;
+ } // Iteratively fetch all remaining pages until no "next" header is found.
- _context.next = 19;
- return build_module(fetch_all_middleware_objectSpread({}, options, {
- // Ensure the URL for the next page is used instead of any provided path.
- path: undefined,
- url: nextPage,
- // Ensure we still get headers so we can identify the next page.
- parse: false
- }));
+
+ let mergedResults =
+ /** @type {any[]} */
+ [].concat(results);
- case 19:
- nextResponse = _context.sent;
- _context.next = 22;
- return parseResponse(nextResponse);
-
- case 22:
- nextResults = _context.sent;
- mergedResults = mergedResults.concat(nextResults);
- nextPage = getNextPageUrl(nextResponse);
- _context.next = 16;
- break;
+ while (nextPage) {
+ const nextResponse = await build_module({ ...options,
+ // Ensure the URL for the next page is used instead of any provided path.
+ path: undefined,
+ url: nextPage,
+ // Ensure we still get headers so we can identify the next page.
+ parse: false
+ });
+ const nextResults = await parseResponse(nextResponse);
+ mergedResults = mergedResults.concat(nextResults);
+ nextPage = getNextPageUrl(nextResponse);
+ }
- case 27:
- return _context.abrupt("return", mergedResults);
-
- case 28:
- case "end":
- return _context.stop();
- }
- }
- }, _callee);
- }));
-
- return function fetchAllMiddleware(_x, _x2) {
- return _ref2.apply(this, arguments);
- };
-}();
+ return mergedResults;
+};
/* harmony default export */ var fetch_all_middleware = (fetchAllMiddleware);
// CONCATENATED MODULE: ./node_modules/@wordpress/api-fetch/build-module/middlewares/http-v1.js
-
-
-function http_v1_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
-
-function http_v1_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { http_v1_ownKeys(Object(source), true).forEach(function (key) { Object(defineProperty["a" /* default */])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { http_v1_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
-
/**
* Set of HTTP methods which are eligible to be overridden.
*
- * @type {Set}
+ * @type {Set<string>}
*/
-var OVERRIDE_METHODS = new Set(['PATCH', 'PUT', 'DELETE']);
+const OVERRIDE_METHODS = new Set(['PATCH', 'PUT', 'DELETE']);
/**
* Default request method.
*
@@ -544,34 +434,31 @@
* @type {string}
*/
-var DEFAULT_METHOD = 'GET';
+const DEFAULT_METHOD = 'GET';
/**
* API Fetch middleware which overrides the request method for HTTP v1
* compatibility leveraging the REST API X-HTTP-Method-Override header.
*
- * @param {Object} options Fetch options.
- * @param {Function} next [description]
- *
- * @return {*} The evaluated result of the remaining middleware chain.
+ * @type {import('../types').APIFetchMiddleware}
*/
-function httpV1Middleware(options, next) {
- var _options = options,
- _options$method = _options.method,
- method = _options$method === void 0 ? DEFAULT_METHOD : _options$method;
+const httpV1Middleware = (options, next) => {
+ const {
+ method = DEFAULT_METHOD
+ } = options;
if (OVERRIDE_METHODS.has(method.toUpperCase())) {
- options = http_v1_objectSpread({}, options, {
- headers: http_v1_objectSpread({}, options.headers, {
+ options = { ...options,
+ headers: { ...options.headers,
'X-HTTP-Method-Override': method,
'Content-Type': 'application/json'
- }),
+ },
method: 'POST'
- });
+ };
}
- return next(options, next);
-}
+ return next(options);
+};
/* harmony default export */ var http_v1 = (httpV1Middleware);
@@ -580,22 +467,25 @@
* WordPress dependencies
*/
+/**
+ * @type {import('../types').APIFetchMiddleware}
+ */
-function userLocaleMiddleware(options, next) {
- if (typeof options.url === 'string' && !Object(external_this_wp_url_["hasQueryArg"])(options.url, '_locale')) {
- options.url = Object(external_this_wp_url_["addQueryArgs"])(options.url, {
+const userLocaleMiddleware = (options, next) => {
+ if (typeof options.url === 'string' && !Object(external_wp_url_["hasQueryArg"])(options.url, '_locale')) {
+ options.url = Object(external_wp_url_["addQueryArgs"])(options.url, {
_locale: 'user'
});
}
- if (typeof options.path === 'string' && !Object(external_this_wp_url_["hasQueryArg"])(options.path, '_locale')) {
- options.path = Object(external_this_wp_url_["addQueryArgs"])(options.path, {
+ if (typeof options.path === 'string' && !Object(external_wp_url_["hasQueryArg"])(options.path, '_locale')) {
+ options.path = Object(external_wp_url_["addQueryArgs"])(options.path, {
_locale: 'user'
});
}
- return next(options, next);
-}
+ return next(options);
+};
/* harmony default export */ var user_locale = (userLocaleMiddleware);
@@ -610,12 +500,10 @@
* @param {Response} response
* @param {boolean} shouldParseResponse
*
- * @return {Promise} Parsed response
+ * @return {Promise<any> | null | Response} Parsed response.
*/
-var response_parseResponse = function parseResponse(response) {
- var shouldParseResponse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
-
+const response_parseResponse = (response, shouldParseResponse = true) => {
if (shouldParseResponse) {
if (response.status === 204) {
return null;
@@ -626,18 +514,26 @@
return response;
};
+/**
+ * Calls the `json` function on the Response, throwing an error if the response
+ * doesn't have a json function or if parsing the json itself fails.
+ *
+ * @param {Response} response
+ * @return {Promise<any>} Parsed response.
+ */
-var response_parseJsonAndNormalizeError = function parseJsonAndNormalizeError(response) {
- var invalidJsonError = {
+
+const parseJsonAndNormalizeError = response => {
+ const invalidJsonError = {
code: 'invalid_json',
- message: Object(external_this_wp_i18n_["__"])('The response is not a valid JSON response.')
+ message: Object(external_wp_i18n_["__"])('The response is not a valid JSON response.')
};
if (!response || !response.json) {
throw invalidJsonError;
}
- return response.json().catch(function () {
+ return response.json().catch(() => {
throw invalidJsonError;
});
};
@@ -647,39 +543,36 @@
* @param {Response} response
* @param {boolean} shouldParseResponse
*
- * @return {Promise} Parsed response.
+ * @return {Promise<any>} Parsed response.
*/
-var parseResponseAndNormalizeError = function parseResponseAndNormalizeError(response) {
- var shouldParseResponse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
- return Promise.resolve(response_parseResponse(response, shouldParseResponse)).catch(function (res) {
- return parseAndThrowError(res, shouldParseResponse);
- });
+const parseResponseAndNormalizeError = (response, shouldParseResponse = true) => {
+ return Promise.resolve(response_parseResponse(response, shouldParseResponse)).catch(res => parseAndThrowError(res, shouldParseResponse));
};
-function parseAndThrowError(response) {
- var shouldParseResponse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+/**
+ * Parses a response, throwing an error if parsing the response fails.
+ *
+ * @param {Response} response
+ * @param {boolean} shouldParseResponse
+ * @return {Promise<any>} Parsed response.
+ */
+function parseAndThrowError(response, shouldParseResponse = true) {
if (!shouldParseResponse) {
throw response;
}
- return response_parseJsonAndNormalizeError(response).then(function (error) {
- var unknownError = {
+ return parseJsonAndNormalizeError(response).then(error => {
+ const unknownError = {
code: 'unknown_error',
- message: Object(external_this_wp_i18n_["__"])('An unknown error occurred.')
+ message: Object(external_wp_i18n_["__"])('An unknown error occurred.')
};
throw error || unknownError;
});
}
// CONCATENATED MODULE: ./node_modules/@wordpress/api-fetch/build-module/middlewares/media-upload.js
-
-
-function media_upload_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
-
-function media_upload_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { media_upload_ownKeys(Object(source), true).forEach(function (key) { Object(defineProperty["a" /* default */])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { media_upload_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
-
/**
* WordPress dependencies
*/
@@ -692,55 +585,56 @@
/**
* Middleware handling media upload failures and retries.
*
- * @param {Object} options Fetch options.
- * @param {Function} next [description]
- *
- * @return {*} The evaluated result of the remaining middleware chain.
+ * @type {import('../types').APIFetchMiddleware}
*/
-function mediaUploadMiddleware(options, next) {
- var isMediaUploadRequest = options.path && options.path.indexOf('/wp/v2/media') !== -1 || options.url && options.url.indexOf('/wp/v2/media') !== -1;
+const mediaUploadMiddleware = (options, next) => {
+ const isMediaUploadRequest = options.path && options.path.indexOf('/wp/v2/media') !== -1 || options.url && options.url.indexOf('/wp/v2/media') !== -1;
if (!isMediaUploadRequest) {
- return next(options, next);
+ return next(options);
}
- var retries = 0;
- var maxRetries = 5;
+ let retries = 0;
+ const maxRetries = 5;
+ /**
+ * @param {string} attachmentId
+ * @return {Promise<any>} Processed post response.
+ */
- var postProcess = function postProcess(attachmentId) {
+ const postProcess = attachmentId => {
retries++;
return next({
- path: "/wp/v2/media/".concat(attachmentId, "/post-process"),
+ path: `/wp/v2/media/${attachmentId}/post-process`,
method: 'POST',
data: {
action: 'create-image-subsizes'
},
parse: false
- }).catch(function () {
+ }).catch(() => {
if (retries < maxRetries) {
return postProcess(attachmentId);
}
next({
- path: "/wp/v2/media/".concat(attachmentId, "?force=true"),
+ path: `/wp/v2/media/${attachmentId}?force=true`,
method: 'DELETE'
});
return Promise.reject();
});
};
- return next(media_upload_objectSpread({}, options, {
+ return next({ ...options,
parse: false
- })).catch(function (response) {
- var attachmentId = response.headers.get('x-wp-upload-attachment-id');
+ }).catch(response => {
+ const attachmentId = response.headers.get('x-wp-upload-attachment-id');
if (response.status >= 500 && response.status < 600 && attachmentId) {
- return postProcess(attachmentId).catch(function () {
+ return postProcess(attachmentId).catch(() => {
if (options.parse !== false) {
return Promise.reject({
code: 'post_process',
- message: Object(external_this_wp_i18n_["__"])('Media upload failed. If this is a photo or a large image, please scale it down and try again.')
+ message: Object(external_wp_i18n_["__"])('Media upload failed. If this is a photo or a large image, please scale it down and try again.')
});
}
@@ -749,21 +643,12 @@
}
return parseAndThrowError(response, options.parse);
- }).then(function (response) {
- return parseResponseAndNormalizeError(response, options.parse);
- });
-}
+ }).then(response => parseResponseAndNormalizeError(response, options.parse));
+};
/* harmony default export */ var media_upload = (mediaUploadMiddleware);
// CONCATENATED MODULE: ./node_modules/@wordpress/api-fetch/build-module/index.js
-
-
-
-function build_module_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
-
-function build_module_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { build_module_ownKeys(Object(source), true).forEach(function (key) { Object(defineProperty["a" /* default */])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { build_module_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
-
/**
* WordPress dependencies
*/
@@ -785,10 +670,10 @@
* Default set of header values which should be sent with every request unless
* explicitly provided through apiFetch options.
*
- * @type {Object}
+ * @type {Record<string, string>}
*/
-var DEFAULT_HEADERS = {
+const DEFAULT_HEADERS = {
// The backend uses the Accept header as a condition for considering an
// incoming request as a REST request.
//
@@ -802,103 +687,131 @@
* @type {Object}
*/
-var DEFAULT_OPTIONS = {
+const DEFAULT_OPTIONS = {
credentials: 'include'
};
-var middlewares = [user_locale, namespace_endpoint, http_v1, fetch_all_middleware];
+/** @typedef {import('./types').APIFetchMiddleware} APIFetchMiddleware */
+
+/** @typedef {import('./types').APIFetchOptions} APIFetchOptions */
+
+/**
+ * @type {import('./types').APIFetchMiddleware[]}
+ */
+
+const middlewares = [user_locale, namespace_endpoint, http_v1, fetch_all_middleware];
+/**
+ * Register a middleware
+ *
+ * @param {import('./types').APIFetchMiddleware} middleware
+ */
function registerMiddleware(middleware) {
middlewares.unshift(middleware);
}
+/**
+ * Checks the status of a response, throwing the Response as an error if
+ * it is outside the 200 range.
+ *
+ * @param {Response} response
+ * @return {Response} The response if the status is in the 200 range.
+ */
-var checkStatus = function checkStatus(response) {
+
+const checkStatus = response => {
if (response.status >= 200 && response.status < 300) {
return response;
}
throw response;
};
+/** @typedef {(options: import('./types').APIFetchOptions) => Promise<any>} FetchHandler*/
-var build_module_defaultFetchHandler = function defaultFetchHandler(nextOptions) {
- var url = nextOptions.url,
- path = nextOptions.path,
- data = nextOptions.data,
- _nextOptions$parse = nextOptions.parse,
- parse = _nextOptions$parse === void 0 ? true : _nextOptions$parse,
- remainingOptions = Object(objectWithoutProperties["a" /* default */])(nextOptions, ["url", "path", "data", "parse"]);
+/**
+ * @type {FetchHandler}
+ */
+
- var body = nextOptions.body,
- headers = nextOptions.headers; // Merge explicitly-provided headers with default values.
+const defaultFetchHandler = nextOptions => {
+ const {
+ url,
+ path,
+ data,
+ parse = true,
+ ...remainingOptions
+ } = nextOptions;
+ let {
+ body,
+ headers
+ } = nextOptions; // Merge explicitly-provided headers with default values.
- headers = build_module_objectSpread({}, DEFAULT_HEADERS, {}, headers); // The `data` property is a shorthand for sending a JSON body.
+ headers = { ...DEFAULT_HEADERS,
+ ...headers
+ }; // The `data` property is a shorthand for sending a JSON body.
if (data) {
body = JSON.stringify(data);
headers['Content-Type'] = 'application/json';
}
- var responsePromise = window.fetch(url || path, build_module_objectSpread({}, DEFAULT_OPTIONS, {}, remainingOptions, {
- body: body,
- headers: headers
- }));
+ const responsePromise = window.fetch( // fall back to explicitly passing `window.location` which is the behavior if `undefined` is passed
+ url || path || window.location.href, { ...DEFAULT_OPTIONS,
+ ...remainingOptions,
+ body,
+ headers
+ });
return responsePromise // Return early if fetch errors. If fetch error, there is most likely no
// network connection. Unfortunately fetch just throws a TypeError and
// the message might depend on the browser.
- .then(function (value) {
- return Promise.resolve(value).then(checkStatus).catch(function (response) {
- return parseAndThrowError(response, parse);
- }).then(function (response) {
- return parseResponseAndNormalizeError(response, parse);
- });
- }, function () {
+ .then(value => Promise.resolve(value).then(checkStatus).catch(response => parseAndThrowError(response, parse)).then(response => parseResponseAndNormalizeError(response, parse)), () => {
throw {
code: 'fetch_error',
- message: Object(external_this_wp_i18n_["__"])('You are probably offline.')
+ message: Object(external_wp_i18n_["__"])('You are probably offline.')
};
});
};
+/** @type {FetchHandler} */
-var fetchHandler = build_module_defaultFetchHandler;
+
+let fetchHandler = defaultFetchHandler;
/**
* Defines a custom fetch handler for making the requests that will override
* the default one using window.fetch
*
- * @param {Function} newFetchHandler The new fetch handler
+ * @param {FetchHandler} newFetchHandler The new fetch handler
*/
function setFetchHandler(newFetchHandler) {
fetchHandler = newFetchHandler;
}
+/**
+ * @template T
+ * @param {import('./types').APIFetchOptions} options
+ * @return {Promise<T>} A promise representing the request processed via the registered middlewares.
+ */
+
function apiFetch(options) {
- var steps = [].concat(middlewares, [fetchHandler]);
-
- var createRunStep = function createRunStep(index) {
- return function (workingOptions) {
- var step = steps[index];
-
- if (index === steps.length - 1) {
- return step(workingOptions);
- }
-
- var next = createRunStep(index + 1);
- return step(workingOptions, next);
- };
- };
-
- return new Promise(function (resolve, reject) {
- createRunStep(0)(options).then(resolve).catch(function (error) {
- if (error.code !== 'rest_cookie_invalid_nonce') {
- return reject(error);
- } // If the nonce is invalid, refresh it and try again.
+ // creates a nested function chain that calls all middlewares and finally the `fetchHandler`,
+ // converting `middlewares = [ m1, m2, m3 ]` into:
+ // ```
+ // opts1 => m1( opts1, opts2 => m2( opts2, opts3 => m3( opts3, fetchHandler ) ) );
+ // ```
+ const enhancedHandler = middlewares.reduceRight((
+ /** @type {FetchHandler} */
+ next, middleware) => {
+ return workingOptions => middleware(workingOptions, next);
+ }, fetchHandler);
+ return enhancedHandler(options).catch(error => {
+ if (error.code !== 'rest_cookie_invalid_nonce') {
+ return Promise.reject(error);
+ } // If the nonce is invalid, refresh it and try again.
- window.fetch(apiFetch.nonceEndpoint).then(checkStatus).then(function (data) {
- return data.text();
- }).then(function (text) {
- apiFetch.nonceMiddleware.nonce = text;
- apiFetch(options).then(resolve).catch(reject);
- }).catch(reject);
+ return window // @ts-ignore
+ .fetch(apiFetch.nonceEndpoint).then(checkStatus).then(data => data.text()).then(text => {
+ // @ts-ignore
+ apiFetch.nonceMiddleware.nonce = text;
+ return apiFetch(options);
});
});
}
@@ -915,68 +828,10 @@
/***/ }),
-/***/ 5:
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _defineProperty; });
-function _defineProperty(obj, key, value) {
- if (key in obj) {
- Object.defineProperty(obj, key, {
- value: value,
- enumerable: true,
- configurable: true,
- writable: true
- });
- } else {
- obj[key] = value;
- }
-
- return obj;
-}
-
-/***/ }),
-
-/***/ 50:
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/***/ "l3Sj":
+/***/ (function(module, exports) {
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _asyncToGenerator; });
-function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
- try {
- var info = gen[key](arg);
- var value = info.value;
- } catch (error) {
- reject(error);
- return;
- }
-
- if (info.done) {
- resolve(value);
- } else {
- Promise.resolve(value).then(_next, _throw);
- }
-}
-
-function _asyncToGenerator(fn) {
- return function () {
- var self = this,
- args = arguments;
- return new Promise(function (resolve, reject) {
- var gen = fn.apply(self, args);
-
- function _next(value) {
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
- }
-
- function _throw(err) {
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
- }
-
- _next(undefined);
- });
- };
-}
+(function() { module.exports = window["wp"]["i18n"]; }());
/***/ })