qing-client 0.0.57 → 1.0.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 +293 -0
- package/lib/{client → core}/BaseClient.d.ts +9 -7
- package/lib/core/BaseClient.d.ts.map +1 -0
- package/lib/{client → core}/BaseClient.js +47 -101
- package/lib/core/BaseClient.js.map +1 -0
- package/lib/core/Client.d.ts +30 -0
- package/lib/core/Client.d.ts.map +1 -0
- package/lib/core/Client.js +140 -0
- package/lib/core/Client.js.map +1 -0
- package/lib/core/index.d.ts +3 -0
- package/lib/core/index.d.ts.map +1 -0
- package/lib/core/index.js +8 -0
- package/lib/core/index.js.map +1 -0
- package/lib/index.d.ts +34 -30
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +26 -39
- package/lib/index.js.map +1 -0
- package/lib/{service → services/ai}/AiService.d.ts +13 -4
- package/lib/services/ai/AiService.d.ts.map +1 -0
- package/lib/{service → services/ai}/AiService.js +53 -42
- package/lib/services/ai/AiService.js.map +1 -0
- package/lib/services/ai/index.d.ts +3 -0
- package/lib/services/ai/index.d.ts.map +1 -0
- package/lib/services/ai/index.js +21 -0
- package/lib/services/ai/index.js.map +1 -0
- package/lib/{types/ai.d.ts → services/ai/types.d.ts} +7 -18
- package/lib/services/ai/types.d.ts.map +1 -0
- package/lib/{types/ai.js → services/ai/types.js} +1 -1
- package/lib/services/ai/types.js.map +1 -0
- package/lib/{service → services/aigc}/AigcService.d.ts +13 -4
- package/lib/services/aigc/AigcService.d.ts.map +1 -0
- package/lib/{service → services/aigc}/AigcService.js +23 -28
- package/lib/services/aigc/AigcService.js.map +1 -0
- package/lib/services/aigc/index.d.ts +3 -0
- package/lib/services/aigc/index.d.ts.map +1 -0
- package/lib/services/aigc/index.js +21 -0
- package/lib/services/aigc/index.js.map +1 -0
- package/lib/{types/aigc.d.ts → services/aigc/types.d.ts} +1 -0
- package/lib/services/aigc/types.d.ts.map +1 -0
- package/lib/{types/aigc.js → services/aigc/types.js} +1 -0
- package/lib/services/aigc/types.js.map +1 -0
- package/lib/services/audit/AuditLogService.d.ts +17 -0
- package/lib/services/audit/AuditLogService.d.ts.map +1 -0
- package/lib/{service → services/audit}/AuditLogService.js +9 -30
- package/lib/services/audit/AuditLogService.js.map +1 -0
- package/lib/services/audit/index.d.ts +3 -0
- package/lib/services/audit/index.d.ts.map +1 -0
- package/lib/services/audit/index.js +21 -0
- package/lib/services/audit/index.js.map +1 -0
- package/lib/{types/audit.d.ts → services/audit/types.d.ts} +1 -10
- package/lib/services/audit/types.d.ts.map +1 -0
- package/lib/{types/audit.js → services/audit/types.js} +1 -1
- package/lib/services/audit/types.js.map +1 -0
- package/lib/services/auth/AuthService.d.ts +24 -0
- package/lib/services/auth/AuthService.d.ts.map +1 -0
- package/lib/{service → services/auth}/AuthService.js +29 -55
- package/lib/services/auth/AuthService.js.map +1 -0
- package/lib/services/auth/index.d.ts +3 -0
- package/lib/services/auth/index.d.ts.map +1 -0
- package/lib/services/auth/index.js +21 -0
- package/lib/services/auth/index.js.map +1 -0
- package/lib/services/auth/types.d.ts +65 -0
- package/lib/services/auth/types.d.ts.map +1 -0
- package/lib/{types/fronthost.js → services/auth/types.js} +1 -1
- package/lib/services/auth/types.js.map +1 -0
- package/lib/{service → services/delivery-stream}/DeliveryStreamService.d.ts +13 -79
- package/lib/services/delivery-stream/DeliveryStreamService.d.ts.map +1 -0
- package/lib/{service → services/delivery-stream}/DeliveryStreamService.js +12 -85
- package/lib/services/delivery-stream/DeliveryStreamService.js.map +1 -0
- package/lib/services/delivery-stream/index.d.ts +3 -0
- package/lib/services/delivery-stream/index.d.ts.map +1 -0
- package/lib/services/delivery-stream/index.js +21 -0
- package/lib/services/delivery-stream/index.js.map +1 -0
- package/lib/{types/delivery-stream.d.ts → services/delivery-stream/types.d.ts} +1 -0
- package/lib/services/delivery-stream/types.d.ts.map +1 -0
- package/lib/services/delivery-stream/types.js +3 -0
- package/lib/services/delivery-stream/types.js.map +1 -0
- package/lib/services/ez-ability/EzAbilityService.d.ts +39 -0
- package/lib/services/ez-ability/EzAbilityService.d.ts.map +1 -0
- package/lib/services/ez-ability/EzAbilityService.js +112 -0
- package/lib/services/ez-ability/EzAbilityService.js.map +1 -0
- package/lib/services/ez-ability/index.d.ts +3 -0
- package/lib/services/ez-ability/index.d.ts.map +1 -0
- package/lib/services/ez-ability/index.js +21 -0
- package/lib/services/ez-ability/index.js.map +1 -0
- package/lib/{types/ez-ability.d.ts → services/ez-ability/types.d.ts} +1 -34
- package/lib/services/ez-ability/types.d.ts.map +1 -0
- package/lib/{types/ez-ability.js → services/ez-ability/types.js} +1 -3
- package/lib/services/ez-ability/types.js.map +1 -0
- package/lib/services/file/FileService.d.ts +39 -0
- package/lib/services/file/FileService.d.ts.map +1 -0
- package/lib/{service → services/file}/FileService.js +11 -134
- package/lib/services/file/FileService.js.map +1 -0
- package/lib/services/file/index.d.ts +3 -0
- package/lib/services/file/index.d.ts.map +1 -0
- package/lib/services/file/index.js +21 -0
- package/lib/services/file/index.js.map +1 -0
- package/lib/{types/file.d.ts → services/file/types.d.ts} +1 -16
- package/lib/services/file/types.d.ts.map +1 -0
- package/lib/services/file/types.js +3 -0
- package/lib/services/file/types.js.map +1 -0
- package/lib/services/fronthost/FrontHostService.d.ts +24 -0
- package/lib/services/fronthost/FrontHostService.d.ts.map +1 -0
- package/lib/{service → services/fronthost}/FrontHostService.js +9 -36
- package/lib/services/fronthost/FrontHostService.js.map +1 -0
- package/lib/services/fronthost/index.d.ts +3 -0
- package/lib/services/fronthost/index.d.ts.map +1 -0
- package/lib/services/fronthost/index.js +21 -0
- package/lib/services/fronthost/index.js.map +1 -0
- package/lib/{types/fronthost.d.ts → services/fronthost/types.d.ts} +1 -16
- package/lib/services/fronthost/types.d.ts.map +1 -0
- package/lib/services/fronthost/types.js +3 -0
- package/lib/services/fronthost/types.js.map +1 -0
- package/lib/services/im/ImService.d.ts +18 -0
- package/lib/services/im/ImService.d.ts.map +1 -0
- package/lib/{service → services/im}/ImService.js +9 -18
- package/lib/services/im/ImService.js.map +1 -0
- package/lib/services/im/index.d.ts +3 -0
- package/lib/services/im/index.d.ts.map +1 -0
- package/lib/services/im/index.js +21 -0
- package/lib/services/im/index.js.map +1 -0
- package/lib/{types/im.d.ts → services/im/types.d.ts} +1 -4
- package/lib/services/im/types.d.ts.map +1 -0
- package/lib/services/im/types.js +3 -0
- package/lib/services/im/types.js.map +1 -0
- package/lib/services/index.d.ts +16 -0
- package/lib/services/index.d.ts.map +1 -0
- package/lib/services/index.js +32 -0
- package/lib/services/index.js.map +1 -0
- package/lib/{service → services/msg}/MsgService.d.ts +28 -10
- package/lib/services/msg/MsgService.d.ts.map +1 -0
- package/lib/services/msg/MsgService.js +91 -0
- package/lib/services/msg/MsgService.js.map +1 -0
- package/lib/services/msg/index.d.ts +3 -0
- package/lib/services/msg/index.d.ts.map +1 -0
- package/lib/services/msg/index.js +21 -0
- package/lib/services/msg/index.js.map +1 -0
- package/lib/{types/msg.d.ts → services/msg/types.d.ts} +23 -61
- package/lib/services/msg/types.d.ts.map +1 -0
- package/lib/services/msg/types.js +3 -0
- package/lib/services/msg/types.js.map +1 -0
- package/lib/{service → services/org}/OrgService.d.ts +13 -137
- package/lib/services/org/OrgService.d.ts.map +1 -0
- package/lib/{service → services/org}/OrgService.js +10 -144
- package/lib/services/org/OrgService.js.map +1 -0
- package/lib/services/org/index.d.ts +3 -0
- package/lib/services/org/index.d.ts.map +1 -0
- package/lib/services/org/index.js +21 -0
- package/lib/services/org/index.js.map +1 -0
- package/lib/{types/org.d.ts → services/org/types.d.ts} +2 -41
- package/lib/services/org/types.d.ts.map +1 -0
- package/lib/services/org/types.js +3 -0
- package/lib/services/org/types.js.map +1 -0
- package/lib/{service → services/provider}/ProviderService.d.ts +13 -9
- package/lib/services/provider/ProviderService.d.ts.map +1 -0
- package/lib/{service → services/provider}/ProviderService.js +9 -13
- package/lib/services/provider/ProviderService.js.map +1 -0
- package/lib/services/provider/index.d.ts +3 -0
- package/lib/services/provider/index.d.ts.map +1 -0
- package/lib/services/provider/index.js +21 -0
- package/lib/services/provider/index.js.map +1 -0
- package/lib/{types/provider.d.ts → services/provider/types.d.ts} +1 -0
- package/lib/services/provider/types.d.ts.map +1 -0
- package/lib/services/provider/types.js +3 -0
- package/lib/services/provider/types.js.map +1 -0
- package/lib/{service → services/token}/TokenService.d.ts +13 -4
- package/lib/services/token/TokenService.d.ts.map +1 -0
- package/lib/{service → services/token}/TokenService.js +9 -8
- package/lib/services/token/TokenService.js.map +1 -0
- package/lib/services/token/index.d.ts +3 -0
- package/lib/services/token/index.d.ts.map +1 -0
- package/lib/services/token/index.js +21 -0
- package/lib/services/token/index.js.map +1 -0
- package/lib/{types/token.d.ts → services/token/types.d.ts} +1 -6
- package/lib/services/token/types.d.ts.map +1 -0
- package/lib/services/token/types.js +3 -0
- package/lib/services/token/types.js.map +1 -0
- package/lib/{service → services/usage}/UsageService.d.ts +13 -10
- package/lib/services/usage/UsageService.d.ts.map +1 -0
- package/lib/{service → services/usage}/UsageService.js +9 -10
- package/lib/services/usage/UsageService.js.map +1 -0
- package/lib/services/usage/index.d.ts +3 -0
- package/lib/services/usage/index.d.ts.map +1 -0
- package/lib/services/usage/index.js +21 -0
- package/lib/services/usage/index.js.map +1 -0
- package/lib/{types/usage.d.ts → services/usage/types.d.ts} +1 -0
- package/lib/services/usage/types.d.ts.map +1 -0
- package/lib/services/usage/types.js +3 -0
- package/lib/services/usage/types.js.map +1 -0
- package/lib/{service → services/user}/UserService.d.ts +13 -4
- package/lib/services/user/UserService.d.ts.map +1 -0
- package/lib/{service → services/user}/UserService.js +10 -15
- package/lib/services/user/UserService.js.map +1 -0
- package/lib/services/user/index.d.ts +3 -0
- package/lib/services/user/index.d.ts.map +1 -0
- package/lib/services/user/index.js +21 -0
- package/lib/services/user/index.js.map +1 -0
- package/lib/{types/user.d.ts → services/user/types.d.ts} +1 -15
- package/lib/services/user/types.d.ts.map +1 -0
- package/lib/services/user/types.js +3 -0
- package/lib/services/user/types.js.map +1 -0
- package/lib/types/common.d.ts +38 -0
- package/lib/types/common.d.ts.map +1 -0
- package/lib/types/common.js +3 -0
- package/lib/types/common.js.map +1 -0
- package/lib/types/config.d.ts +31 -0
- package/lib/types/config.d.ts.map +1 -0
- package/lib/types/config.js +3 -0
- package/lib/types/config.js.map +1 -0
- package/lib/types/index.d.ts +4 -67
- package/lib/types/index.d.ts.map +1 -0
- package/lib/types/index.js +4 -4
- package/lib/types/index.js.map +1 -0
- package/lib/types/service-contract.d.ts +25 -0
- package/lib/types/service-contract.d.ts.map +1 -0
- package/lib/types/{delivery-stream.js → service-contract.js} +1 -1
- package/lib/types/service-contract.js.map +1 -0
- package/package.json +25 -28
- package/README.MD +0 -717
- package/lib/client/index.d.ts +0 -46
- package/lib/client/index.js +0 -179
- package/lib/service/AuditLogService.d.ts +0 -29
- package/lib/service/AuthService.d.ts +0 -43
- package/lib/service/EzAbilityService.d.ts +0 -165
- package/lib/service/EzAbilityService.js +0 -241
- package/lib/service/FileService.d.ts +0 -149
- package/lib/service/FrontHostService.d.ts +0 -45
- package/lib/service/ImService.d.ts +0 -24
- package/lib/service/MsgService.js +0 -116
- package/lib/types/file.js +0 -4
- package/lib/types/im.js +0 -4
- package/lib/types/msg.js +0 -2
- package/lib/types/org.js +0 -4
- package/lib/types/provider.js +0 -2
- package/lib/types/token.js +0 -2
- package/lib/types/usage.js +0 -2
- package/lib/types/user.js +0 -2
- package/lib/utils/snakeCase.d.ts +0 -4
- package/lib/utils/snakeCase.js +0 -28
package/README.md
ADDED
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
# qing-client
|
|
2
|
+
|
|
3
|
+
Qing 平台统一 SDK - 插件化架构 (v2)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 特性
|
|
8
|
+
|
|
9
|
+
- **插件化架构**:服务按需注册,类似 Vue.use() / Fastify.register()
|
|
10
|
+
- **完整类型推导**:通过 Module Augmentation 实现类型自动补全
|
|
11
|
+
- **前后端统一**:一套 SDK 支持前端(网关)和后端(直连)两种模式
|
|
12
|
+
- **自动 Token 管理**:全局 setToken/clearToken 自动同步到所有服务
|
|
13
|
+
- **服务隔离**:每个服务独立目录,互不影响
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## 安装
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm install qing-client
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 快速开始
|
|
26
|
+
|
|
27
|
+
### 前端模式
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
import {
|
|
31
|
+
Client,
|
|
32
|
+
AuthService,
|
|
33
|
+
MsgService,
|
|
34
|
+
AiService,
|
|
35
|
+
ImService
|
|
36
|
+
} from 'qing-client';
|
|
37
|
+
|
|
38
|
+
// 创建客户端并注册需要的服务
|
|
39
|
+
const client = new Client({
|
|
40
|
+
gatewayUrl: 'https://api.example.com',
|
|
41
|
+
projectId: 'your-project-id',
|
|
42
|
+
appId: 'your-app-id',
|
|
43
|
+
})
|
|
44
|
+
.use(AuthService)
|
|
45
|
+
.use(MsgService)
|
|
46
|
+
.use(AiService)
|
|
47
|
+
.use(ImService);
|
|
48
|
+
|
|
49
|
+
// 登录
|
|
50
|
+
const loginRes = await client.services.auth.loginJson({
|
|
51
|
+
username: 'user',
|
|
52
|
+
password: 'pass',
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
// 设置 Token(全局生效)
|
|
56
|
+
await client.setToken(loginRes.access_token);
|
|
57
|
+
|
|
58
|
+
// 使用服务(完整类型推导)
|
|
59
|
+
const messages = await client.services.msg.getMessages({ isRead: false });
|
|
60
|
+
const groups = await client.services.im.listGroups();
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### 后端模式
|
|
64
|
+
|
|
65
|
+
```typescript
|
|
66
|
+
import { Client, AuthService, MsgService } from 'qing-client';
|
|
67
|
+
|
|
68
|
+
const client = new Client({
|
|
69
|
+
authServiceUrl: 'http://auth-service',
|
|
70
|
+
msgServiceUrl: 'http://msg-service',
|
|
71
|
+
userContext: {
|
|
72
|
+
userId: '123',
|
|
73
|
+
role: 'ADMIN',
|
|
74
|
+
projectId: 'project-1',
|
|
75
|
+
},
|
|
76
|
+
})
|
|
77
|
+
.use(AuthService)
|
|
78
|
+
.use(MsgService);
|
|
79
|
+
|
|
80
|
+
await client.setToken('xxx');
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## 可用服务(17 个)
|
|
86
|
+
|
|
87
|
+
### 核心服务
|
|
88
|
+
|
|
89
|
+
| 服务 | 说明 | 注册名 |
|
|
90
|
+
|------|------|--------|
|
|
91
|
+
| AuthService | 认证与登录 | `auth` |
|
|
92
|
+
| MsgService | 消息中心 | `msg` |
|
|
93
|
+
| UserService | 用户管理 | `user` |
|
|
94
|
+
| TokenService | Token 管理(微信等) | `token` |
|
|
95
|
+
| FileService | 文件服务 | `file` / `files` |
|
|
96
|
+
|
|
97
|
+
### AI 相关
|
|
98
|
+
|
|
99
|
+
| 服务 | 说明 | 注册名 |
|
|
100
|
+
|------|------|--------|
|
|
101
|
+
| AiService | AI 对话/会话 | `ai` |
|
|
102
|
+
| AigcService | AIGC 能力 | `aigc` |
|
|
103
|
+
| ProviderService | 大模型供应商 | `providers` |
|
|
104
|
+
| UsageService | 用量统计 | `providers` |
|
|
105
|
+
|
|
106
|
+
### 业务服务
|
|
107
|
+
|
|
108
|
+
| 服务 | 说明 | 注册名 |
|
|
109
|
+
|------|------|--------|
|
|
110
|
+
| AuditLogService | 审计日志 | `logs` |
|
|
111
|
+
| FrontHostService | 静态 HTML 托管 | `gateway-h5` |
|
|
112
|
+
| OrgService | 组织与多租户 | `org` |
|
|
113
|
+
| DeliveryStreamService | 投递流 | `delivery-stream` |
|
|
114
|
+
| EzAbilityService | Ez AI 能力 | `ez-ability` |
|
|
115
|
+
| ImService | IM 群组 | `im` |
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## 插件注册
|
|
120
|
+
|
|
121
|
+
### 链式注册
|
|
122
|
+
|
|
123
|
+
```typescript
|
|
124
|
+
const client = new Client(config)
|
|
125
|
+
.use(AuthService)
|
|
126
|
+
.use(MsgService)
|
|
127
|
+
.use(FileService)
|
|
128
|
+
.use(AiService)
|
|
129
|
+
.use(ImService);
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### 批量注册
|
|
133
|
+
|
|
134
|
+
```typescript
|
|
135
|
+
import {
|
|
136
|
+
AuthService, MsgService, FileService,
|
|
137
|
+
AiService, ImService, OrgService
|
|
138
|
+
} from 'qing-client';
|
|
139
|
+
|
|
140
|
+
const client = new Client(config).useAll([
|
|
141
|
+
AuthService,
|
|
142
|
+
MsgService,
|
|
143
|
+
FileService,
|
|
144
|
+
AiService,
|
|
145
|
+
ImService,
|
|
146
|
+
OrgService,
|
|
147
|
+
]);
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## Token 管理
|
|
153
|
+
|
|
154
|
+
### 全局设置
|
|
155
|
+
|
|
156
|
+
```typescript
|
|
157
|
+
// 设置 Token(自动同步到所有服务)
|
|
158
|
+
await client.setToken('your-token');
|
|
159
|
+
|
|
160
|
+
// 清除 Token
|
|
161
|
+
await client.clearToken();
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### 自定义 Token 存储
|
|
165
|
+
|
|
166
|
+
```typescript
|
|
167
|
+
const client = new Client({
|
|
168
|
+
gatewayUrl: '...',
|
|
169
|
+
tokenStorage: {
|
|
170
|
+
async getToken() {
|
|
171
|
+
return localStorage.getItem('token') || undefined;
|
|
172
|
+
},
|
|
173
|
+
async setToken(token) {
|
|
174
|
+
localStorage.setItem('token', token);
|
|
175
|
+
},
|
|
176
|
+
async clearToken() {
|
|
177
|
+
localStorage.removeItem('token');
|
|
178
|
+
},
|
|
179
|
+
},
|
|
180
|
+
});
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## 多租户支持
|
|
186
|
+
|
|
187
|
+
### 前端模式
|
|
188
|
+
|
|
189
|
+
```typescript
|
|
190
|
+
// 方式一:初始化时配置
|
|
191
|
+
const client = new Client({
|
|
192
|
+
gatewayUrl: '...',
|
|
193
|
+
projectId: 'project-1',
|
|
194
|
+
orgId: 'org-1',
|
|
195
|
+
appId: 'app-1',
|
|
196
|
+
});
|
|
197
|
+
|
|
198
|
+
// 方式二:运行时设置
|
|
199
|
+
client.setProjectOrgApp('project-1', 'org-1', 'app-1');
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### 后端模式
|
|
203
|
+
|
|
204
|
+
```typescript
|
|
205
|
+
client.setUserContext({
|
|
206
|
+
userId: '123',
|
|
207
|
+
role: 'ADMIN',
|
|
208
|
+
projectId: 'project-1',
|
|
209
|
+
orgId: 'org-1',
|
|
210
|
+
appId: 'app-1',
|
|
211
|
+
});
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
## 新增服务
|
|
217
|
+
|
|
218
|
+
参见 [SDK-GENERATION.md](./docs/SDK-GENERATION.md)
|
|
219
|
+
|
|
220
|
+
1. 在 `src/services/{name}/` 创建服务目录
|
|
221
|
+
2. 生成 `types.ts` 和 `{Name}Service.ts`
|
|
222
|
+
3. 在 `src/services/index.ts` 和 `src/index.ts` 添加导出
|
|
223
|
+
4. 使用方通过 `.use(YourService)` 注册
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
## 目录结构
|
|
228
|
+
|
|
229
|
+
```
|
|
230
|
+
src/
|
|
231
|
+
├── core/ # 核心框架
|
|
232
|
+
│ ├── Client.ts # 主客户端(插件注册)
|
|
233
|
+
│ ├── BaseClient.ts # 服务基类
|
|
234
|
+
│ └── index.ts
|
|
235
|
+
├── types/ # 公共类型和契约
|
|
236
|
+
│ ├── common.ts # 通用类型
|
|
237
|
+
│ ├── config.ts # 配置类型
|
|
238
|
+
│ ├── service-contract.ts # 服务契约
|
|
239
|
+
│ └── index.ts
|
|
240
|
+
├── services/ # 服务目录(17 个服务)
|
|
241
|
+
│ ├── auth/ # 认证服务
|
|
242
|
+
│ ├── msg/ # 消息服务
|
|
243
|
+
│ ├── user/ # 用户服务
|
|
244
|
+
│ ├── token/ # Token 服务
|
|
245
|
+
│ ├── file/ # 文件服务
|
|
246
|
+
│ ├── ai/ # AI 服务
|
|
247
|
+
│ ├── aigc/ # AIGC 服务
|
|
248
|
+
│ ├── provider/ # 供应商服务
|
|
249
|
+
│ ├── usage/ # 用量服务
|
|
250
|
+
│ ├── audit/ # 审计日志服务
|
|
251
|
+
│ ├── fronthost/ # 前端托管服务
|
|
252
|
+
│ ├── org/ # 组织服务
|
|
253
|
+
│ ├── delivery-stream/ # 投递流服务
|
|
254
|
+
│ ├── ez-ability/ # Ez 能力服务
|
|
255
|
+
│ ├── im/ # IM 服务
|
|
256
|
+
│ └── index.ts
|
|
257
|
+
├── docs/
|
|
258
|
+
│ └── SDK-GENERATION.md # 生成指南
|
|
259
|
+
└── index.ts # 包入口
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
|
|
264
|
+
## 开发
|
|
265
|
+
|
|
266
|
+
```bash
|
|
267
|
+
# 安装依赖
|
|
268
|
+
npm install
|
|
269
|
+
|
|
270
|
+
# 构建
|
|
271
|
+
npm run build
|
|
272
|
+
|
|
273
|
+
# 开发模式
|
|
274
|
+
npm run dev
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
---
|
|
278
|
+
|
|
279
|
+
## 与旧版对比
|
|
280
|
+
|
|
281
|
+
| 方面 | 旧版 (v0.x) | 新版 (v2.0) |
|
|
282
|
+
|------|------------|-------------|
|
|
283
|
+
| 新增服务 | 改 6+ 文件 | 改 2 文件 + 注册 |
|
|
284
|
+
| 类型推导 | 手动维护 | Module Augmentation 自动 |
|
|
285
|
+
| Token 管理 | 遍历硬编码 | 自动收集 TokenAware |
|
|
286
|
+
| 服务隔离 | 耦合在一起 | 完全独立目录 |
|
|
287
|
+
| 代码重复 | setToken 遍历 16 次 | 自动收集处理 |
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
291
|
+
## License
|
|
292
|
+
|
|
293
|
+
MIT
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { AxiosInstance, RawAxiosRequestHeaders } from 'axios';
|
|
2
|
-
import { UserContext, ClientConfig, RequestOptions, TokenStorage, PaginatedResponse } from '../types';
|
|
3
|
-
export declare abstract class BaseClient {
|
|
2
|
+
import { UserContext, ClientConfig, RequestOptions, TokenStorage, PaginatedResponse, BaseService } from '../types';
|
|
3
|
+
export declare abstract class BaseClient implements BaseService {
|
|
4
4
|
protected config: ClientConfig;
|
|
5
|
-
protected
|
|
5
|
+
protected servicePath: string;
|
|
6
6
|
protected axiosInstance: AxiosInstance;
|
|
7
7
|
protected isFrontendMode: boolean;
|
|
8
8
|
protected serviceBasePath: string;
|
|
@@ -11,19 +11,21 @@ export declare abstract class BaseClient {
|
|
|
11
11
|
protected orgId?: string;
|
|
12
12
|
protected appId?: string;
|
|
13
13
|
protected userContext?: UserContext;
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
abstract get serviceName(): string;
|
|
15
|
+
constructor(config: ClientConfig, servicePath: string, tokenStorage?: TokenStorage);
|
|
16
|
+
protected initUserContextHeaders(context: UserContext): RawAxiosRequestHeaders;
|
|
16
17
|
setUserContext(context: UserContext): this;
|
|
17
18
|
setProjectId(projectId: string): this;
|
|
18
19
|
setAppId(appId: string): this;
|
|
19
|
-
setProjectAndApp(projectId: string, appId: string): this;
|
|
20
20
|
setOrgId(orgId: string): this;
|
|
21
|
+
setProjectAndApp(projectId: string, appId: string): this;
|
|
21
22
|
setProjectOrgApp(projectId: string, orgId: string, appId: string): this;
|
|
22
23
|
setTokenStorage(storage: TokenStorage): this;
|
|
23
|
-
private getBaseUrl;
|
|
24
24
|
setToken(token: string): Promise<void>;
|
|
25
25
|
clearToken(): Promise<void>;
|
|
26
|
+
protected getBaseUrl(): string;
|
|
26
27
|
protected request<T>(path: string, options?: RequestOptions): Promise<T>;
|
|
27
28
|
protected paginatedRequest<T>(path: string, options?: RequestOptions): Promise<PaginatedResponse<T>>;
|
|
28
29
|
private handleApiError;
|
|
29
30
|
}
|
|
31
|
+
//# sourceMappingURL=BaseClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseClient.d.ts","sourceRoot":"","sources":["../../src/core/BaseClient.ts"],"names":[],"mappings":"AAEA,OAAc,EAAE,aAAa,EAAc,sBAAsB,EAAE,MAAM,OAAO,CAAC;AACjF,OAAO,EACL,WAAW,EACX,YAAY,EACZ,cAAc,EACd,YAAY,EAEZ,iBAAiB,EACjB,WAAW,EACZ,MAAM,UAAU,CAAC;AAsBlB,8BAAsB,UAAW,YAAW,WAAW;IAoBnD,SAAS,CAAC,MAAM,EAAE,YAAY;IAC9B,SAAS,CAAC,WAAW,EAAE,MAAM;IApB/B,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IACvC,SAAS,CAAC,cAAc,EAAE,OAAO,CAAC;IAClC,SAAS,CAAC,eAAe,EAAE,MAAM,CAAC;IAClC,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC;IAGrC,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAGzB,SAAS,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IAKpC,QAAQ,KAAK,WAAW,IAAI,MAAM,CAAC;gBAGvB,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,MAAM,EAC7B,YAAY,CAAC,EAAE,YAAY;IAsD7B,SAAS,CAAC,sBAAsB,CAAC,OAAO,EAAE,WAAW,GAAG,sBAAsB;IAoB9E,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAW1C,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IASrC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAS7B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAS7B,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAUxD,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAgBvE,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAQtC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOtC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IASjC,SAAS,CAAC,UAAU,IAAI,MAAM;cAmBd,OAAO,CAAC,CAAC,EACvB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAkC,GAC1C,OAAO,CAAC,CAAC,CAAC;cA8CG,gBAAgB,CAAC,CAAC,EAChC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAkC,GAC1C,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;IA4ChC,OAAO,CAAC,cAAc;CA8BvB"}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// client/npm/src/client/BaseClient.ts
|
|
3
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
4
|
};
|
|
6
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
6
|
exports.BaseClient = void 0;
|
|
8
7
|
const axios_1 = __importDefault(require("axios"));
|
|
9
|
-
// 默认内存存储实现
|
|
10
8
|
const memoryTokenStorage = {
|
|
11
9
|
token: undefined,
|
|
12
10
|
async getToken() {
|
|
@@ -17,62 +15,52 @@ const memoryTokenStorage = {
|
|
|
17
15
|
},
|
|
18
16
|
async clearToken() {
|
|
19
17
|
this.token = undefined;
|
|
20
|
-
}
|
|
18
|
+
},
|
|
21
19
|
};
|
|
22
20
|
class BaseClient {
|
|
23
|
-
constructor(config,
|
|
21
|
+
constructor(config, servicePath, tokenStorage) {
|
|
24
22
|
this.config = config;
|
|
25
|
-
this.
|
|
23
|
+
this.servicePath = servicePath;
|
|
26
24
|
this.isFrontendMode = !!config.gatewayUrl;
|
|
27
|
-
this.serviceBasePath = `/api/${
|
|
28
|
-
// 根据模式设置不同的配置
|
|
25
|
+
this.serviceBasePath = `/api/${servicePath}`;
|
|
29
26
|
if (this.isFrontendMode) {
|
|
30
|
-
// 前端模式:使用项目、组织和应用ID
|
|
31
27
|
this.projectId = config.projectId;
|
|
32
28
|
this.orgId = config.orgId;
|
|
33
29
|
this.appId = config.appId;
|
|
34
30
|
}
|
|
35
31
|
else {
|
|
36
|
-
// 后端模式:使用用户上下文
|
|
37
32
|
this.userContext = config.userContext;
|
|
38
33
|
}
|
|
39
|
-
|
|
40
|
-
this.tokenStorage = config.tokenStorage || memoryTokenStorage;
|
|
41
|
-
// 创建Axios实例
|
|
34
|
+
this.tokenStorage = tokenStorage || memoryTokenStorage;
|
|
42
35
|
this.axiosInstance = axios_1.default.create({
|
|
43
36
|
baseURL: this.getBaseUrl(),
|
|
44
|
-
timeout: 30000,
|
|
37
|
+
timeout: config.timeout || 30000,
|
|
45
38
|
headers: {
|
|
46
39
|
'Content-Type': 'application/json',
|
|
47
|
-
|
|
48
|
-
}
|
|
40
|
+
Accept: 'application/json',
|
|
41
|
+
},
|
|
49
42
|
});
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
let headers = config.headers || {};
|
|
53
|
-
// 只注入认证令牌(两种模式都需要)
|
|
43
|
+
this.axiosInstance.interceptors.request.use(async (axiosConfig) => {
|
|
44
|
+
let headers = axiosConfig.headers || {};
|
|
54
45
|
const token = await this.tokenStorage.getToken();
|
|
55
46
|
if (token) {
|
|
56
47
|
headers['Authorization'] = `Bearer ${token}`;
|
|
57
48
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
Object.assign(headers, config.headers);
|
|
49
|
+
if (axiosConfig.headers) {
|
|
50
|
+
Object.assign(headers, axiosConfig.headers);
|
|
61
51
|
}
|
|
62
52
|
return {
|
|
63
|
-
...
|
|
64
|
-
headers
|
|
53
|
+
...axiosConfig,
|
|
54
|
+
headers,
|
|
65
55
|
};
|
|
66
56
|
});
|
|
67
57
|
}
|
|
68
|
-
|
|
69
|
-
initUserContext(context) {
|
|
58
|
+
initUserContextHeaders(context) {
|
|
70
59
|
const headers = {
|
|
71
60
|
'v-user-id': context.userId,
|
|
72
61
|
'v-user-role': context.role,
|
|
73
|
-
'v-project-id': context.projectId
|
|
62
|
+
'v-project-id': context.projectId,
|
|
74
63
|
};
|
|
75
|
-
// 可选字段
|
|
76
64
|
if (context.orgId) {
|
|
77
65
|
headers['v-org-id'] = context.orgId;
|
|
78
66
|
}
|
|
@@ -90,7 +78,6 @@ class BaseClient {
|
|
|
90
78
|
}
|
|
91
79
|
return this;
|
|
92
80
|
}
|
|
93
|
-
// 前端模式:项目和应用相关方法
|
|
94
81
|
setProjectId(projectId) {
|
|
95
82
|
if (this.isFrontendMode) {
|
|
96
83
|
this.projectId = projectId;
|
|
@@ -109,22 +96,22 @@ class BaseClient {
|
|
|
109
96
|
}
|
|
110
97
|
return this;
|
|
111
98
|
}
|
|
112
|
-
|
|
99
|
+
setOrgId(orgId) {
|
|
113
100
|
if (this.isFrontendMode) {
|
|
114
|
-
this.
|
|
115
|
-
this.appId = appId;
|
|
101
|
+
this.orgId = orgId;
|
|
116
102
|
}
|
|
117
103
|
else {
|
|
118
|
-
console.warn('
|
|
104
|
+
console.warn('setOrgId() 仅在前端模式下有效');
|
|
119
105
|
}
|
|
120
106
|
return this;
|
|
121
107
|
}
|
|
122
|
-
|
|
108
|
+
setProjectAndApp(projectId, appId) {
|
|
123
109
|
if (this.isFrontendMode) {
|
|
124
|
-
this.
|
|
110
|
+
this.projectId = projectId;
|
|
111
|
+
this.appId = appId;
|
|
125
112
|
}
|
|
126
113
|
else {
|
|
127
|
-
console.warn('
|
|
114
|
+
console.warn('setProjectAndApp() 仅在前端模式下有效');
|
|
128
115
|
}
|
|
129
116
|
return this;
|
|
130
117
|
}
|
|
@@ -139,71 +126,48 @@ class BaseClient {
|
|
|
139
126
|
}
|
|
140
127
|
return this;
|
|
141
128
|
}
|
|
142
|
-
// 设置令牌存储(可在运行时更换存储策略)
|
|
143
129
|
setTokenStorage(storage) {
|
|
144
130
|
this.tokenStorage = storage;
|
|
145
131
|
return this;
|
|
146
132
|
}
|
|
147
|
-
// 确定请求基础URL
|
|
148
|
-
getBaseUrl() {
|
|
149
|
-
if (this.isFrontendMode) {
|
|
150
|
-
return this.config.gatewayUrl;
|
|
151
|
-
}
|
|
152
|
-
// 后端模式使用服务专属URL
|
|
153
|
-
switch (this.serviceName) {
|
|
154
|
-
case 'auth': return this.config.authServiceUrl;
|
|
155
|
-
case 'msg': return this.config.msgServiceUrl;
|
|
156
|
-
case 'users': return this.config.userServiceUrl;
|
|
157
|
-
case 'file': return this.config.fileServiceUrl; // V1 兼容路由
|
|
158
|
-
case 'files': return this.config.fileServiceUrl; // V2 新路由
|
|
159
|
-
case 'survey': return this.config.surveyServiceUrl;
|
|
160
|
-
case 'token': return this.config.tokenServiceUrl;
|
|
161
|
-
case 'aigc': return this.config.aigcServiceUrl;
|
|
162
|
-
case "logs": return this.config.auditLogServiceUrl;
|
|
163
|
-
case "providers": return this.config.providerServiceUrl;
|
|
164
|
-
case "org": return this.config.orgServiceUrl; // 组织感知服务
|
|
165
|
-
case "gateway-h5": return this.config.gatewayH5ServiceUrl;
|
|
166
|
-
case "ez-ability": return this.config.ezAbilityServiceUrl; // EzAI 能力服务
|
|
167
|
-
case "im": return this.config.imServiceUrl; // IM 群组服务
|
|
168
|
-
default: throw new Error(`Unsupported service: ${this.serviceName}`);
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
// 设置认证令牌
|
|
172
133
|
async setToken(token) {
|
|
173
134
|
await this.tokenStorage.setToken(token);
|
|
174
135
|
}
|
|
175
|
-
// 清除认证令牌
|
|
176
136
|
async clearToken() {
|
|
177
137
|
await this.tokenStorage.clearToken();
|
|
178
138
|
}
|
|
179
|
-
|
|
139
|
+
getBaseUrl() {
|
|
140
|
+
if (this.isFrontendMode) {
|
|
141
|
+
return this.config.gatewayUrl;
|
|
142
|
+
}
|
|
143
|
+
const urlKey = `${this.servicePath}ServiceUrl`;
|
|
144
|
+
const serviceUrl = this.config[urlKey];
|
|
145
|
+
if (!serviceUrl) {
|
|
146
|
+
throw new Error(`服务 ${this.servicePath} 的 URL 未配置,请在 ClientConfig 中设置 ${urlKey}`);
|
|
147
|
+
}
|
|
148
|
+
return serviceUrl;
|
|
149
|
+
}
|
|
180
150
|
async request(path, options = { method: 'GET' }) {
|
|
181
151
|
try {
|
|
182
152
|
const fullPath = this.isFrontendMode
|
|
183
153
|
? `${this.serviceBasePath}${path}`
|
|
184
154
|
: path;
|
|
185
155
|
let headers = options.headers || {};
|
|
186
|
-
// 根据模式添加不同的头信息
|
|
187
156
|
if (this.isFrontendMode) {
|
|
188
|
-
// 前端模式:添加项目、组织和应用ID头
|
|
189
157
|
const projectId = options.projectId || this.projectId;
|
|
190
158
|
const orgId = options.orgId || this.orgId;
|
|
191
159
|
const appId = options.appId || this.appId;
|
|
192
|
-
if (projectId)
|
|
160
|
+
if (projectId)
|
|
193
161
|
headers['x-project-id'] = projectId;
|
|
194
|
-
|
|
195
|
-
if (orgId) {
|
|
162
|
+
if (orgId)
|
|
196
163
|
headers['x-org-id'] = orgId;
|
|
197
|
-
|
|
198
|
-
if (appId) {
|
|
164
|
+
if (appId)
|
|
199
165
|
headers['x-app-id'] = appId;
|
|
200
|
-
}
|
|
201
166
|
}
|
|
202
167
|
else {
|
|
203
|
-
// 后端模式:添加用户上下文头
|
|
204
168
|
const context = options.userContext || this.userContext;
|
|
205
169
|
if (context) {
|
|
206
|
-
headers = { ...headers, ...this.
|
|
170
|
+
headers = { ...headers, ...this.initUserContextHeaders(context) };
|
|
207
171
|
}
|
|
208
172
|
}
|
|
209
173
|
const response = await this.axiosInstance.request({
|
|
@@ -211,50 +175,38 @@ class BaseClient {
|
|
|
211
175
|
method: options.method,
|
|
212
176
|
headers,
|
|
213
177
|
params: options.params,
|
|
214
|
-
data: options.body
|
|
178
|
+
data: options.body,
|
|
215
179
|
});
|
|
216
|
-
console.log('Request URL:', this.getBaseUrl() + fullPath);
|
|
217
|
-
console.log('Request params:', options.params);
|
|
218
|
-
// 检查业务成功状态
|
|
219
180
|
if (!response.data.success) {
|
|
220
|
-
throw new Error(response.data.message ||
|
|
181
|
+
throw new Error(response.data.message || '业务请求失败');
|
|
221
182
|
}
|
|
222
|
-
// 返回实际数据
|
|
223
183
|
return response.data.data;
|
|
224
184
|
}
|
|
225
185
|
catch (error) {
|
|
226
|
-
// 明确返回错误处理
|
|
227
186
|
return this.handleApiError(error, path);
|
|
228
187
|
}
|
|
229
188
|
}
|
|
230
|
-
// 分页请求方法
|
|
231
189
|
async paginatedRequest(path, options = { method: 'GET' }) {
|
|
232
190
|
try {
|
|
233
191
|
const fullPath = this.isFrontendMode
|
|
234
192
|
? `${this.serviceBasePath}${path}`
|
|
235
193
|
: path;
|
|
236
194
|
let headers = options.headers || {};
|
|
237
|
-
// 根据模式添加不同的头信息
|
|
238
195
|
if (this.isFrontendMode) {
|
|
239
|
-
// 前端模式:添加项目、组织和应用ID头
|
|
240
196
|
const projectId = options.projectId || this.projectId;
|
|
241
197
|
const orgId = options.orgId || this.orgId;
|
|
242
198
|
const appId = options.appId || this.appId;
|
|
243
|
-
if (projectId)
|
|
199
|
+
if (projectId)
|
|
244
200
|
headers['x-project-id'] = projectId;
|
|
245
|
-
|
|
246
|
-
if (orgId) {
|
|
201
|
+
if (orgId)
|
|
247
202
|
headers['x-org-id'] = orgId;
|
|
248
|
-
|
|
249
|
-
if (appId) {
|
|
203
|
+
if (appId)
|
|
250
204
|
headers['x-app-id'] = appId;
|
|
251
|
-
}
|
|
252
205
|
}
|
|
253
206
|
else {
|
|
254
|
-
// 后端模式:添加用户上下文头
|
|
255
207
|
const context = options.userContext || this.userContext;
|
|
256
208
|
if (context) {
|
|
257
|
-
headers = { ...headers, ...this.
|
|
209
|
+
headers = { ...headers, ...this.initUserContextHeaders(context) };
|
|
258
210
|
}
|
|
259
211
|
}
|
|
260
212
|
const response = await this.axiosInstance.request({
|
|
@@ -262,25 +214,21 @@ class BaseClient {
|
|
|
262
214
|
method: options.method,
|
|
263
215
|
headers,
|
|
264
216
|
params: options.params,
|
|
265
|
-
data: options.body
|
|
217
|
+
data: options.body,
|
|
266
218
|
});
|
|
267
|
-
// 检查业务成功状态
|
|
268
219
|
if (!response.data.success) {
|
|
269
|
-
throw new Error(
|
|
220
|
+
throw new Error('业务请求失败');
|
|
270
221
|
}
|
|
271
|
-
// 返回分页数据
|
|
272
222
|
return response.data;
|
|
273
223
|
}
|
|
274
224
|
catch (error) {
|
|
275
225
|
return this.handleApiError(error, path);
|
|
276
226
|
}
|
|
277
227
|
}
|
|
278
|
-
// 统一错误处理方法
|
|
279
228
|
handleApiError(error, path) {
|
|
280
229
|
let errorMessage = `[${this.serviceName}服务] `;
|
|
281
230
|
if (error.response) {
|
|
282
231
|
const responseData = error.response.data;
|
|
283
|
-
// 尝试从响应体中提取错误信息
|
|
284
232
|
if (responseData?.message) {
|
|
285
233
|
errorMessage += responseData.message;
|
|
286
234
|
}
|
|
@@ -290,7 +238,6 @@ class BaseClient {
|
|
|
290
238
|
else {
|
|
291
239
|
errorMessage += `请求失败,状态码: ${error.response.status}`;
|
|
292
240
|
}
|
|
293
|
-
// 添加详细错误信息(开发环境)
|
|
294
241
|
if (process.env.NODE_ENV === 'development') {
|
|
295
242
|
errorMessage += ` | 状态码: ${error.response.status}`;
|
|
296
243
|
if (error.response.headers?.['x-request-id']) {
|
|
@@ -304,10 +251,9 @@ class BaseClient {
|
|
|
304
251
|
else {
|
|
305
252
|
errorMessage += error.message;
|
|
306
253
|
}
|
|
307
|
-
// 添加路径信息
|
|
308
254
|
errorMessage += ` (路径: ${path})`;
|
|
309
|
-
// 明确抛出错误
|
|
310
255
|
throw new Error(errorMessage);
|
|
311
256
|
}
|
|
312
257
|
}
|
|
313
258
|
exports.BaseClient = BaseClient;
|
|
259
|
+
//# sourceMappingURL=BaseClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseClient.js","sourceRoot":"","sources":["../../src/core/BaseClient.ts"],"names":[],"mappings":"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"}
|