wp/wp-includes/js/dist/api-fetch.js
changeset 18 be944660c56a
parent 16 a86126ab1dd4
child 19 3d72ae0968f4
--- 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"]; }());
 
 /***/ })