From d2d82ee5eeb5f7c34c9a71603dfaaa4d4affe17b Mon Sep 17 00:00:00 2001 From: gitlawr Date: Tue, 2 Jun 2026 21:04:09 +0800 Subject: [PATCH] feat(request): add a response-interceptor seam MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add `extraResponseInterceptors` next to the existing request-interceptor seam and wire it into the request config, so build-time tooling can react to responses (e.g. clear a one-shot request-scoped hint after a write completes). Default is an empty list — no behavior change by default. --- src/request-config.tsx | 10 ++++++++-- src/request.extensions.ts | 8 ++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/request-config.tsx b/src/request-config.tsx index 46064bca..6014051b 100644 --- a/src/request-config.tsx +++ b/src/request-config.tsx @@ -4,7 +4,10 @@ import { history, RequestConfig } from '@umijs/max'; import { message } from 'antd'; import { DEFAULT_ENTER_PAGE } from './config/settings'; import ErrorMessageContent from './pages/_components/error-message-content'; -import { extraRequestInterceptors } from './request.extensions'; +import { + extraRequestInterceptors, + extraResponseInterceptors +} from './request.extensions'; // these APIs do not via the GPUSTACK_API_BASE_URL const NoBaseURLAPIs = ['/auth', '/v1', '/version', '/proxy', '/update']; @@ -49,6 +52,9 @@ export const requestConfig: RequestConfig = { (response) => { // to do something return response; - } + }, + // Build-time tooling can plug additional response interceptors via + // `request.extensions.ts`. Default is an empty list. + ...extraResponseInterceptors ] }; diff --git a/src/request.extensions.ts b/src/request.extensions.ts index 9ca2bbb6..8873a263 100644 --- a/src/request.extensions.ts +++ b/src/request.extensions.ts @@ -13,3 +13,11 @@ export type RequestInterceptor = ( ) => { url: string; options: Record }; export const extraRequestInterceptors: RequestInterceptor[] = []; + +// Response-side counterpart. Each interceptor receives the (successful) +// response and returns it; tooling may overwrite this file to react to +// responses (e.g. clearing a one-shot request-scoped hint after a write +// completes). Default is an empty list. +export type ResponseInterceptor = (response: any) => any; + +export const extraResponseInterceptors: ResponseInterceptor[] = [];