{"version":3,"file":"./build/api-fetch/index.min.js","mappings":"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","sources":["webpack://wp/webpack/bootstrap","webpack://wp/webpack/runtime/define property getters","webpack://wp/webpack/runtime/hasOwnProperty shorthand","webpack://wp/external window [\"wp\",\"i18n\"]","../../packages/api-fetch/src/middlewares/namespace-endpoint.js","webpack://wp/external window [\"wp\",\"url\"]","../../packages/api-fetch/src/middlewares/preloading.js","../../packages/api-fetch/src/middlewares/fetch-all-middleware.js","../../packages/api-fetch/src/middlewares/http-v1.js","../../packages/api-fetch/src/utils/response.js","../../packages/api-fetch/src/middlewares/media-upload.js","../../packages/api-fetch/src/index.js","../../packages/api-fetch/src/middlewares/user-locale.js","../../packages/api-fetch/src/middlewares/nonce.js","../../packages/api-fetch/src/middlewares/root-url.js","../../packages/api-fetch/src/middlewares/theme-preview.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"i18n\"];","/**\n * @type {import('../types').APIFetchMiddleware}\n */\nconst namespaceAndEndpointMiddleware = ( options, next ) => {\n\tlet path = options.path;\n\tlet namespaceTrimmed, endpointTrimmed;\n\n\tif (\n\t\ttypeof options.namespace === 'string' &&\n\t\ttypeof options.endpoint === 'string'\n\t) {\n\t\tnamespaceTrimmed = options.namespace.replace( /^\\/|\\/$/g, '' );\n\t\tendpointTrimmed = options.endpoint.replace( /^\\//, '' );\n\t\tif ( endpointTrimmed ) {\n\t\t\tpath = namespaceTrimmed + '/' + endpointTrimmed;\n\t\t} else {\n\t\t\tpath = namespaceTrimmed;\n\t\t}\n\t}\n\n\tdelete options.namespace;\n\tdelete options.endpoint;\n\n\treturn next( {\n\t\t...options,\n\t\tpath,\n\t} );\n};\n\nexport default namespaceAndEndpointMiddleware;\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"url\"];","/**\n * WordPress dependencies\n */\nimport { addQueryArgs, getQueryArgs, normalizePath } from '@wordpress/url';\n\n/**\n * @param {Record} preloadedData\n * @return {import('../types').APIFetchMiddleware} Preloading middleware.\n */\nfunction createPreloadingMiddleware( preloadedData ) {\n\tconst cache = Object.fromEntries(\n\t\tObject.entries( preloadedData ).map( ( [ path, data ] ) => [\n\t\t\tnormalizePath( path ),\n\t\t\tdata,\n\t\t] )\n\t);\n\n\treturn ( options, next ) => {\n\t\tconst { parse = true } = options;\n\t\t/** @type {string | void} */\n\t\tlet rawPath = options.path;\n\t\tif ( ! rawPath && options.url ) {\n\t\t\tconst { rest_route: pathFromQuery, ...queryArgs } = getQueryArgs(\n\t\t\t\toptions.url\n\t\t\t);\n\n\t\t\tif ( typeof pathFromQuery === 'string' ) {\n\t\t\t\trawPath = addQueryArgs( pathFromQuery, queryArgs );\n\t\t\t}\n\t\t}\n\n\t\tif ( typeof rawPath !== 'string' ) {\n\t\t\treturn next( options );\n\t\t}\n\n\t\tconst method = options.method || 'GET';\n\t\tconst path = normalizePath( rawPath );\n\n\t\tif ( 'GET' === method && cache[ path ] ) {\n\t\t\tconst cacheData = cache[ path ];\n\n\t\t\t// Unsetting the cache key ensures that the data is only used a single time.\n\t\t\tdelete cache[ path ];\n\n\t\t\treturn prepareResponse( cacheData, !! parse );\n\t\t} else if (\n\t\t\t'OPTIONS' === method &&\n\t\t\tcache[ method ] &&\n\t\t\tcache[ method ][ path ]\n\t\t) {\n\t\t\tconst cacheData = cache[ method ][ path ];\n\n\t\t\t// Unsetting the cache key ensures that the data is only used a single time.\n\t\t\tdelete cache[ method ][ path ];\n\n\t\t\treturn prepareResponse( cacheData, !! parse );\n\t\t}\n\n\t\treturn next( options );\n\t};\n}\n\n/**\n * This is a helper function that sends a success response.\n *\n * @param {Record} responseData\n * @param {boolean} parse\n * @return {Promise} Promise with the response.\n */\nfunction prepareResponse( responseData, parse ) {\n\tif ( parse ) {\n\t\treturn Promise.resolve( responseData.body );\n\t}\n\n\ttry {\n\t\treturn Promise.resolve(\n\t\t\tnew window.Response( JSON.stringify( responseData.body ), {\n\t\t\t\tstatus: 200,\n\t\t\t\tstatusText: 'OK',\n\t\t\t\theaders: responseData.headers,\n\t\t\t} )\n\t\t);\n\t} catch {\n\t\t// See: https://github.com/WordPress/gutenberg/issues/67358#issuecomment-2621163926.\n\t\tObject.entries( responseData.headers ).forEach( ( [ key, value ] ) => {\n\t\t\tif ( key.toLowerCase() === 'link' ) {\n\t\t\t\tresponseData.headers[ key ] = value.replace(\n\t\t\t\t\t/<([^>]+)>/,\n\t\t\t\t\t( /** @type {any} */ _, /** @type {string} */ url ) =>\n\t\t\t\t\t\t`<${ encodeURI( url ) }>`\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t\treturn Promise.resolve(\n\t\t\tparse\n\t\t\t\t? responseData.body\n\t\t\t\t: new window.Response( JSON.stringify( responseData.body ), {\n\t\t\t\t\t\tstatus: 200,\n\t\t\t\t\t\tstatusText: 'OK',\n\t\t\t\t\t\theaders: responseData.headers,\n\t\t\t\t } )\n\t\t);\n\t}\n}\n\nexport default createPreloadingMiddleware;\n","/**\n * WordPress dependencies\n */\nimport { addQueryArgs } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport apiFetch from '..';\n\n/**\n * Apply query arguments to both URL and Path, whichever is present.\n *\n * @param {import('../types').APIFetchOptions} props\n * @param {Record} queryArgs\n * @return {import('../types').APIFetchOptions} The request with the modified query args\n */\nconst modifyQuery = ( { path, url, ...options }, queryArgs ) => ( {\n\t...options,\n\turl: url && addQueryArgs( url, queryArgs ),\n\tpath: path && addQueryArgs( path, queryArgs ),\n} );\n\n/**\n * Duplicates parsing functionality from apiFetch.\n *\n * @param {Response} response\n * @return {Promise} Parsed response json.\n */\nconst parseResponse = ( response ) =>\n\tresponse.json ? response.json() : Promise.reject( response );\n\n/**\n * @param {string | null} linkHeader\n * @return {{ next?: string }} The parsed link header.\n */\nconst parseLinkHeader = ( linkHeader ) => {\n\tif ( ! linkHeader ) {\n\t\treturn {};\n\t}\n\tconst match = linkHeader.match( /<([^>]+)>; rel=\"next\"/ );\n\treturn match\n\t\t? {\n\t\t\t\tnext: match[ 1 ],\n\t\t }\n\t\t: {};\n};\n\n/**\n * @param {Response} response\n * @return {string | undefined} The next page URL.\n */\nconst getNextPageUrl = ( response ) => {\n\tconst { next } = parseLinkHeader( response.headers.get( 'link' ) );\n\treturn next;\n};\n\n/**\n * @param {import('../types').APIFetchOptions} options\n * @return {boolean} True if the request contains an unbounded query.\n */\nconst requestContainsUnboundedQuery = ( options ) => {\n\tconst pathIsUnbounded =\n\t\t!! options.path && options.path.indexOf( 'per_page=-1' ) !== -1;\n\tconst urlIsUnbounded =\n\t\t!! options.url && options.url.indexOf( 'per_page=-1' ) !== -1;\n\treturn pathIsUnbounded || urlIsUnbounded;\n};\n\n/**\n * The REST API enforces an upper limit on the per_page option. To handle large\n * collections, apiFetch consumers can pass `per_page=-1`; this middleware will\n * then recursively assemble a full response array from all available pages.\n *\n * @type {import('../types').APIFetchMiddleware}\n */\nconst fetchAllMiddleware = async ( options, next ) => {\n\tif ( options.parse === false ) {\n\t\t// If a consumer has opted out of parsing, do not apply middleware.\n\t\treturn next( options );\n\t}\n\tif ( ! requestContainsUnboundedQuery( options ) ) {\n\t\t// If neither url nor path is requesting all items, do not apply middleware.\n\t\treturn next( options );\n\t}\n\n\t// Retrieve requested page of results.\n\tconst response = await apiFetch( {\n\t\t...modifyQuery( options, {\n\t\t\tper_page: 100,\n\t\t} ),\n\t\t// Ensure headers are returned for page 1.\n\t\tparse: false,\n\t} );\n\n\tconst results = await parseResponse( response );\n\n\tif ( ! Array.isArray( results ) ) {\n\t\t// We have no reliable way of merging non-array results.\n\t\treturn results;\n\t}\n\n\tlet nextPage = getNextPageUrl( response );\n\n\tif ( ! nextPage ) {\n\t\t// There are no further pages to request.\n\t\treturn results;\n\t}\n\n\t// Iteratively fetch all remaining pages until no \"next\" header is found.\n\tlet mergedResults = /** @type {any[]} */ ( [] ).concat( results );\n\twhile ( nextPage ) {\n\t\tconst nextResponse = await apiFetch( {\n\t\t\t...options,\n\t\t\t// Ensure the URL for the next page is used instead of any provided path.\n\t\t\tpath: undefined,\n\t\t\turl: nextPage,\n\t\t\t// Ensure we still get headers so we can identify the next page.\n\t\t\tparse: false,\n\t\t} );\n\t\tconst nextResults = await parseResponse( nextResponse );\n\t\tmergedResults = mergedResults.concat( nextResults );\n\t\tnextPage = getNextPageUrl( nextResponse );\n\t}\n\treturn mergedResults;\n};\n\nexport default fetchAllMiddleware;\n","/**\n * Set of HTTP methods which are eligible to be overridden.\n *\n * @type {Set}\n */\nconst OVERRIDE_METHODS = new Set( [ 'PATCH', 'PUT', 'DELETE' ] );\n\n/**\n * Default request method.\n *\n * \"A request has an associated method (a method). Unless stated otherwise it\n * is `GET`.\"\n *\n * @see https://fetch.spec.whatwg.org/#requests\n *\n * @type {string}\n */\nconst DEFAULT_METHOD = 'GET';\n\n/**\n * API Fetch middleware which overrides the request method for HTTP v1\n * compatibility leveraging the REST API X-HTTP-Method-Override header.\n *\n * @type {import('../types').APIFetchMiddleware}\n */\nconst httpV1Middleware = ( options, next ) => {\n\tconst { method = DEFAULT_METHOD } = options;\n\tif ( OVERRIDE_METHODS.has( method.toUpperCase() ) ) {\n\t\toptions = {\n\t\t\t...options,\n\t\t\theaders: {\n\t\t\t\t...options.headers,\n\t\t\t\t'X-HTTP-Method-Override': method,\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t},\n\t\t\tmethod: 'POST',\n\t\t};\n\t}\n\n\treturn next( options );\n};\n\nexport default httpV1Middleware;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Parses the apiFetch response.\n *\n * @param {Response} response\n * @param {boolean} shouldParseResponse\n *\n * @return {Promise | null | Response} Parsed response.\n */\nconst parseResponse = ( response, shouldParseResponse = true ) => {\n\tif ( shouldParseResponse ) {\n\t\tif ( response.status === 204 ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn response.json ? response.json() : Promise.reject( response );\n\t}\n\n\treturn response;\n};\n\n/**\n * Calls the `json` function on the Response, throwing an error if the response\n * doesn't have a json function or if parsing the json itself fails.\n *\n * @param {Response} response\n * @return {Promise} Parsed response.\n */\nconst parseJsonAndNormalizeError = ( response ) => {\n\tconst invalidJsonError = {\n\t\tcode: 'invalid_json',\n\t\tmessage: __( 'The response is not a valid JSON response.' ),\n\t};\n\n\tif ( ! response || ! response.json ) {\n\t\tthrow invalidJsonError;\n\t}\n\n\treturn response.json().catch( () => {\n\t\tthrow invalidJsonError;\n\t} );\n};\n\n/**\n * Parses the apiFetch response properly and normalize response errors.\n *\n * @param {Response} response\n * @param {boolean} shouldParseResponse\n *\n * @return {Promise} Parsed response.\n */\nexport const parseResponseAndNormalizeError = (\n\tresponse,\n\tshouldParseResponse = true\n) => {\n\treturn Promise.resolve(\n\t\tparseResponse( response, shouldParseResponse )\n\t).catch( ( res ) => parseAndThrowError( res, shouldParseResponse ) );\n};\n\n/**\n * Parses a response, throwing an error if parsing the response fails.\n *\n * @param {Response} response\n * @param {boolean} shouldParseResponse\n * @return {Promise} Parsed response.\n */\nexport function parseAndThrowError( response, shouldParseResponse = true ) {\n\tif ( ! shouldParseResponse ) {\n\t\tthrow response;\n\t}\n\n\treturn parseJsonAndNormalizeError( response ).then( ( error ) => {\n\t\tconst unknownError = {\n\t\t\tcode: 'unknown_error',\n\t\t\tmessage: __( 'An unknown error occurred.' ),\n\t\t};\n\n\t\tthrow error || unknownError;\n\t} );\n}\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport {\n\tparseAndThrowError,\n\tparseResponseAndNormalizeError,\n} from '../utils/response';\n\n/**\n * @param {import('../types').APIFetchOptions} options\n * @return {boolean} True if the request is for media upload.\n */\nfunction isMediaUploadRequest( options ) {\n\tconst isCreateMethod = !! options.method && options.method === 'POST';\n\tconst isMediaEndpoint =\n\t\t( !! options.path && options.path.indexOf( '/wp/v2/media' ) !== -1 ) ||\n\t\t( !! options.url && options.url.indexOf( '/wp/v2/media' ) !== -1 );\n\n\treturn isMediaEndpoint && isCreateMethod;\n}\n\n/**\n * Middleware handling media upload failures and retries.\n *\n * @type {import('../types').APIFetchMiddleware}\n */\nconst mediaUploadMiddleware = ( options, next ) => {\n\tif ( ! isMediaUploadRequest( options ) ) {\n\t\treturn next( options );\n\t}\n\n\tlet retries = 0;\n\tconst maxRetries = 5;\n\n\t/**\n\t * @param {string} attachmentId\n\t * @return {Promise} Processed post response.\n\t */\n\tconst postProcess = ( attachmentId ) => {\n\t\tretries++;\n\t\treturn next( {\n\t\t\tpath: `/wp/v2/media/${ attachmentId }/post-process`,\n\t\t\tmethod: 'POST',\n\t\t\tdata: { action: 'create-image-subsizes' },\n\t\t\tparse: false,\n\t\t} ).catch( () => {\n\t\t\tif ( retries < maxRetries ) {\n\t\t\t\treturn postProcess( attachmentId );\n\t\t\t}\n\t\t\tnext( {\n\t\t\t\tpath: `/wp/v2/media/${ attachmentId }?force=true`,\n\t\t\t\tmethod: 'DELETE',\n\t\t\t} );\n\n\t\t\treturn Promise.reject();\n\t\t} );\n\t};\n\n\treturn next( { ...options, parse: false } )\n\t\t.catch( ( response ) => {\n\t\t\t// `response` could actually be an error thrown by `defaultFetchHandler`.\n\t\t\tif ( ! response.headers ) {\n\t\t\t\treturn Promise.reject( response );\n\t\t\t}\n\n\t\t\tconst attachmentId = response.headers.get(\n\t\t\t\t'x-wp-upload-attachment-id'\n\t\t\t);\n\t\t\tif (\n\t\t\t\tresponse.status >= 500 &&\n\t\t\t\tresponse.status < 600 &&\n\t\t\t\tattachmentId\n\t\t\t) {\n\t\t\t\treturn postProcess( attachmentId ).catch( () => {\n\t\t\t\t\tif ( options.parse !== false ) {\n\t\t\t\t\t\treturn Promise.reject( {\n\t\t\t\t\t\t\tcode: 'post_process',\n\t\t\t\t\t\t\tmessage: __(\n\t\t\t\t\t\t\t\t'Media upload failed. If this is a photo or a large image, please scale it down and try again.'\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Promise.reject( response );\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn parseAndThrowError( response, options.parse );\n\t\t} )\n\t\t.then( ( response ) =>\n\t\t\tparseResponseAndNormalizeError( response, options.parse )\n\t\t);\n};\n\nexport default mediaUploadMiddleware;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport createNonceMiddleware from './middlewares/nonce';\nimport createRootURLMiddleware from './middlewares/root-url';\nimport createPreloadingMiddleware from './middlewares/preloading';\nimport fetchAllMiddleware from './middlewares/fetch-all-middleware';\nimport namespaceEndpointMiddleware from './middlewares/namespace-endpoint';\nimport httpV1Middleware from './middlewares/http-v1';\nimport userLocaleMiddleware from './middlewares/user-locale';\nimport mediaUploadMiddleware from './middlewares/media-upload';\nimport createThemePreviewMiddleware from './middlewares/theme-preview';\nimport {\n\tparseResponseAndNormalizeError,\n\tparseAndThrowError,\n} from './utils/response';\n\n/**\n * Default set of header values which should be sent with every request unless\n * explicitly provided through apiFetch options.\n *\n * @type {Record}\n */\nconst DEFAULT_HEADERS = {\n\t// The backend uses the Accept header as a condition for considering an\n\t// incoming request as a REST request.\n\t//\n\t// See: https://core.trac.wordpress.org/ticket/44534\n\tAccept: 'application/json, */*;q=0.1',\n};\n\n/**\n * Default set of fetch option values which should be sent with every request\n * unless explicitly provided through apiFetch options.\n *\n * @type {Object}\n */\nconst DEFAULT_OPTIONS = {\n\tcredentials: 'include',\n};\n\n/** @typedef {import('./types').APIFetchMiddleware} APIFetchMiddleware */\n/** @typedef {import('./types').APIFetchOptions} APIFetchOptions */\n\n/**\n * @type {import('./types').APIFetchMiddleware[]}\n */\nconst middlewares = [\n\tuserLocaleMiddleware,\n\tnamespaceEndpointMiddleware,\n\thttpV1Middleware,\n\tfetchAllMiddleware,\n];\n\n/**\n * Register a middleware\n *\n * @param {import('./types').APIFetchMiddleware} middleware\n */\nfunction registerMiddleware( middleware ) {\n\tmiddlewares.unshift( middleware );\n}\n\n/**\n * Checks the status of a response, throwing the Response as an error if\n * it is outside the 200 range.\n *\n * @param {Response} response\n * @return {Response} The response if the status is in the 200 range.\n */\nconst checkStatus = ( response ) => {\n\tif ( response.status >= 200 && response.status < 300 ) {\n\t\treturn response;\n\t}\n\n\tthrow response;\n};\n\n/** @typedef {(options: import('./types').APIFetchOptions) => Promise} FetchHandler*/\n\n/**\n * @type {FetchHandler}\n */\nconst defaultFetchHandler = ( nextOptions ) => {\n\tconst { url, path, data, parse = true, ...remainingOptions } = nextOptions;\n\tlet { body, headers } = nextOptions;\n\n\t// Merge explicitly-provided headers with default values.\n\theaders = { ...DEFAULT_HEADERS, ...headers };\n\n\t// The `data` property is a shorthand for sending a JSON body.\n\tif ( data ) {\n\t\tbody = JSON.stringify( data );\n\t\theaders[ 'Content-Type' ] = 'application/json';\n\t}\n\n\tconst responsePromise = window.fetch(\n\t\t// Fall back to explicitly passing `window.location` which is the behavior if `undefined` is passed.\n\t\turl || path || window.location.href,\n\t\t{\n\t\t\t...DEFAULT_OPTIONS,\n\t\t\t...remainingOptions,\n\t\t\tbody,\n\t\t\theaders,\n\t\t}\n\t);\n\n\treturn responsePromise.then(\n\t\t( value ) =>\n\t\t\tPromise.resolve( value )\n\t\t\t\t.then( checkStatus )\n\t\t\t\t.catch( ( response ) => parseAndThrowError( response, parse ) )\n\t\t\t\t.then( ( response ) =>\n\t\t\t\t\tparseResponseAndNormalizeError( response, parse )\n\t\t\t\t),\n\t\t( err ) => {\n\t\t\t// Re-throw AbortError for the users to handle it themselves.\n\t\t\tif ( err && err.name === 'AbortError' ) {\n\t\t\t\tthrow err;\n\t\t\t}\n\n\t\t\t// Otherwise, there is most likely no network connection.\n\t\t\t// Unfortunately the message might depend on the browser.\n\t\t\tthrow {\n\t\t\t\tcode: 'fetch_error',\n\t\t\t\tmessage: __( 'You are probably offline.' ),\n\t\t\t};\n\t\t}\n\t);\n};\n\n/** @type {FetchHandler} */\nlet fetchHandler = defaultFetchHandler;\n\n/**\n * Defines a custom fetch handler for making the requests that will override\n * the default one using window.fetch\n *\n * @param {FetchHandler} newFetchHandler The new fetch handler\n */\nfunction setFetchHandler( newFetchHandler ) {\n\tfetchHandler = newFetchHandler;\n}\n\n/**\n * @template T\n * @param {import('./types').APIFetchOptions} options\n * @return {Promise} A promise representing the request processed via the registered middlewares.\n */\nfunction apiFetch( options ) {\n\t// creates a nested function chain that calls all middlewares and finally the `fetchHandler`,\n\t// converting `middlewares = [ m1, m2, m3 ]` into:\n\t// ```\n\t// opts1 => m1( opts1, opts2 => m2( opts2, opts3 => m3( opts3, fetchHandler ) ) );\n\t// ```\n\tconst enhancedHandler = middlewares.reduceRight(\n\t\t( /** @type {FetchHandler} */ next, middleware ) => {\n\t\t\treturn ( workingOptions ) => middleware( workingOptions, next );\n\t\t},\n\t\tfetchHandler\n\t);\n\n\treturn enhancedHandler( options ).catch( ( error ) => {\n\t\tif ( error.code !== 'rest_cookie_invalid_nonce' ) {\n\t\t\treturn Promise.reject( error );\n\t\t}\n\n\t\t// If the nonce is invalid, refresh it and try again.\n\t\treturn (\n\t\t\twindow\n\t\t\t\t// @ts-ignore\n\t\t\t\t.fetch( apiFetch.nonceEndpoint )\n\t\t\t\t.then( checkStatus )\n\t\t\t\t.then( ( data ) => data.text() )\n\t\t\t\t.then( ( text ) => {\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tapiFetch.nonceMiddleware.nonce = text;\n\t\t\t\t\treturn apiFetch( options );\n\t\t\t\t} )\n\t\t);\n\t} );\n}\n\napiFetch.use = registerMiddleware;\napiFetch.setFetchHandler = setFetchHandler;\n\napiFetch.createNonceMiddleware = createNonceMiddleware;\napiFetch.createPreloadingMiddleware = createPreloadingMiddleware;\napiFetch.createRootURLMiddleware = createRootURLMiddleware;\napiFetch.fetchAllMiddleware = fetchAllMiddleware;\napiFetch.mediaUploadMiddleware = mediaUploadMiddleware;\napiFetch.createThemePreviewMiddleware = createThemePreviewMiddleware;\n\nexport default apiFetch;\n","/**\n * WordPress dependencies\n */\nimport { addQueryArgs, hasQueryArg } from '@wordpress/url';\n\n/**\n * @type {import('../types').APIFetchMiddleware}\n */\nconst userLocaleMiddleware = ( options, next ) => {\n\tif (\n\t\ttypeof options.url === 'string' &&\n\t\t! hasQueryArg( options.url, '_locale' )\n\t) {\n\t\toptions.url = addQueryArgs( options.url, { _locale: 'user' } );\n\t}\n\n\tif (\n\t\ttypeof options.path === 'string' &&\n\t\t! hasQueryArg( options.path, '_locale' )\n\t) {\n\t\toptions.path = addQueryArgs( options.path, { _locale: 'user' } );\n\t}\n\n\treturn next( options );\n};\n\nexport default userLocaleMiddleware;\n","/**\n * @param {string} nonce\n * @return {import('../types').APIFetchMiddleware & { nonce: string }} A middleware to enhance a request with a nonce.\n */\nfunction createNonceMiddleware( nonce ) {\n\t/**\n\t * @type {import('../types').APIFetchMiddleware & { nonce: string }}\n\t */\n\tconst middleware = ( options, next ) => {\n\t\tconst { headers = {} } = options;\n\n\t\t// If an 'X-WP-Nonce' header (or any case-insensitive variation\n\t\t// thereof) was specified, no need to add a nonce header.\n\t\tfor ( const headerName in headers ) {\n\t\t\tif (\n\t\t\t\theaderName.toLowerCase() === 'x-wp-nonce' &&\n\t\t\t\theaders[ headerName ] === middleware.nonce\n\t\t\t) {\n\t\t\t\treturn next( options );\n\t\t\t}\n\t\t}\n\n\t\treturn next( {\n\t\t\t...options,\n\t\t\theaders: {\n\t\t\t\t...headers,\n\t\t\t\t'X-WP-Nonce': middleware.nonce,\n\t\t\t},\n\t\t} );\n\t};\n\n\tmiddleware.nonce = nonce;\n\n\treturn middleware;\n}\n\nexport default createNonceMiddleware;\n","/**\n * Internal dependencies\n */\nimport namespaceAndEndpointMiddleware from './namespace-endpoint';\n\n/**\n * @param {string} rootURL\n * @return {import('../types').APIFetchMiddleware} Root URL middleware.\n */\nconst createRootURLMiddleware = ( rootURL ) => ( options, next ) => {\n\treturn namespaceAndEndpointMiddleware( options, ( optionsWithPath ) => {\n\t\tlet url = optionsWithPath.url;\n\t\tlet path = optionsWithPath.path;\n\t\tlet apiRoot;\n\n\t\tif ( typeof path === 'string' ) {\n\t\t\tapiRoot = rootURL;\n\n\t\t\tif ( -1 !== rootURL.indexOf( '?' ) ) {\n\t\t\t\tpath = path.replace( '?', '&' );\n\t\t\t}\n\n\t\t\tpath = path.replace( /^\\//, '' );\n\n\t\t\t// API root may already include query parameter prefix if site is\n\t\t\t// configured to use plain permalinks.\n\t\t\tif (\n\t\t\t\t'string' === typeof apiRoot &&\n\t\t\t\t-1 !== apiRoot.indexOf( '?' )\n\t\t\t) {\n\t\t\t\tpath = path.replace( '?', '&' );\n\t\t\t}\n\n\t\t\turl = apiRoot + path;\n\t\t}\n\n\t\treturn next( {\n\t\t\t...optionsWithPath,\n\t\t\turl,\n\t\t} );\n\t} );\n};\n\nexport default createRootURLMiddleware;\n","/**\n * WordPress dependencies\n */\nimport { addQueryArgs, getQueryArg, removeQueryArgs } from '@wordpress/url';\n\n/**\n * This appends a `wp_theme_preview` parameter to the REST API request URL if\n * the admin URL contains a `theme` GET parameter.\n *\n * If the REST API request URL has contained the `wp_theme_preview` parameter as `''`,\n * then bypass this middleware.\n *\n * @param {Record} themePath\n * @return {import('../types').APIFetchMiddleware} Preloading middleware.\n */\nconst createThemePreviewMiddleware = ( themePath ) => ( options, next ) => {\n\tif ( typeof options.url === 'string' ) {\n\t\tconst wpThemePreview = getQueryArg( options.url, 'wp_theme_preview' );\n\t\tif ( wpThemePreview === undefined ) {\n\t\t\toptions.url = addQueryArgs( options.url, {\n\t\t\t\twp_theme_preview: themePath,\n\t\t\t} );\n\t\t} else if ( wpThemePreview === '' ) {\n\t\t\toptions.url = removeQueryArgs( options.url, 'wp_theme_preview' );\n\t\t}\n\t}\n\n\tif ( typeof options.path === 'string' ) {\n\t\tconst wpThemePreview = getQueryArg( options.path, 'wp_theme_preview' );\n\t\tif ( wpThemePreview === undefined ) {\n\t\t\toptions.path = addQueryArgs( options.path, {\n\t\t\t\twp_theme_preview: themePath,\n\t\t\t} );\n\t\t} else if ( wpThemePreview === '' ) {\n\t\t\toptions.path = removeQueryArgs( options.path, 'wp_theme_preview' );\n\t\t}\n\t}\n\n\treturn next( options );\n};\n\nexport default createThemePreviewMiddleware;\n"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","window","namespaceAndEndpointMiddleware","options","next","namespaceTrimmed","endpointTrimmed","path","namespace","endpoint","replace","prepareResponse","responseData","parse","Promise","resolve","body","Response","JSON","stringify","status","statusText","headers","entries","forEach","value","toLowerCase","_","url","encodeURI","modifyQuery","queryArgs","addQueryArgs","parseResponse","response","json","reject","getNextPageUrl","linkHeader","match","parseLinkHeader","async","pathIsUnbounded","indexOf","urlIsUnbounded","requestContainsUnboundedQuery","apiFetch","per_page","results","Array","isArray","nextPage","mergedResults","concat","nextResponse","undefined","nextResults","OVERRIDE_METHODS","Set","DEFAULT_METHOD","parseResponseAndNormalizeError","shouldParseResponse","catch","res","parseAndThrowError","invalidJsonError","code","message","__","parseJsonAndNormalizeError","then","error","unknownError","DEFAULT_HEADERS","Accept","DEFAULT_OPTIONS","credentials","middlewares","userLocaleMiddleware","hasQueryArg","_locale","namespaceEndpointMiddleware","httpV1Middleware","method","has","toUpperCase","fetchAllMiddleware","checkStatus","fetchHandler","nextOptions","data","remainingOptions","fetch","location","href","err","name","reduceRight","middleware","workingOptions","enhancedHandler","nonceEndpoint","text","nonceMiddleware","nonce","use","unshift","setFetchHandler","newFetchHandler","createNonceMiddleware","headerName","createPreloadingMiddleware","preloadedData","cache","fromEntries","map","normalizePath","rawPath","rest_route","pathFromQuery","getQueryArgs","cacheData","createRootURLMiddleware","rootURL","optionsWithPath","apiRoot","mediaUploadMiddleware","isCreateMethod","isMediaUploadRequest","retries","postProcess","attachmentId","action","createThemePreviewMiddleware","themePath","wpThemePreview","getQueryArg","wp_theme_preview","removeQueryArgs"],"sourceRoot":""}