@ureq/impl-axios 0.0.3 → 0.0.4

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/README.md CHANGED
@@ -19,7 +19,7 @@ import { Request } from '@ureq/core';
19
19
  import { AxiosRequestor } from '@ureq/impl-axios';
20
20
 
21
21
  const request = new Request(new AxiosRequestor({
22
- baseURL: 'https://api.example.com',
22
+ baseURL: 'https://jsonplaceholder.typicode.com/todos/1',
23
23
  headers: {
24
24
  'Content-Type': 'application/json'
25
25
  },
@@ -75,7 +75,7 @@ interface AxiosRequestorConfig {
75
75
 
76
76
  ```typescript
77
77
  const requestor = new AxiosRequestor({
78
- baseURL: 'https://api.example.com'
78
+ baseURL: 'https://jsonplaceholder.typicode.com/todos/1'
79
79
  });
80
80
 
81
81
  const request = new Request(requestor);
@@ -86,7 +86,7 @@ const data = await request.get('/users');
86
86
 
87
87
  ```typescript
88
88
  const requestor = new AxiosRequestor({
89
- baseURL: 'https://api.example.com',
89
+ baseURL: 'https://jsonplaceholder.typicode.com/todos/1',
90
90
  headers: {
91
91
  'Authorization': 'Bearer your-token'
92
92
  }
@@ -97,7 +97,7 @@ const requestor = new AxiosRequestor({
97
97
 
98
98
  ```typescript
99
99
  const requestor = new AxiosRequestor({
100
- baseURL: 'https://api.example.com',
100
+ baseURL: 'https://jsonplaceholder.typicode.com/todos/1',
101
101
  withCredentials: true // 携带 Cookie
102
102
  });
103
103
  ```
package/dist/index.js CHANGED
@@ -8,6 +8,14 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
8
  var axios__default = /*#__PURE__*/_interopDefault(axios);
9
9
 
10
10
  // src/index.ts
11
+ var responseTypeMap = {
12
+ json: "json",
13
+ text: "text",
14
+ blob: "blob",
15
+ arraybuffer: "arraybuffer",
16
+ formData: "json"
17
+ // axios 不直接支持 formData,回退到 json
18
+ };
11
19
  var AxiosRequestor = class {
12
20
  constructor(options) {
13
21
  this.instance = axios__default.default.create({
@@ -17,16 +25,23 @@ var AxiosRequestor = class {
17
25
  });
18
26
  }
19
27
  convertOptions(options) {
28
+ if (!options) return {};
29
+ const { responseType, responseTransformer, ...restOptions } = options;
30
+ const axiosResponseType = responseType ? responseTypeMap[responseType] || "json" : void 0;
20
31
  return {
21
- headers: options?.headers,
22
- signal: options?.signal,
23
- responseType: options?.responseType,
24
- ...options
32
+ ...restOptions,
33
+ responseType: axiosResponseType
25
34
  };
26
35
  }
27
- convertResponse(response) {
36
+ async convertResponse(response, options) {
37
+ let data;
38
+ if (options?.responseTransformer) {
39
+ data = await options.responseTransformer(response);
40
+ } else {
41
+ data = response.data;
42
+ }
28
43
  return {
29
- data: response.data,
44
+ data,
30
45
  status: response.status,
31
46
  statusText: response.statusText,
32
47
  headers: response.headers
@@ -38,7 +53,7 @@ var AxiosRequestor = class {
38
53
  async get(url, options) {
39
54
  try {
40
55
  const response = await this.instance.get(url, this.convertOptions(options));
41
- return this.convertResponse(response);
56
+ return this.convertResponse(response, options);
42
57
  } catch (error) {
43
58
  this.handleError(error, "GET", url);
44
59
  }
@@ -46,7 +61,7 @@ var AxiosRequestor = class {
46
61
  async post(url, data, options) {
47
62
  try {
48
63
  const response = await this.instance.post(url, data, this.convertOptions(options));
49
- return this.convertResponse(response);
64
+ return this.convertResponse(response, options);
50
65
  } catch (error) {
51
66
  this.handleError(error, "POST", url);
52
67
  }
@@ -54,7 +69,7 @@ var AxiosRequestor = class {
54
69
  async put(url, data, options) {
55
70
  try {
56
71
  const response = await this.instance.put(url, data, this.convertOptions(options));
57
- return this.convertResponse(response);
72
+ return this.convertResponse(response, options);
58
73
  } catch (error) {
59
74
  this.handleError(error, "PUT", url);
60
75
  }
@@ -62,7 +77,7 @@ var AxiosRequestor = class {
62
77
  async delete(url, options) {
63
78
  try {
64
79
  const response = await this.instance.delete(url, this.convertOptions(options));
65
- return this.convertResponse(response);
80
+ return this.convertResponse(response, options);
66
81
  } catch (error) {
67
82
  this.handleError(error, "DELETE", url);
68
83
  }
@@ -70,7 +85,7 @@ var AxiosRequestor = class {
70
85
  async patch(url, data, options) {
71
86
  try {
72
87
  const response = await this.instance.patch(url, data, this.convertOptions(options));
73
- return this.convertResponse(response);
88
+ return this.convertResponse(response, options);
74
89
  } catch (error) {
75
90
  this.handleError(error, "PATCH", url);
76
91
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":["axios","createRequestError"],"mappings":"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","file":"index.js","sourcesContent":["import axios, { AxiosInstance, AxiosRequestConfig, ResponseType } from 'axios';\nimport { Requestor, RequestOptions, Response, createRequestError } from '@ureq/core';\n\nexport interface AxiosRequestorOptions {\n baseURL?: string;\n timeout?: number;\n headers?: Record<string, string>;\n}\n\nexport class AxiosRequestor implements Requestor {\n private instance: AxiosInstance;\n\n constructor(options?: AxiosRequestorOptions) {\n this.instance = axios.create({\n baseURL: options?.baseURL,\n timeout: options?.timeout,\n headers: options?.headers,\n });\n }\n\n private convertOptions(options?: RequestOptions): AxiosRequestConfig {\n return {\n headers: options?.headers,\n signal: options?.signal,\n responseType: options?.responseType as ResponseType | undefined,\n ...options,\n };\n }\n\n private convertResponse<T>(response: any): Response<T> {\n return {\n data: response.data,\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n };\n }\n\n private handleError(error: any, method?: string, url?: string): never {\n throw createRequestError(error, { method, url });\n }\n\n async get<T>(url: string, options?: RequestOptions): Promise<Response<T>> {\n try {\n const response = await this.instance.get(url, this.convertOptions(options));\n return this.convertResponse(response);\n } catch (error) {\n this.handleError(error, 'GET', url);\n }\n }\n\n async post<T>(url: string, data?: any, options?: RequestOptions): Promise<Response<T>> {\n try {\n const response = await this.instance.post(url, data, this.convertOptions(options));\n return this.convertResponse(response);\n } catch (error) {\n this.handleError(error, 'POST', url);\n }\n }\n\n async put<T>(url: string, data?: any, options?: RequestOptions): Promise<Response<T>> {\n try {\n const response = await this.instance.put(url, data, this.convertOptions(options));\n return this.convertResponse(response);\n } catch (error) {\n this.handleError(error, 'PUT', url);\n }\n }\n\n async delete<T>(url: string, options?: RequestOptions): Promise<Response<T>> {\n try {\n const response = await this.instance.delete(url, this.convertOptions(options));\n return this.convertResponse(response);\n } catch (error) {\n this.handleError(error, 'DELETE', url);\n }\n }\n\n async patch<T>(url: string, data?: any, options?: RequestOptions): Promise<Response<T>> {\n try {\n const response = await this.instance.patch(url, data, this.convertOptions(options));\n return this.convertResponse(response);\n } catch (error) {\n this.handleError(error, 'PATCH', url);\n }\n }\n} "]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":["axios","createRequestError"],"mappings":"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","file":"index.js","sourcesContent":["import axios, { AxiosInstance, AxiosRequestConfig, ResponseType as AxiosResponseType } from 'axios';\nimport { Requestor, RequestOptions, Response, createRequestError } from '@ureq/core';\n\nexport interface AxiosRequestorOptions {\n baseURL?: string;\n timeout?: number;\n headers?: Record<string, string>;\n}\n\n// ResponseType 映射:将 ureq 的 responseType 转换为 axios 的 responseType\nconst responseTypeMap: Record<string, AxiosResponseType> = {\n json: 'json',\n text: 'text',\n blob: 'blob',\n arraybuffer: 'arraybuffer',\n formData: 'json', // axios 不直接支持 formData,回退到 json\n};\n\nexport class AxiosRequestor implements Requestor {\n private instance: AxiosInstance;\n\n constructor(options?: AxiosRequestorOptions) {\n this.instance = axios.create({\n baseURL: options?.baseURL,\n timeout: options?.timeout,\n headers: options?.headers,\n });\n }\n\n private convertOptions(options?: RequestOptions): AxiosRequestConfig {\n if (!options) return {};\n\n // 解构出 ureq 特有的选项,避免传递给 axios\n const { responseType, responseTransformer, ...restOptions } = options;\n\n const axiosResponseType = responseType\n ? responseTypeMap[responseType] || 'json'\n : undefined;\n\n return {\n ...restOptions,\n responseType: axiosResponseType,\n };\n }\n\n private async convertResponse<T>(\n response: any,\n options?: RequestOptions\n ): Promise<Response<T>> {\n let data: T;\n\n // 优先使用自定义转换器\n if (options?.responseTransformer) {\n data = await options.responseTransformer(response);\n } else {\n data = response.data;\n }\n\n return {\n data,\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n };\n }\n\n private handleError(error: any, method?: string, url?: string): never {\n throw createRequestError(error, { method, url });\n }\n\n async get<T>(url: string, options?: RequestOptions): Promise<Response<T>> {\n try {\n const response = await this.instance.get(url, this.convertOptions(options));\n return this.convertResponse(response, options);\n } catch (error) {\n this.handleError(error, 'GET', url);\n }\n }\n\n async post<T>(url: string, data?: any, options?: RequestOptions): Promise<Response<T>> {\n try {\n const response = await this.instance.post(url, data, this.convertOptions(options));\n return this.convertResponse(response, options);\n } catch (error) {\n this.handleError(error, 'POST', url);\n }\n }\n\n async put<T>(url: string, data?: any, options?: RequestOptions): Promise<Response<T>> {\n try {\n const response = await this.instance.put(url, data, this.convertOptions(options));\n return this.convertResponse(response, options);\n } catch (error) {\n this.handleError(error, 'PUT', url);\n }\n }\n\n async delete<T>(url: string, options?: RequestOptions): Promise<Response<T>> {\n try {\n const response = await this.instance.delete(url, this.convertOptions(options));\n return this.convertResponse(response, options);\n } catch (error) {\n this.handleError(error, 'DELETE', url);\n }\n }\n\n async patch<T>(url: string, data?: any, options?: RequestOptions): Promise<Response<T>> {\n try {\n const response = await this.instance.patch(url, data, this.convertOptions(options));\n return this.convertResponse(response, options);\n } catch (error) {\n this.handleError(error, 'PATCH', url);\n }\n }\n} "]}
package/dist/index.mjs CHANGED
@@ -2,6 +2,14 @@ import axios from 'axios';
2
2
  import { createRequestError } from '@ureq/core';
3
3
 
4
4
  // src/index.ts
5
+ var responseTypeMap = {
6
+ json: "json",
7
+ text: "text",
8
+ blob: "blob",
9
+ arraybuffer: "arraybuffer",
10
+ formData: "json"
11
+ // axios 不直接支持 formData,回退到 json
12
+ };
5
13
  var AxiosRequestor = class {
6
14
  constructor(options) {
7
15
  this.instance = axios.create({
@@ -11,16 +19,23 @@ var AxiosRequestor = class {
11
19
  });
12
20
  }
13
21
  convertOptions(options) {
22
+ if (!options) return {};
23
+ const { responseType, responseTransformer, ...restOptions } = options;
24
+ const axiosResponseType = responseType ? responseTypeMap[responseType] || "json" : void 0;
14
25
  return {
15
- headers: options?.headers,
16
- signal: options?.signal,
17
- responseType: options?.responseType,
18
- ...options
26
+ ...restOptions,
27
+ responseType: axiosResponseType
19
28
  };
20
29
  }
21
- convertResponse(response) {
30
+ async convertResponse(response, options) {
31
+ let data;
32
+ if (options?.responseTransformer) {
33
+ data = await options.responseTransformer(response);
34
+ } else {
35
+ data = response.data;
36
+ }
22
37
  return {
23
- data: response.data,
38
+ data,
24
39
  status: response.status,
25
40
  statusText: response.statusText,
26
41
  headers: response.headers
@@ -32,7 +47,7 @@ var AxiosRequestor = class {
32
47
  async get(url, options) {
33
48
  try {
34
49
  const response = await this.instance.get(url, this.convertOptions(options));
35
- return this.convertResponse(response);
50
+ return this.convertResponse(response, options);
36
51
  } catch (error) {
37
52
  this.handleError(error, "GET", url);
38
53
  }
@@ -40,7 +55,7 @@ var AxiosRequestor = class {
40
55
  async post(url, data, options) {
41
56
  try {
42
57
  const response = await this.instance.post(url, data, this.convertOptions(options));
43
- return this.convertResponse(response);
58
+ return this.convertResponse(response, options);
44
59
  } catch (error) {
45
60
  this.handleError(error, "POST", url);
46
61
  }
@@ -48,7 +63,7 @@ var AxiosRequestor = class {
48
63
  async put(url, data, options) {
49
64
  try {
50
65
  const response = await this.instance.put(url, data, this.convertOptions(options));
51
- return this.convertResponse(response);
66
+ return this.convertResponse(response, options);
52
67
  } catch (error) {
53
68
  this.handleError(error, "PUT", url);
54
69
  }
@@ -56,7 +71,7 @@ var AxiosRequestor = class {
56
71
  async delete(url, options) {
57
72
  try {
58
73
  const response = await this.instance.delete(url, this.convertOptions(options));
59
- return this.convertResponse(response);
74
+ return this.convertResponse(response, options);
60
75
  } catch (error) {
61
76
  this.handleError(error, "DELETE", url);
62
77
  }
@@ -64,7 +79,7 @@ var AxiosRequestor = class {
64
79
  async patch(url, data, options) {
65
80
  try {
66
81
  const response = await this.instance.patch(url, data, this.convertOptions(options));
67
- return this.convertResponse(response);
82
+ return this.convertResponse(response, options);
68
83
  } catch (error) {
69
84
  this.handleError(error, "PATCH", url);
70
85
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["import axios, { AxiosInstance, AxiosRequestConfig, ResponseType } from 'axios';\nimport { Requestor, RequestOptions, Response, createRequestError } from '@ureq/core';\n\nexport interface AxiosRequestorOptions {\n baseURL?: string;\n timeout?: number;\n headers?: Record<string, string>;\n}\n\nexport class AxiosRequestor implements Requestor {\n private instance: AxiosInstance;\n\n constructor(options?: AxiosRequestorOptions) {\n this.instance = axios.create({\n baseURL: options?.baseURL,\n timeout: options?.timeout,\n headers: options?.headers,\n });\n }\n\n private convertOptions(options?: RequestOptions): AxiosRequestConfig {\n return {\n headers: options?.headers,\n signal: options?.signal,\n responseType: options?.responseType as ResponseType | undefined,\n ...options,\n };\n }\n\n private convertResponse<T>(response: any): Response<T> {\n return {\n data: response.data,\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n };\n }\n\n private handleError(error: any, method?: string, url?: string): never {\n throw createRequestError(error, { method, url });\n }\n\n async get<T>(url: string, options?: RequestOptions): Promise<Response<T>> {\n try {\n const response = await this.instance.get(url, this.convertOptions(options));\n return this.convertResponse(response);\n } catch (error) {\n this.handleError(error, 'GET', url);\n }\n }\n\n async post<T>(url: string, data?: any, options?: RequestOptions): Promise<Response<T>> {\n try {\n const response = await this.instance.post(url, data, this.convertOptions(options));\n return this.convertResponse(response);\n } catch (error) {\n this.handleError(error, 'POST', url);\n }\n }\n\n async put<T>(url: string, data?: any, options?: RequestOptions): Promise<Response<T>> {\n try {\n const response = await this.instance.put(url, data, this.convertOptions(options));\n return this.convertResponse(response);\n } catch (error) {\n this.handleError(error, 'PUT', url);\n }\n }\n\n async delete<T>(url: string, options?: RequestOptions): Promise<Response<T>> {\n try {\n const response = await this.instance.delete(url, this.convertOptions(options));\n return this.convertResponse(response);\n } catch (error) {\n this.handleError(error, 'DELETE', url);\n }\n }\n\n async patch<T>(url: string, data?: any, options?: RequestOptions): Promise<Response<T>> {\n try {\n const response = await this.instance.patch(url, data, this.convertOptions(options));\n return this.convertResponse(response);\n } catch (error) {\n this.handleError(error, 'PATCH', url);\n }\n }\n} "]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["import axios, { AxiosInstance, AxiosRequestConfig, ResponseType as AxiosResponseType } from 'axios';\nimport { Requestor, RequestOptions, Response, createRequestError } from '@ureq/core';\n\nexport interface AxiosRequestorOptions {\n baseURL?: string;\n timeout?: number;\n headers?: Record<string, string>;\n}\n\n// ResponseType 映射:将 ureq 的 responseType 转换为 axios 的 responseType\nconst responseTypeMap: Record<string, AxiosResponseType> = {\n json: 'json',\n text: 'text',\n blob: 'blob',\n arraybuffer: 'arraybuffer',\n formData: 'json', // axios 不直接支持 formData,回退到 json\n};\n\nexport class AxiosRequestor implements Requestor {\n private instance: AxiosInstance;\n\n constructor(options?: AxiosRequestorOptions) {\n this.instance = axios.create({\n baseURL: options?.baseURL,\n timeout: options?.timeout,\n headers: options?.headers,\n });\n }\n\n private convertOptions(options?: RequestOptions): AxiosRequestConfig {\n if (!options) return {};\n\n // 解构出 ureq 特有的选项,避免传递给 axios\n const { responseType, responseTransformer, ...restOptions } = options;\n\n const axiosResponseType = responseType\n ? responseTypeMap[responseType] || 'json'\n : undefined;\n\n return {\n ...restOptions,\n responseType: axiosResponseType,\n };\n }\n\n private async convertResponse<T>(\n response: any,\n options?: RequestOptions\n ): Promise<Response<T>> {\n let data: T;\n\n // 优先使用自定义转换器\n if (options?.responseTransformer) {\n data = await options.responseTransformer(response);\n } else {\n data = response.data;\n }\n\n return {\n data,\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n };\n }\n\n private handleError(error: any, method?: string, url?: string): never {\n throw createRequestError(error, { method, url });\n }\n\n async get<T>(url: string, options?: RequestOptions): Promise<Response<T>> {\n try {\n const response = await this.instance.get(url, this.convertOptions(options));\n return this.convertResponse(response, options);\n } catch (error) {\n this.handleError(error, 'GET', url);\n }\n }\n\n async post<T>(url: string, data?: any, options?: RequestOptions): Promise<Response<T>> {\n try {\n const response = await this.instance.post(url, data, this.convertOptions(options));\n return this.convertResponse(response, options);\n } catch (error) {\n this.handleError(error, 'POST', url);\n }\n }\n\n async put<T>(url: string, data?: any, options?: RequestOptions): Promise<Response<T>> {\n try {\n const response = await this.instance.put(url, data, this.convertOptions(options));\n return this.convertResponse(response, options);\n } catch (error) {\n this.handleError(error, 'PUT', url);\n }\n }\n\n async delete<T>(url: string, options?: RequestOptions): Promise<Response<T>> {\n try {\n const response = await this.instance.delete(url, this.convertOptions(options));\n return this.convertResponse(response, options);\n } catch (error) {\n this.handleError(error, 'DELETE', url);\n }\n }\n\n async patch<T>(url: string, data?: any, options?: RequestOptions): Promise<Response<T>> {\n try {\n const response = await this.instance.patch(url, data, this.convertOptions(options));\n return this.convertResponse(response, options);\n } catch (error) {\n this.handleError(error, 'PATCH', url);\n }\n }\n} "]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ureq/impl-axios",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "description": "Axios implementation for universal request library",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -20,7 +20,7 @@
20
20
  },
21
21
  "dependencies": {
22
22
  "axios": "^1.0.0",
23
- "@ureq/core": "0.0.3"
23
+ "@ureq/core": "0.0.4"
24
24
  },
25
25
  "devDependencies": {
26
26
  "@types/node": "^20.0.0",
@@ -31,6 +31,6 @@
31
31
  "scripts": {
32
32
  "build": "tsup",
33
33
  "dev": "tsup --watch",
34
- "test": "vitest"
34
+ "test": "vitest --run"
35
35
  }
36
36
  }