@umijs/plugins 4.0.0-canary.20220422.1 → 4.0.0-canary.20220422.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/locale.js CHANGED
@@ -157,7 +157,7 @@ exports.default = (api) => {
157
157
  })) }))),
158
158
  Antd: !!antd,
159
159
  DefaultLocale: JSON.stringify(defaultLocale),
160
- warningPkgPath: (0, plugin_utils_1.winPath)(require.resolve('warning/package')),
160
+ warningPkgPath: (0, plugin_utils_1.winPath)((0, path_1.dirname)(require.resolve('warning/package'))),
161
161
  reactIntlPkgPath,
162
162
  }),
163
163
  });
@@ -184,7 +184,7 @@ exports.default = (api) => {
184
184
  api.writeTmpFile({
185
185
  path: 'index.ts',
186
186
  content: `
187
- export { setLocale, getLocale, useIntl, formatMessage, FormattedMessage } from './localeExports.ts';
187
+ export { setLocale, getLocale, useIntl, injectIntl, formatMessage, FormattedMessage } from './localeExports.ts';
188
188
  export { SelectLang } from './SelectLang.tsx';
189
189
  `,
190
190
  });
@@ -110,5 +110,11 @@ export const setMasterOptions = (newOpts) => options = ({ ...options, ...newOpts
110
110
  });
111
111
  }
112
112
  });
113
+ api.writeTmpFile({
114
+ path: 'index.ts',
115
+ content: `
116
+ export { MicroApp } from './MicroApp';
117
+ `,
118
+ });
113
119
  });
114
120
  };
@@ -135,5 +135,11 @@ if (!window.__POWERED_BY_QIANKUN__) {
135
135
  .replace(/from 'lodash\//g, `from '${(0, plugin_utils_1.winPath)((0, path_1.dirname)(require.resolve('lodash/package')))}/`),
136
136
  });
137
137
  });
138
+ api.writeTmpFile({
139
+ path: 'index.ts',
140
+ content: `
141
+ export { connectMaster } from './connectMaster';
142
+ `,
143
+ });
138
144
  });
139
145
  };
package/dist/request.js CHANGED
@@ -102,7 +102,9 @@ function useRequest(service: any, options: any = {}) {
102
102
 
103
103
  // request 方法 opts 参数的接口
104
104
  interface IRequestOptions extends AxiosRequestConfig {
105
- skipErrorHandler?: boolean
105
+ skipErrorHandler?: boolean;
106
+ requestInterceptors?: IRequestInterceptorTuple[];
107
+ responseInterceptors?: IResponseInterceptorTuple[];
106
108
  }
107
109
 
108
110
  interface IRequestOptionsWithResponse extends IRequestOptions {
@@ -123,12 +125,19 @@ interface IRequest{
123
125
  interface IErrorHandler {
124
126
  (error: RequestError, opts: IRequestOptions): void;
125
127
  }
128
+ type IRequestInterceptor = (config : AxiosRequestConfig) => AxiosRequestConfig;
129
+ type IErrorInterceptor = (error: Error) => Promise<Error>;
130
+ type IResponseInterceptor = <T = any>(response : AxiosResponse<T>) => AxiosResponse<T> ;
131
+ type IRequestInterceptorTuple = [IRequestInterceptor , IErrorInterceptor] | [ IRequestInterceptor ] | IRequestInterceptor
132
+ type IResponseInterceptorTuple = [IResponseInterceptor, IErrorInterceptor] | [IResponseInterceptor] | IResponseInterceptor
126
133
 
127
134
  export interface RequestConfig extends AxiosRequestConfig {
128
135
  errorConfig?: {
129
136
  errorHandler?: IErrorHandler;
130
137
  errorThrower?: <T = any>( res: T ) => void
131
138
  };
139
+ requestInterceptors?: IRequestInterceptorTuple[];
140
+ responseInterceptors?: IResponseInterceptorTuple[];
132
141
  }
133
142
 
134
143
  let requestInstance: AxiosInstance;
@@ -142,11 +151,24 @@ const getConfig = (): RequestConfig => {
142
151
  });
143
152
  return config;
144
153
  };
154
+
145
155
  const getRequestInstance = (): AxiosInstance => {
146
156
  if (requestInstance) return requestInstance;
147
157
  const config = getConfig();
148
158
  requestInstance = axios.create(config);
149
159
 
160
+ config?.requestInterceptors?.forEach((interceptor) => {
161
+ return interceptor instanceof Array ?
162
+ requestInstance.interceptors.request.use(interceptor[0], interceptor[1]):
163
+ requestInstance.interceptors.request.use(interceptor);
164
+ });
165
+
166
+ config?.responseInterceptors?.forEach((interceptor) => {
167
+ return interceptor instanceof Array ?
168
+ requestInstance.interceptors.response.use(interceptor[0], interceptor[1]):
169
+ requestInstance.interceptors.response.use(interceptor);
170
+ });
171
+
150
172
  // 当响应的数据 success 是 false 的时候,抛出 error 以供 errorHandler 处理。
151
173
  requestInstance.interceptors.response.use((response)=>{
152
174
  const { data } = response;
@@ -161,14 +183,36 @@ const getRequestInstance = (): AxiosInstance => {
161
183
  const request: IRequest = (url: string, opts: any = { method: 'GET' }) => {
162
184
  const requestInstance = getRequestInstance();
163
185
  const config = getConfig();
164
- const { getResponse = false } = opts;
186
+ const { getResponse = false, requestInterceptors, responseInterceptors } = opts;
187
+ const requestInterceptorsToEject = requestInterceptors?.map((interceptor) => {
188
+ return interceptor instanceof Array ?
189
+ requestInstance.interceptors.request.use(interceptor[0], interceptor[1]):
190
+ requestInstance.interceptors.request.use(interceptor);
191
+ });
192
+ const responseInterceptorsToEject = responseInterceptors?.map((interceptor) => {
193
+ return interceptor instanceof Array ?
194
+ requestInstance.interceptors.response.use(interceptor[0], interceptor[1]):
195
+ requestInstance.interceptors.response.use(interceptor);
196
+ });
165
197
  return new Promise((resolve, reject)=>{
166
198
  requestInstance
167
199
  .request({...opts, url})
168
200
  .then((res)=>{
201
+ requestInterceptorsToEject?.forEach((interceptor) => {
202
+ requestInstance.interceptors.request.eject(interceptor);
203
+ });
204
+ responseInterceptorsToEject?.forEach((interceptor) => {
205
+ requestInstance.interceptors.response.eject(interceptor);
206
+ });
169
207
  resolve(getResponse ? res : res.data);
170
208
  })
171
209
  .catch((error)=>{
210
+ requestInterceptorsToEject?.forEach((interceptor) => {
211
+ requestInstance.interceptors.request.eject(interceptor);
212
+ });
213
+ responseInterceptorsToEject?.forEach((interceptor) => {
214
+ requestInstance.interceptors.response.eject(interceptor);
215
+ });
172
216
  try {
173
217
  const handler =
174
218
  config.errorConfig?.errorHandler;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@umijs/plugins",
3
- "version": "4.0.0-canary.20220422.1",
3
+ "version": "4.0.0-canary.20220422.2",
4
4
  "description": "@umijs/plugins",
5
5
  "homepage": "https://github.com/umijs/umi-next/tree/master/packages/plugins#readme",
6
6
  "bugs": "https://github.com/umijs/umi-next/issues",
@@ -25,7 +25,7 @@
25
25
  "@ahooksjs/use-request": "^2.0.0",
26
26
  "@ant-design/icons": "^4.7.0",
27
27
  "@ant-design/pro-layout": "^6.35.1",
28
- "@umijs/bundler-utils": "4.0.0-canary.20220422.1",
28
+ "@umijs/bundler-utils": "4.0.0-canary.20220422.2",
29
29
  "antd-dayjs-webpack-plugin": "^1.0.6",
30
30
  "axios": "^0.26.1",
31
31
  "babel-plugin-import": "^1.13.3",
@@ -44,7 +44,7 @@
44
44
  "warning": "^4.0.3"
45
45
  },
46
46
  "devDependencies": {
47
- "umi": "4.0.0-canary.20220422.1"
47
+ "umi": "4.0.0-canary.20220422.2"
48
48
  },
49
49
  "publishConfig": {
50
50
  "access": "public"