PluginProbe
Gutenberg / trunk
Gutenberg vtrunk
24.1.0 24.0.0 23.9.1 23.9.0 23.8.0 23.7.2 23.7.1 23.7.0 23.6.1 23.6.2 23.6.0 23.5.3 23.5.2 23.5.1 23.5.0 23.4.0 23.3.2 23.3.1 23.3.0 23.2.0 23.2.1 23.2.2 23.1.1 23.1.0 23.0.1 All 404 releases
← All changes | build/scripts/api-fetch/index.js +24 -6 23.8.0 → trunk View file →
@@ -348,11 +348,18 @@
348 348 var import_i18n2 = __toESM(require_i18n(), 1);
349 349
350 350 // packages/api-fetch/build-module/utils/response.mjs
351 351 var import_i18n = __toESM(require_i18n(), 1);
352 - async function parseJsonAndNormalizeError(response) {
352 + async function parseJsonAndNormalizeError(response, allowEmptyBody = false) {
353 353 try {
354 - return await response.json();
354 + if (typeof response.text !== "function") {
355 + return await response.json();
356 + }
357 + const text = await response.text();
358 + if (allowEmptyBody && text === "") {
359 + return null;
360 + }
361 + return JSON.parse(text);
355 362 } catch {
356 363 throw {
357 364 code: "invalid_json",
358 365 message: (0, import_i18n.__)("The response is not a valid JSON response.")
@@ -365,9 +372,9 @@
365 372 }
366 373 if (response.status === 204) {
367 374 return null;
368 375 }
369 - return await parseJsonAndNormalizeError(response);
376 + return await parseJsonAndNormalizeError(response, true);
370 377 }
371 378 async function parseAndThrowError(response, shouldParseResponse = true) {
372 379 if (!shouldParseResponse) {
373 380 throw response;
@@ -490,8 +497,16 @@
490 497 ];
491 498 function registerMiddleware(middleware) {
492 499 middlewares.unshift(middleware);
493 500 }
501 + function unregisterMiddleware(middleware) {
502 + const index = middlewares.indexOf(middleware);
503 + if (index === -1) {
504 + return false;
505 + }
506 + middlewares.splice(index, 1);
507 + return true;
508 + }
494 509 function enablePreloadMultiUse() {
495 510 for (const middleware of middlewares) {
496 511 middleware[ENABLE_MULTI_USE]?.();
497 512 }
@@ -500,11 +515,11 @@
500 515 for (const middleware of middlewares) {
501 516 middleware[CLEAR]?.();
502 517 }
503 518 }
504 - var defaultFetchHandler = (nextOptions) => {
505 - const { url, path, data, parse = true, ...remainingOptions } = nextOptions;
506 - let { body, headers } = nextOptions;
519 + var defaultFetchHandler = (options) => {
520 + const { url, path, data, parse = true, ...remainingOptions } = options;
521 + let { body, headers } = options;
507 522 headers = { ...DEFAULT_HEADERS, ...headers };
508 523 if (data) {
509 524 body = JSON.stringify(data);
510 525 headers["Content-Type"] = "application/json";
@@ -573,9 +588,11 @@
573 588 });
574 589 });
575 590 };
576 591 apiFetch.use = registerMiddleware;
592 + apiFetch.unregister = unregisterMiddleware;
577 593 apiFetch.setFetchHandler = setFetchHandler;
594 + apiFetch.defaultFetchHandler = defaultFetchHandler;
578 595 apiFetch.privateApis = {};
579 596 lock(apiFetch.privateApis, {
580 597 enablePreloadMultiUse,
581 598 clearPreloadedData
@@ -583,8 +600,9 @@
583 600 apiFetch.createNonceMiddleware = nonce_default;
584 601 apiFetch.createPreloadingMiddleware = preloading_default;
585 602 apiFetch.createRootURLMiddleware = root_url_default;
586 603 apiFetch.fetchAllMiddleware = fetch_all_middleware_default;
604 + apiFetch.httpV1Middleware = http_v1_default;
587 605 apiFetch.mediaUploadMiddleware = media_upload_default;
588 606 apiFetch.createThemePreviewMiddleware = theme_preview_default;
589 607 var index_default = apiFetch;
590 608 return __toCommonJS(index_exports);