fexios-browser 1.1.1 → 2.1.0

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
@@ -1,3 +1,82 @@
1
- # Fexios
1
+ # Fexios-Browser
2
2
 
3
- 对fetch的封装,使其能够表现的像axios
3
+ ## 简介
4
+
5
+ 对fetch的封装
6
+ 拥有以下功能
7
+
8
+ - 自动`await json`
9
+ - 有拦截器
10
+ - 服务器响应放在data里面
11
+ - 请求配置拥有泛型
12
+
13
+ ## 安装
14
+
15
+ ```bash
16
+ npm i fexios-browser
17
+ ```
18
+
19
+ ```bash
20
+ pnpm add fexios-browser
21
+ ```
22
+
23
+ ## 基本使用
24
+
25
+ ```ts
26
+ type UserRequest = {
27
+ account: string,
28
+ password: string,
29
+ };
30
+
31
+ type UserResponse = UserRequest & {
32
+ token: string,
33
+ };
34
+ // 请求类型和响应类型
35
+ const api = new Fexios<UserRequest, UserResponse>({
36
+ baseURL: "http://xxx",
37
+ headers: { "Content-Type": "application/json" }
38
+ });
39
+
40
+ const response = await api.post('/api/v1/login', {
41
+ account: "18259008878",
42
+ password: "123456"
43
+ });
44
+
45
+ if (response.type === 'json') { // 如果能够自动json处理
46
+ console.log(response.data satisfies UserResponse);
47
+ } else { // 否则返回Response
48
+ console.log(response.data satisfies Response);
49
+ }
50
+ ```
51
+
52
+ ## 拦截器
53
+
54
+ ```ts
55
+ // 请求拦截器
56
+ api.interceptors.request.use((config) => {
57
+ console.log({
58
+ message: 'Request in interceptor',
59
+ data: config,
60
+ });
61
+ return config;
62
+ }, (error) => {
63
+ console.error({
64
+ message: 'An error occurred during the request',
65
+ reason: error,
66
+ });
67
+ return Promise.reject(error);
68
+ });
69
+ // 响应拦截器
70
+ api.interceptors.response.use((response) => {
71
+ console.log({
72
+ message: 'Response in interceptor',
73
+ data: response,
74
+ });
75
+ return response;
76
+ }, (error) => {
77
+ console.error({
78
+ message: 'An error occurred during the response',
79
+ reason: error,
80
+ });
81
+ });
82
+ ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fexios-browser",
3
- "version": "1.1.1",
3
+ "version": "2.1.0",
4
4
  "description": "对fetch的封装, 使其能够表现的像axios",
5
5
  "main": "dist/index.cjs",
6
6
  "types": "dist/index.d.ts",
@@ -1,56 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/InterceptorManager.ts
21
- var InterceptorManager_exports = {};
22
- __export(InterceptorManager_exports, {
23
- default: () => InterceptorManager_default
24
- });
25
- module.exports = __toCommonJS(InterceptorManager_exports);
26
- var InterceptorManager = class {
27
- handlers;
28
- constructor() {
29
- this.handlers = [];
30
- }
31
- use(fulfilled, rejected) {
32
- this.handlers.push({
33
- fulfilled,
34
- rejected
35
- });
36
- return this.handlers.length - 1;
37
- }
38
- eject(id) {
39
- if (this.handlers[id]) {
40
- this.handlers[id] = null;
41
- }
42
- }
43
- clear() {
44
- if (this.handlers) {
45
- this.handlers = [];
46
- }
47
- }
48
- forEach(fn) {
49
- this.handlers.forEach((handler) => {
50
- if (handler !== null) {
51
- fn(handler);
52
- }
53
- });
54
- }
55
- };
56
- var InterceptorManager_default = InterceptorManager;
@@ -1,10 +0,0 @@
1
- declare class InterceptorManager {
2
- private handlers;
3
- constructor();
4
- use(fulfilled: Function, rejected: Function): number;
5
- eject(id: number): void;
6
- clear(): void;
7
- forEach(fn: Function): void;
8
- }
9
-
10
- export { InterceptorManager as default };
@@ -1,10 +0,0 @@
1
- declare class InterceptorManager {
2
- private handlers;
3
- constructor();
4
- use(fulfilled: Function, rejected: Function): number;
5
- eject(id: number): void;
6
- clear(): void;
7
- forEach(fn: Function): void;
8
- }
9
-
10
- export { InterceptorManager as default };
@@ -1,6 +0,0 @@
1
- import {
2
- InterceptorManager_default
3
- } from "./chunk-UDNTQS3I.js";
4
- export {
5
- InterceptorManager_default as default
6
- };
@@ -1,36 +0,0 @@
1
- // src/InterceptorManager.ts
2
- var InterceptorManager = class {
3
- handlers;
4
- constructor() {
5
- this.handlers = [];
6
- }
7
- use(fulfilled, rejected) {
8
- this.handlers.push({
9
- fulfilled,
10
- rejected
11
- });
12
- return this.handlers.length - 1;
13
- }
14
- eject(id) {
15
- if (this.handlers[id]) {
16
- this.handlers[id] = null;
17
- }
18
- }
19
- clear() {
20
- if (this.handlers) {
21
- this.handlers = [];
22
- }
23
- }
24
- forEach(fn) {
25
- this.handlers.forEach((handler) => {
26
- if (handler !== null) {
27
- fn(handler);
28
- }
29
- });
30
- }
31
- };
32
- var InterceptorManager_default = InterceptorManager;
33
-
34
- export {
35
- InterceptorManager_default
36
- };
package/dist/index.cjs DELETED
@@ -1,153 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/index.ts
21
- var index_exports = {};
22
- __export(index_exports, {
23
- default: () => index_default
24
- });
25
- module.exports = __toCommonJS(index_exports);
26
-
27
- // src/InterceptorManager.ts
28
- var InterceptorManager = class {
29
- handlers;
30
- constructor() {
31
- this.handlers = [];
32
- }
33
- use(fulfilled, rejected) {
34
- this.handlers.push({
35
- fulfilled,
36
- rejected
37
- });
38
- return this.handlers.length - 1;
39
- }
40
- eject(id) {
41
- if (this.handlers[id]) {
42
- this.handlers[id] = null;
43
- }
44
- }
45
- clear() {
46
- if (this.handlers) {
47
- this.handlers = [];
48
- }
49
- }
50
- forEach(fn) {
51
- this.handlers.forEach((handler) => {
52
- if (handler !== null) {
53
- fn(handler);
54
- }
55
- });
56
- }
57
- };
58
- var InterceptorManager_default = InterceptorManager;
59
-
60
- // src/index.ts
61
- var Fexios = class {
62
- defaults;
63
- interceptors;
64
- constructor(initConfig) {
65
- this.defaults = initConfig;
66
- this.interceptors = {
67
- request: new InterceptorManager_default(),
68
- response: new InterceptorManager_default()
69
- };
70
- }
71
- async request(request) {
72
- try {
73
- const mergedRequest = {
74
- ...request,
75
- headers: { ...this.defaults.headers, ...request.headers },
76
- baseURL: request.baseURL || this.defaults.baseURL
77
- };
78
- let chain = Promise.resolve(mergedRequest);
79
- this.interceptors.request.forEach(({ fulfilled, rejected }) => {
80
- chain = chain.then(fulfilled, rejected);
81
- });
82
- let processedRequest = await chain;
83
- const rowResponse = await fetch(new URL(processedRequest.url, processedRequest.baseURL), {
84
- method: processedRequest.method,
85
- headers: processedRequest.headers,
86
- body: processedRequest.data ? JSON.stringify(processedRequest.data) : void 0
87
- });
88
- const contentType = rowResponse.headers.get("Content-Type") || "";
89
- let responseData;
90
- if (contentType.includes("application/json")) {
91
- responseData = await rowResponse.json();
92
- } else {
93
- responseData = rowResponse;
94
- }
95
- const headers = {};
96
- rowResponse.headers.forEach((value, key) => {
97
- headers[key] = value;
98
- });
99
- let response = {
100
- status: rowResponse.status,
101
- statusText: rowResponse.statusText,
102
- data: responseData,
103
- headers,
104
- request
105
- };
106
- let responseChain;
107
- if (rowResponse.ok) {
108
- responseChain = Promise.resolve(response);
109
- } else {
110
- responseChain = Promise.reject(response);
111
- }
112
- this.interceptors.response.forEach(({ fulfilled, rejected }) => {
113
- responseChain = responseChain.then(fulfilled, rejected);
114
- });
115
- return await responseChain;
116
- } catch (error) {
117
- throw error;
118
- }
119
- }
120
- async get(url, request) {
121
- const getRequest = {
122
- ...request,
123
- url,
124
- method: "GET"
125
- };
126
- return this.request(getRequest);
127
- }
128
- async post(url, request) {
129
- const postRequest = {
130
- ...request,
131
- url,
132
- method: "POST"
133
- };
134
- return this.request(postRequest);
135
- }
136
- async delete(url, request) {
137
- const deleteRequest = {
138
- ...request,
139
- url,
140
- method: "DELETE"
141
- };
142
- return this.request(deleteRequest);
143
- }
144
- async put(url, request) {
145
- const putRequest = {
146
- ...request,
147
- url,
148
- method: "PUT"
149
- };
150
- return this.request(putRequest);
151
- }
152
- };
153
- var index_default = Fexios;
package/dist/index.d.cts DELETED
@@ -1,35 +0,0 @@
1
- import InterceptorManager from './InterceptorManager.cjs';
2
-
3
- interface FRequest {
4
- url: string | URL;
5
- headers?: Record<string, string>;
6
- method: "GET" | "POST" | "DELETE" | "PUT";
7
- baseURL?: string | URL;
8
- data?: any;
9
- }
10
- interface FResponse {
11
- status: number;
12
- statusText: string;
13
- data: any;
14
- headers: Record<string, string>;
15
- request: FRequest;
16
- }
17
- interface InitConfig {
18
- baseURL: string | URL;
19
- headers: Record<string, string>;
20
- }
21
- declare class Fexios {
22
- defaults: InitConfig;
23
- interceptors: {
24
- request: InterceptorManager;
25
- response: InterceptorManager;
26
- };
27
- constructor(initConfig: InitConfig);
28
- request(request: FRequest): Promise<FResponse>;
29
- get(url: string | URL, request: Omit<FRequest, "url" | "method">): Promise<FResponse>;
30
- post(url: string | URL, request: Omit<FRequest, "url" | "method">): Promise<FResponse>;
31
- delete(url: string | URL, request: Omit<FRequest, "url" | "method">): Promise<FResponse>;
32
- put(url: string | URL, request: Omit<FRequest, "url" | "method">): Promise<FResponse>;
33
- }
34
-
35
- export { type FRequest, type FResponse, type InitConfig, Fexios as default };
package/dist/index.d.ts DELETED
@@ -1,35 +0,0 @@
1
- import InterceptorManager from './InterceptorManager.js';
2
-
3
- interface FRequest {
4
- url: string | URL;
5
- headers?: Record<string, string>;
6
- method: "GET" | "POST" | "DELETE" | "PUT";
7
- baseURL?: string | URL;
8
- data?: any;
9
- }
10
- interface FResponse {
11
- status: number;
12
- statusText: string;
13
- data: any;
14
- headers: Record<string, string>;
15
- request: FRequest;
16
- }
17
- interface InitConfig {
18
- baseURL: string | URL;
19
- headers: Record<string, string>;
20
- }
21
- declare class Fexios {
22
- defaults: InitConfig;
23
- interceptors: {
24
- request: InterceptorManager;
25
- response: InterceptorManager;
26
- };
27
- constructor(initConfig: InitConfig);
28
- request(request: FRequest): Promise<FResponse>;
29
- get(url: string | URL, request: Omit<FRequest, "url" | "method">): Promise<FResponse>;
30
- post(url: string | URL, request: Omit<FRequest, "url" | "method">): Promise<FResponse>;
31
- delete(url: string | URL, request: Omit<FRequest, "url" | "method">): Promise<FResponse>;
32
- put(url: string | URL, request: Omit<FRequest, "url" | "method">): Promise<FResponse>;
33
- }
34
-
35
- export { type FRequest, type FResponse, type InitConfig, Fexios as default };
package/dist/index.js DELETED
@@ -1,101 +0,0 @@
1
- import {
2
- InterceptorManager_default
3
- } from "./chunk-UDNTQS3I.js";
4
-
5
- // src/index.ts
6
- var Fexios = class {
7
- defaults;
8
- interceptors;
9
- constructor(initConfig) {
10
- this.defaults = initConfig;
11
- this.interceptors = {
12
- request: new InterceptorManager_default(),
13
- response: new InterceptorManager_default()
14
- };
15
- }
16
- async request(request) {
17
- try {
18
- const mergedRequest = {
19
- ...request,
20
- headers: { ...this.defaults.headers, ...request.headers },
21
- baseURL: request.baseURL || this.defaults.baseURL
22
- };
23
- let chain = Promise.resolve(mergedRequest);
24
- this.interceptors.request.forEach(({ fulfilled, rejected }) => {
25
- chain = chain.then(fulfilled, rejected);
26
- });
27
- let processedRequest = await chain;
28
- const rowResponse = await fetch(new URL(processedRequest.url, processedRequest.baseURL), {
29
- method: processedRequest.method,
30
- headers: processedRequest.headers,
31
- body: processedRequest.data ? JSON.stringify(processedRequest.data) : void 0
32
- });
33
- const contentType = rowResponse.headers.get("Content-Type") || "";
34
- let responseData;
35
- if (contentType.includes("application/json")) {
36
- responseData = await rowResponse.json();
37
- } else {
38
- responseData = rowResponse;
39
- }
40
- const headers = {};
41
- rowResponse.headers.forEach((value, key) => {
42
- headers[key] = value;
43
- });
44
- let response = {
45
- status: rowResponse.status,
46
- statusText: rowResponse.statusText,
47
- data: responseData,
48
- headers,
49
- request
50
- };
51
- let responseChain;
52
- if (rowResponse.ok) {
53
- responseChain = Promise.resolve(response);
54
- } else {
55
- responseChain = Promise.reject(response);
56
- }
57
- this.interceptors.response.forEach(({ fulfilled, rejected }) => {
58
- responseChain = responseChain.then(fulfilled, rejected);
59
- });
60
- return await responseChain;
61
- } catch (error) {
62
- throw error;
63
- }
64
- }
65
- async get(url, request) {
66
- const getRequest = {
67
- ...request,
68
- url,
69
- method: "GET"
70
- };
71
- return this.request(getRequest);
72
- }
73
- async post(url, request) {
74
- const postRequest = {
75
- ...request,
76
- url,
77
- method: "POST"
78
- };
79
- return this.request(postRequest);
80
- }
81
- async delete(url, request) {
82
- const deleteRequest = {
83
- ...request,
84
- url,
85
- method: "DELETE"
86
- };
87
- return this.request(deleteRequest);
88
- }
89
- async put(url, request) {
90
- const putRequest = {
91
- ...request,
92
- url,
93
- method: "PUT"
94
- };
95
- return this.request(putRequest);
96
- }
97
- };
98
- var index_default = Fexios;
99
- export {
100
- index_default as default
101
- };