wp/wp-includes/js/dist/api-fetch.js
changeset 21 48c4eec2b7e6
parent 19 3d72ae0968f4
child 22 8c2e4d02f4ef
--- a/wp/wp-includes/js/dist/api-fetch.js	Thu Sep 29 08:06:27 2022 +0200
+++ b/wp/wp-includes/js/dist/api-fetch.js	Fri Sep 05 18:40:08 2025 +0200
@@ -1,36 +1,36 @@
-/******/ (function() { // webpackBootstrap
+/******/ (() => { // webpackBootstrap
 /******/ 	"use strict";
 /******/ 	// The require scope
 /******/ 	var __webpack_require__ = {};
 /******/ 	
 /************************************************************************/
 /******/ 	/* webpack/runtime/define property getters */
-/******/ 	!function() {
+/******/ 	(() => {
 /******/ 		// define getter functions for harmony exports
-/******/ 		__webpack_require__.d = function(exports, definition) {
+/******/ 		__webpack_require__.d = (exports, definition) => {
 /******/ 			for(var key in definition) {
 /******/ 				if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
 /******/ 					Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
 /******/ 				}
 /******/ 			}
 /******/ 		};
-/******/ 	}();
+/******/ 	})();
 /******/ 	
 /******/ 	/* webpack/runtime/hasOwnProperty shorthand */
-/******/ 	!function() {
-/******/ 		__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
-/******/ 	}();
+/******/ 	(() => {
+/******/ 		__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
+/******/ 	})();
 /******/ 	
 /************************************************************************/
 var __webpack_exports__ = {};
 
 // EXPORTS
 __webpack_require__.d(__webpack_exports__, {
-  "default": function() { return /* binding */ build_module; }
+  "default": () => (/* binding */ build_module)
 });
 
 ;// CONCATENATED MODULE: external ["wp","i18n"]
-var external_wp_i18n_namespaceObject = window["wp"]["i18n"];
+const external_wp_i18n_namespaceObject = window["wp"]["i18n"];
 ;// CONCATENATED MODULE: ./node_modules/@wordpress/api-fetch/build-module/middlewares/nonce.js
 /**
  * @param {string} nonce
@@ -43,27 +43,27 @@
   const middleware = (options, next) => {
     const {
       headers = {}
-    } = options; // If an 'X-WP-Nonce' header (or any case-insensitive variation
+    } = options;
+
+    // If an 'X-WP-Nonce' header (or any case-insensitive variation
     // thereof) was specified, no need to add a nonce header.
-
     for (const headerName in headers) {
       if (headerName.toLowerCase() === 'x-wp-nonce' && headers[headerName] === middleware.nonce) {
         return next(options);
       }
     }
-
-    return next({ ...options,
-      headers: { ...headers,
+    return next({
+      ...options,
+      headers: {
+        ...headers,
         'X-WP-Nonce': middleware.nonce
       }
     });
   };
-
   middleware.nonce = nonce;
   return middleware;
 }
-
-/* harmony default export */ var nonce = (createNonceMiddleware);
+/* harmony default export */ const nonce = (createNonceMiddleware);
 
 ;// CONCATENATED MODULE: ./node_modules/@wordpress/api-fetch/build-module/middlewares/namespace-endpoint.js
 /**
@@ -72,126 +72,112 @@
 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, '');
     endpointTrimmed = options.endpoint.replace(/^\//, '');
-
     if (endpointTrimmed) {
       path = namespaceTrimmed + '/' + endpointTrimmed;
     } else {
       path = namespaceTrimmed;
     }
   }
-
   delete options.namespace;
   delete options.endpoint;
-  return next({ ...options,
+  return next({
+    ...options,
     path
   });
 };
-
-/* harmony default export */ var namespace_endpoint = (namespaceAndEndpointMiddleware);
+/* harmony default export */ const namespace_endpoint = (namespaceAndEndpointMiddleware);
 
 ;// CONCATENATED MODULE: ./node_modules/@wordpress/api-fetch/build-module/middlewares/root-url.js
 /**
  * Internal dependencies
  */
 
+
 /**
  * @param {string} rootURL
  * @return {import('../types').APIFetchMiddleware} Root URL middleware.
  */
-
 const createRootURLMiddleware = rootURL => (options, next) => {
   return namespace_endpoint(options, optionsWithPath => {
     let url = optionsWithPath.url;
     let path = optionsWithPath.path;
     let apiRoot;
-
     if (typeof path === 'string') {
       apiRoot = rootURL;
-
       if (-1 !== rootURL.indexOf('?')) {
         path = path.replace('?', '&');
       }
+      path = path.replace(/^\//, '');
 
-      path = path.replace(/^\//, ''); // API root may already include query parameter prefix if site is
+      // 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,
+    return next({
+      ...optionsWithPath,
       url
     });
   });
 };
-
-/* harmony default export */ var root_url = (createRootURLMiddleware);
+/* harmony default export */ const root_url = (createRootURLMiddleware);
 
 ;// CONCATENATED MODULE: external ["wp","url"]
-var external_wp_url_namespaceObject = window["wp"]["url"];
+const external_wp_url_namespaceObject = window["wp"]["url"];
 ;// CONCATENATED MODULE: ./node_modules/@wordpress/api-fetch/build-module/middlewares/preloading.js
 /**
  * WordPress dependencies
  */
 
+
 /**
  * @param {Record<string, any>} preloadedData
  * @return {import('../types').APIFetchMiddleware} Preloading middleware.
  */
-
 function createPreloadingMiddleware(preloadedData) {
-  const cache = Object.fromEntries(Object.entries(preloadedData).map(_ref => {
-    let [path, data] = _ref;
-    return [(0,external_wp_url_namespaceObject.normalizePath)(path), data];
-  }));
+  const cache = Object.fromEntries(Object.entries(preloadedData).map(([path, data]) => [(0,external_wp_url_namespaceObject.normalizePath)(path), data]));
   return (options, next) => {
     const {
       parse = true
     } = options;
     /** @type {string | void} */
-
     let rawPath = options.path;
-
     if (!rawPath && options.url) {
       const {
         rest_route: pathFromQuery,
         ...queryArgs
       } = (0,external_wp_url_namespaceObject.getQueryArgs)(options.url);
-
       if (typeof pathFromQuery === 'string') {
         rawPath = (0,external_wp_url_namespaceObject.addQueryArgs)(pathFromQuery, queryArgs);
       }
     }
-
     if (typeof rawPath !== 'string') {
       return next(options);
     }
-
     const method = options.method || 'GET';
     const path = (0,external_wp_url_namespaceObject.normalizePath)(rawPath);
+    if ('GET' === method && cache[path]) {
+      const cacheData = cache[path];
 
-    if ('GET' === method && cache[path]) {
-      const cacheData = cache[path]; // Unsetting the cache key ensures that the data is only used a single time.
-
+      // Unsetting the cache key ensures that the data is only used a single time.
       delete cache[path];
       return prepareResponse(cacheData, !!parse);
     } else if ('OPTIONS' === method && cache[method] && cache[method][path]) {
-      const cacheData = cache[method][path]; // Unsetting the cache key ensures that the data is only used a single time.
+      const cacheData = cache[method][path];
 
+      // Unsetting the cache key ensures that the data is only used a single time.
       delete cache[method][path];
       return prepareResponse(cacheData, !!parse);
     }
-
     return next(options);
   };
 }
+
 /**
  * This is a helper function that sends a success response.
  *
@@ -199,8 +185,6 @@
  * @param {boolean}             parse
  * @return {Promise<any>} Promise with the response.
  */
-
-
 function prepareResponse(responseData, parse) {
   return Promise.resolve(parse ? responseData.body : new window.Response(JSON.stringify(responseData.body), {
     status: 200,
@@ -208,14 +192,14 @@
     headers: responseData.headers
   }));
 }
-
-/* harmony default export */ var preloading = (createPreloadingMiddleware);
+/* harmony default export */ const preloading = (createPreloadingMiddleware);
 
 ;// CONCATENATED MODULE: ./node_modules/@wordpress/api-fetch/build-module/middlewares/fetch-all-middleware.js
 /**
  * WordPress dependencies
  */
 
+
 /**
  * Internal dependencies
  */
@@ -228,66 +212,59 @@
  * @param {Record<string, string | number>}    queryArgs
  * @return {import('../types').APIFetchOptions} The request with the modified query args
  */
+const modifyQuery = ({
+  path,
+  url,
+  ...options
+}, queryArgs) => ({
+  ...options,
+  url: url && (0,external_wp_url_namespaceObject.addQueryArgs)(url, queryArgs),
+  path: path && (0,external_wp_url_namespaceObject.addQueryArgs)(path, queryArgs)
+});
 
-const modifyQuery = (_ref, queryArgs) => {
-  let {
-    path,
-    url,
-    ...options
-  } = _ref;
-  return { ...options,
-    url: url && (0,external_wp_url_namespaceObject.addQueryArgs)(url, queryArgs),
-    path: path && (0,external_wp_url_namespaceObject.addQueryArgs)(path, queryArgs)
-  };
-};
 /**
  * Duplicates parsing functionality from apiFetch.
  *
  * @param {Response} response
  * @return {Promise<any>} Parsed response json.
  */
-
+const parseResponse = response => 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.
  */
-
-
 const parseLinkHeader = linkHeader => {
   if (!linkHeader) {
     return {};
   }
-
   const match = linkHeader.match(/<([^>]+)>; rel="next"/);
   return match ? {
     next: match[1]
   } : {};
 };
+
 /**
  * @param {Response} response
  * @return {string | undefined} The next page URL.
  */
-
-
 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.
  */
-
-
 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
@@ -295,47 +272,40 @@
  *
  * @type {import('../types').APIFetchMiddleware}
  */
-
-
 const fetchAllMiddleware = async (options, next) => {
   if (options.parse === false) {
     // If a consumer has opted out of parsing, do not apply middleware.
     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.
+  }
 
-
-  const response = await build_module({ ...modifyQuery(options, {
+  // Retrieve requested page of results.
+  const response = await build_module({
+    ...modifyQuery(options, {
       per_page: 100
     }),
     // Ensure headers are returned for page 1.
     parse: false
   });
   const results = await parseResponse(response);
-
   if (!Array.isArray(results)) {
     // We have no reliable way of merging non-array results.
     return results;
   }
-
   let nextPage = getNextPageUrl(response);
-
   if (!nextPage) {
     // There are no further pages to request.
     return results;
-  } // Iteratively fetch all remaining pages until no "next" header is found.
-
+  }
 
-  let mergedResults =
-  /** @type {any[]} */
-  [].concat(results);
-
+  // Iteratively fetch all remaining pages until no "next" header is found.
+  let mergedResults = /** @type {any[]} */[].concat(results);
   while (nextPage) {
-    const nextResponse = await build_module({ ...options,
+    const nextResponse = await build_module({
+      ...options,
       // Ensure the URL for the next page is used instead of any provided path.
       path: undefined,
       url: nextPage,
@@ -346,11 +316,9 @@
     mergedResults = mergedResults.concat(nextResults);
     nextPage = getNextPageUrl(nextResponse);
   }
-
   return mergedResults;
 };
-
-/* harmony default export */ var fetch_all_middleware = (fetchAllMiddleware);
+/* harmony default export */ const fetch_all_middleware = (fetchAllMiddleware);
 
 ;// CONCATENATED MODULE: ./node_modules/@wordpress/api-fetch/build-module/middlewares/http-v1.js
 /**
@@ -359,6 +327,7 @@
  * @type {Set<string>}
  */
 const OVERRIDE_METHODS = new Set(['PATCH', 'PUT', 'DELETE']);
+
 /**
  * Default request method.
  *
@@ -369,67 +338,63 @@
  *
  * @type {string}
  */
+const 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.
  *
  * @type {import('../types').APIFetchMiddleware}
  */
-
 const httpV1Middleware = (options, next) => {
   const {
     method = DEFAULT_METHOD
   } = options;
-
   if (OVERRIDE_METHODS.has(method.toUpperCase())) {
-    options = { ...options,
-      headers: { ...options.headers,
+    options = {
+      ...options,
+      headers: {
+        ...options.headers,
         'X-HTTP-Method-Override': method,
         'Content-Type': 'application/json'
       },
       method: 'POST'
     };
   }
-
   return next(options);
 };
-
-/* harmony default export */ var http_v1 = (httpV1Middleware);
+/* harmony default export */ const http_v1 = (httpV1Middleware);
 
 ;// CONCATENATED MODULE: ./node_modules/@wordpress/api-fetch/build-module/middlewares/user-locale.js
 /**
  * WordPress dependencies
  */
 
+
 /**
  * @type {import('../types').APIFetchMiddleware}
  */
-
 const userLocaleMiddleware = (options, next) => {
   if (typeof options.url === 'string' && !(0,external_wp_url_namespaceObject.hasQueryArg)(options.url, '_locale')) {
     options.url = (0,external_wp_url_namespaceObject.addQueryArgs)(options.url, {
       _locale: 'user'
     });
   }
-
   if (typeof options.path === 'string' && !(0,external_wp_url_namespaceObject.hasQueryArg)(options.path, '_locale')) {
     options.path = (0,external_wp_url_namespaceObject.addQueryArgs)(options.path, {
       _locale: 'user'
     });
   }
-
   return next(options);
 };
-
-/* harmony default export */ var user_locale = (userLocaleMiddleware);
+/* harmony default export */ const user_locale = (userLocaleMiddleware);
 
 ;// CONCATENATED MODULE: ./node_modules/@wordpress/api-fetch/build-module/utils/response.js
 /**
  * WordPress dependencies
  */
 
+
 /**
  * Parses the apiFetch response.
  *
@@ -438,20 +403,16 @@
  *
  * @return {Promise<any> | null | Response} Parsed response.
  */
-
-const response_parseResponse = function (response) {
-  let shouldParseResponse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
-
+const response_parseResponse = (response, shouldParseResponse = true) => {
   if (shouldParseResponse) {
     if (response.status === 204) {
       return null;
     }
-
     return response.json ? response.json() : Promise.reject(response);
   }
-
   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.
@@ -459,22 +420,19 @@
  * @param {Response} response
  * @return {Promise<any>} Parsed response.
  */
-
-
 const parseJsonAndNormalizeError = response => {
   const invalidJsonError = {
     code: 'invalid_json',
     message: (0,external_wp_i18n_namespaceObject.__)('The response is not a valid JSON response.')
   };
-
   if (!response || !response.json) {
     throw invalidJsonError;
   }
-
   return response.json().catch(() => {
     throw invalidJsonError;
   });
 };
+
 /**
  * Parses the apiFetch response properly and normalize response errors.
  *
@@ -483,12 +441,10 @@
  *
  * @return {Promise<any>} Parsed response.
  */
-
-
-const parseResponseAndNormalizeError = function (response) {
-  let shouldParseResponse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+const parseResponseAndNormalizeError = (response, shouldParseResponse = true) => {
   return Promise.resolve(response_parseResponse(response, shouldParseResponse)).catch(res => parseAndThrowError(res, shouldParseResponse));
 };
+
 /**
  * Parses a response, throwing an error if parsing the response fails.
  *
@@ -496,14 +452,10 @@
  * @param {boolean}  shouldParseResponse
  * @return {Promise<any>} Parsed response.
  */
-
-function parseAndThrowError(response) {
-  let shouldParseResponse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
-
+function parseAndThrowError(response, shouldParseResponse = true) {
   if (!shouldParseResponse) {
     throw response;
   }
-
   return parseJsonAndNormalizeError(response).then(error => {
     const unknownError = {
       code: 'unknown_error',
@@ -518,6 +470,7 @@
  * WordPress dependencies
  */
 
+
 /**
  * Internal dependencies
  */
@@ -527,31 +480,28 @@
  * @param {import('../types').APIFetchOptions} options
  * @return {boolean} True if the request is for media upload.
  */
-
 function isMediaUploadRequest(options) {
   const isCreateMethod = !!options.method && options.method === 'POST';
   const isMediaEndpoint = !!options.path && options.path.indexOf('/wp/v2/media') !== -1 || !!options.url && options.url.indexOf('/wp/v2/media') !== -1;
   return isMediaEndpoint && isCreateMethod;
 }
+
 /**
  * Middleware handling media upload failures and retries.
  *
  * @type {import('../types').APIFetchMiddleware}
  */
-
-
 const mediaUploadMiddleware = (options, next) => {
   if (!isMediaUploadRequest(options)) {
     return next(options);
   }
-
   let retries = 0;
   const maxRetries = 5;
+
   /**
    * @param {string} attachmentId
    * @return {Promise<any>} Processed post response.
    */
-
   const postProcess = attachmentId => {
     retries++;
     return next({
@@ -565,7 +515,6 @@
       if (retries < maxRetries) {
         return postProcess(attachmentId);
       }
-
       next({
         path: `/wp/v2/media/${attachmentId}?force=true`,
         method: 'DELETE'
@@ -573,12 +522,11 @@
       return Promise.reject();
     });
   };
-
-  return next({ ...options,
+  return next({
+    ...options,
     parse: false
   }).catch(response => {
     const attachmentId = response.headers.get('x-wp-upload-attachment-id');
-
     if (response.status >= 500 && response.status < 600 && attachmentId) {
       return postProcess(attachmentId).catch(() => {
         if (options.parse !== false) {
@@ -587,22 +535,61 @@
             message: (0,external_wp_i18n_namespaceObject.__)('Media upload failed. If this is a photo or a large image, please scale it down and try again.')
           });
         }
-
         return Promise.reject(response);
       });
     }
-
     return parseAndThrowError(response, options.parse);
   }).then(response => parseResponseAndNormalizeError(response, options.parse));
 };
+/* harmony default export */ const media_upload = (mediaUploadMiddleware);
 
-/* harmony default export */ var media_upload = (mediaUploadMiddleware);
+;// CONCATENATED MODULE: ./node_modules/@wordpress/api-fetch/build-module/middlewares/theme-preview.js
+/**
+ * WordPress dependencies
+ */
+
+
+/**
+ * This appends a `wp_theme_preview` parameter to the REST API request URL if
+ * the admin URL contains a `theme` GET parameter.
+ *
+ * If the REST API request URL has contained the `wp_theme_preview` parameter as `''`,
+ * then bypass this middleware.
+ *
+ * @param {Record<string, any>} themePath
+ * @return {import('../types').APIFetchMiddleware} Preloading middleware.
+ */
+const createThemePreviewMiddleware = themePath => (options, next) => {
+  if (typeof options.url === 'string') {
+    const wpThemePreview = (0,external_wp_url_namespaceObject.getQueryArg)(options.url, 'wp_theme_preview');
+    if (wpThemePreview === undefined) {
+      options.url = (0,external_wp_url_namespaceObject.addQueryArgs)(options.url, {
+        wp_theme_preview: themePath
+      });
+    } else if (wpThemePreview === '') {
+      options.url = (0,external_wp_url_namespaceObject.removeQueryArgs)(options.url, 'wp_theme_preview');
+    }
+  }
+  if (typeof options.path === 'string') {
+    const wpThemePreview = (0,external_wp_url_namespaceObject.getQueryArg)(options.path, 'wp_theme_preview');
+    if (wpThemePreview === undefined) {
+      options.path = (0,external_wp_url_namespaceObject.addQueryArgs)(options.path, {
+        wp_theme_preview: themePath
+      });
+    } else if (wpThemePreview === '') {
+      options.path = (0,external_wp_url_namespaceObject.removeQueryArgs)(options.path, 'wp_theme_preview');
+    }
+  }
+  return next(options);
+};
+/* harmony default export */ const theme_preview = (createThemePreviewMiddleware);
 
 ;// CONCATENATED MODULE: ./node_modules/@wordpress/api-fetch/build-module/index.js
 /**
  * WordPress dependencies
  */
 
+
 /**
  * Internal dependencies
  */
@@ -616,13 +603,13 @@
 
 
 
+
 /**
  * Default set of header values which should be sent with every request unless
  * explicitly provided through apiFetch options.
  *
  * @type {Record<string, string>}
  */
-
 const DEFAULT_HEADERS = {
   // The backend uses the Accept header as a condition for considering an
   // incoming request as a REST request.
@@ -630,34 +617,34 @@
   // See: https://core.trac.wordpress.org/ticket/44534
   Accept: 'application/json, */*;q=0.1'
 };
+
 /**
  * Default set of fetch option values which should be sent with every request
  * unless explicitly provided through apiFetch options.
  *
  * @type {Object}
  */
-
 const DEFAULT_OPTIONS = {
   credentials: 'include'
 };
+
 /** @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];
 
-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.
@@ -665,22 +652,18 @@
  * @param {Response} response
  * @return {Response} The response if the status is in the 200 range.
  */
-
-
 const checkStatus = response => {
   if (response.status >= 200 && response.status < 300) {
     return response;
   }
-
   throw response;
 };
+
 /** @typedef {(options: import('./types').APIFetchOptions) => Promise<any>} FetchHandler*/
 
 /**
  * @type {FetchHandler}
  */
-
-
 const defaultFetchHandler = nextOptions => {
   const {
     url,
@@ -692,19 +675,23 @@
   let {
     body,
     headers
-  } = nextOptions; // Merge explicitly-provided headers with default values.
+  } = nextOptions;
 
-  headers = { ...DEFAULT_HEADERS,
+  // Merge explicitly-provided headers with default values.
+  headers = {
+    ...DEFAULT_HEADERS,
     ...headers
-  }; // The `data` property is a shorthand for sending a JSON body.
+  };
 
+  // The `data` property is a shorthand for sending a JSON body.
   if (data) {
     body = JSON.stringify(data);
     headers['Content-Type'] = 'application/json';
   }
-
-  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,
+  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
@@ -713,55 +700,52 @@
     // Re-throw AbortError for the users to handle it themselves.
     if (err && err.name === 'AbortError') {
       throw err;
-    } // Otherwise, there is most likely no network connection.
+    }
+
+    // Otherwise, there is most likely no network connection.
     // Unfortunately the message might depend on the browser.
-
-
     throw {
       code: 'fetch_error',
       message: (0,external_wp_i18n_namespaceObject.__)('You are probably offline.')
     };
   });
 };
-/** @type {FetchHandler} */
 
+/** @type {FetchHandler} */
+let fetchHandler = defaultFetchHandler;
 
-let fetchHandler = defaultFetchHandler;
 /**
  * Defines a custom fetch handler for making the requests that will override
  * the default one using window.fetch
  *
  * @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) {
   // 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) => {
+  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.
+    }
 
-
-    return window // @ts-ignore
+    // If the nonce is invalid, refresh it and try again.
+    return window
+    // @ts-ignore
     .fetch(apiFetch.nonceEndpoint).then(checkStatus).then(data => data.text()).then(text => {
       // @ts-ignore
       apiFetch.nonceMiddleware.nonce = text;
@@ -769,7 +753,6 @@
     });
   });
 }
-
 apiFetch.use = registerMiddleware;
 apiFetch.setFetchHandler = setFetchHandler;
 apiFetch.createNonceMiddleware = nonce;
@@ -777,7 +760,8 @@
 apiFetch.createRootURLMiddleware = root_url;
 apiFetch.fetchAllMiddleware = fetch_all_middleware;
 apiFetch.mediaUploadMiddleware = media_upload;
-/* harmony default export */ var build_module = (apiFetch);
+apiFetch.createThemePreviewMiddleware = theme_preview;
+/* harmony default export */ const build_module = (apiFetch);
 
 (window.wp = window.wp || {}).apiFetch = __webpack_exports__["default"];
 /******/ })()