mcp-user-system 2.0.8 → 2.1.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/env.d.ts +1 -1
- package/dist/env.js +1 -4
- package/dist/env.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/tools/auth.d.ts +24 -30
- package/dist/tools/auth.js +75 -58
- package/dist/tools/auth.js.map +1 -1
- package/dist/tools/client.d.ts +12 -0
- package/dist/tools/client.js +68 -3
- package/dist/tools/client.js.map +1 -1
- package/package.json +1 -1
package/dist/env.d.ts
CHANGED
package/dist/env.js
CHANGED
|
@@ -3,10 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export function loadConfig() {
|
|
5
5
|
const baseUrl = process.env["TUS_BASE_URL"] || "https://models.ipsunion.com/prod-api";
|
|
6
|
-
const accessToken = process.env["TUS_ACCESS_TOKEN"];
|
|
7
|
-
if (!accessToken) {
|
|
8
|
-
throw new Error("Missing required environment variable: TUS_ACCESS_TOKEN");
|
|
9
|
-
}
|
|
6
|
+
const accessToken = process.env["TUS_ACCESS_TOKEN"] || undefined;
|
|
10
7
|
return {
|
|
11
8
|
baseUrl,
|
|
12
9
|
accessToken,
|
package/dist/env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,MAAM,UAAU,UAAU;IACxB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,sCAAsC,CAAC;IACtF,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,MAAM,UAAU,UAAU;IACxB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,sCAAsC,CAAC;IACtF,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,SAAS,CAAC;IAEjE,OAAO;QACL,OAAO;QACP,WAAW;KACZ,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -3,11 +3,12 @@
|
|
|
3
3
|
* MCP Server for token-user-system
|
|
4
4
|
*
|
|
5
5
|
* Provides tools via Model Context Protocol, organized by domain:
|
|
6
|
-
* user, dashboard, wallet, team, tokens, invoice, misc
|
|
6
|
+
* auth, user, dashboard, wallet, team, tokens, invoice, misc
|
|
7
7
|
*/
|
|
8
8
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
9
9
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
10
10
|
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
11
|
+
import * as authTools from "./tools/auth.js";
|
|
11
12
|
import * as userTools from "./tools/user.js";
|
|
12
13
|
import * as dashboardTools from "./tools/dashboard.js";
|
|
13
14
|
import * as walletTools from "./tools/wallet.js";
|
|
@@ -17,6 +18,7 @@ import * as invoiceTools from "./tools/invoice.js";
|
|
|
17
18
|
import * as miscTools from "./tools/misc.js";
|
|
18
19
|
// ── Merge all tool definitions ──
|
|
19
20
|
const allTools = [
|
|
21
|
+
...authTools.tools,
|
|
20
22
|
...userTools.tools,
|
|
21
23
|
...dashboardTools.tools,
|
|
22
24
|
...walletTools.tools,
|
|
@@ -28,7 +30,7 @@ const allTools = [
|
|
|
28
30
|
// ── MCP Server Setup ──
|
|
29
31
|
const server = new Server({
|
|
30
32
|
name: "mcp-user-system",
|
|
31
|
-
version: "2.0
|
|
33
|
+
version: "2.1.0",
|
|
32
34
|
}, {
|
|
33
35
|
capabilities: {
|
|
34
36
|
tools: {},
|
|
@@ -44,6 +46,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
44
46
|
const parsedArgs = (args ?? {});
|
|
45
47
|
// 构建域路由映射
|
|
46
48
|
const domains = [
|
|
49
|
+
{ names: authTools.tools.map((t) => t.name), handler: authTools.handle },
|
|
47
50
|
{ names: userTools.tools.map((t) => t.name), handler: userTools.handle },
|
|
48
51
|
{ names: dashboardTools.tools.map((t) => t.name), handler: dashboardTools.handle },
|
|
49
52
|
{ names: walletTools.tools.map((t) => t.name), handler: walletTools.handle },
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/auth.d.ts
CHANGED
|
@@ -1,4 +1,18 @@
|
|
|
1
1
|
export declare const tools: ({
|
|
2
|
+
name: string;
|
|
3
|
+
description: string;
|
|
4
|
+
inputSchema: {
|
|
5
|
+
type: "object";
|
|
6
|
+
properties: {
|
|
7
|
+
username?: undefined;
|
|
8
|
+
password?: undefined;
|
|
9
|
+
captchaCode?: undefined;
|
|
10
|
+
uuid?: undefined;
|
|
11
|
+
token?: undefined;
|
|
12
|
+
};
|
|
13
|
+
required: never[];
|
|
14
|
+
};
|
|
15
|
+
} | {
|
|
2
16
|
name: string;
|
|
3
17
|
description: string;
|
|
4
18
|
inputSchema: {
|
|
@@ -12,6 +26,14 @@ export declare const tools: ({
|
|
|
12
26
|
type: string;
|
|
13
27
|
description: string;
|
|
14
28
|
};
|
|
29
|
+
captchaCode: {
|
|
30
|
+
type: string;
|
|
31
|
+
description: string;
|
|
32
|
+
};
|
|
33
|
+
uuid: {
|
|
34
|
+
type: string;
|
|
35
|
+
description: string;
|
|
36
|
+
};
|
|
15
37
|
token?: undefined;
|
|
16
38
|
};
|
|
17
39
|
required: string[];
|
|
@@ -28,38 +50,10 @@ export declare const tools: ({
|
|
|
28
50
|
};
|
|
29
51
|
username?: undefined;
|
|
30
52
|
password?: undefined;
|
|
53
|
+
captchaCode?: undefined;
|
|
54
|
+
uuid?: undefined;
|
|
31
55
|
};
|
|
32
56
|
required: string[];
|
|
33
57
|
};
|
|
34
|
-
} | {
|
|
35
|
-
name: string;
|
|
36
|
-
description: string;
|
|
37
|
-
inputSchema: {
|
|
38
|
-
type: "object";
|
|
39
|
-
properties: {
|
|
40
|
-
username?: undefined;
|
|
41
|
-
password?: undefined;
|
|
42
|
-
token?: undefined;
|
|
43
|
-
};
|
|
44
|
-
required: never[];
|
|
45
|
-
};
|
|
46
58
|
})[];
|
|
47
59
|
export declare function handle(name: string, args: Record<string, string>): Promise<unknown>;
|
|
48
|
-
/**
|
|
49
|
-
* 执行密码登录
|
|
50
|
-
* POST /console/user/login
|
|
51
|
-
* 前端 request 拦截器会将整个 JSON body AES 加密后以 { data: "<base64>" } 发送,
|
|
52
|
-
* 后端有对应的解密过滤器还原原始 body。MCP 需模拟相同行为。
|
|
53
|
-
* 响应格式: { code: 200, msg: "操作成功", token: "eyJ..." }
|
|
54
|
-
*/
|
|
55
|
-
export declare function doLogin(username: string, password: string): Promise<unknown>;
|
|
56
|
-
/**
|
|
57
|
-
* 尝试使用环境变量中的用户名密码自动登录
|
|
58
|
-
* 返回 true 表示登录成功,false 表示跳过(无凭据或已有 token)
|
|
59
|
-
*/
|
|
60
|
-
export declare function tryAutoLogin(): Promise<boolean>;
|
|
61
|
-
/**
|
|
62
|
-
* 强制使用环境变量中的用户名密码重新登录(用于 token 失效后的自动恢复)
|
|
63
|
-
* 返回 true 表示登录成功,false 表示无法重试(未配置凭据)
|
|
64
|
-
*/
|
|
65
|
-
export declare function tryRelogin(): Promise<boolean>;
|
package/dist/tools/auth.js
CHANGED
|
@@ -1,25 +1,41 @@
|
|
|
1
|
-
import { apiPostRaw, setToken, getToken } from "./client.js";
|
|
1
|
+
import { apiGetRaw, apiPostRaw, setToken, getToken } from "./client.js";
|
|
2
2
|
import { loadConfig } from "../env.js";
|
|
3
3
|
import { aesEncrypt } from "./crypto.js";
|
|
4
|
+
import * as fs from "fs";
|
|
5
|
+
import * as path from "path";
|
|
6
|
+
import * as os from "os";
|
|
4
7
|
// ---- 工具定义 ----
|
|
5
8
|
export const tools = [
|
|
9
|
+
{
|
|
10
|
+
name: "fetch_captcha",
|
|
11
|
+
description: "获取图形验证码。返回验证码图片路径和 uuid。" +
|
|
12
|
+
"调用后请用 Read 工具查看图片内容(通常是简单的数学计算题),算出答案后调用 login 工具登录。",
|
|
13
|
+
inputSchema: {
|
|
14
|
+
type: "object",
|
|
15
|
+
properties: {},
|
|
16
|
+
required: [],
|
|
17
|
+
},
|
|
18
|
+
},
|
|
6
19
|
{
|
|
7
20
|
name: "login",
|
|
8
|
-
description: "
|
|
21
|
+
description: "使用用户名、密码和验证码登录系统。" +
|
|
22
|
+
"需先调用 fetch_captcha 获取 uuid,再识别验证码图片得出答案后调用此工具。" +
|
|
9
23
|
"登录成功后后续请求将自动使用该令牌。",
|
|
10
24
|
inputSchema: {
|
|
11
25
|
type: "object",
|
|
12
26
|
properties: {
|
|
13
27
|
username: { type: "string", description: "用户名或手机号" },
|
|
14
28
|
password: { type: "string", description: "密码" },
|
|
29
|
+
captchaCode: { type: "string", description: "验证码计算结果(如数学题 3+5=? 则填 8)" },
|
|
30
|
+
uuid: { type: "string", description: "验证码对应的 uuid(来自 fetch_captcha)" },
|
|
15
31
|
},
|
|
16
|
-
required: ["username", "password"],
|
|
32
|
+
required: ["username", "password", "captchaCode", "uuid"],
|
|
17
33
|
},
|
|
18
34
|
},
|
|
19
35
|
{
|
|
20
36
|
name: "set_access_token",
|
|
21
|
-
description: "
|
|
22
|
-
"适用于已有 token
|
|
37
|
+
description: "直接设置或更新访问令牌(JWT token)。" +
|
|
38
|
+
"适用于已有 token 的场景,token 失效时可随时调用此工具更新,无需重启服务。",
|
|
23
39
|
inputSchema: {
|
|
24
40
|
type: "object",
|
|
25
41
|
properties: {
|
|
@@ -30,7 +46,7 @@ export const tools = [
|
|
|
30
46
|
},
|
|
31
47
|
{
|
|
32
48
|
name: "get_token_status",
|
|
33
|
-
description: "
|
|
49
|
+
description: "查看当前认证状态(是否已设置 token、token 来源)",
|
|
34
50
|
inputSchema: {
|
|
35
51
|
type: "object",
|
|
36
52
|
properties: {},
|
|
@@ -41,8 +57,10 @@ export const tools = [
|
|
|
41
57
|
// ---- 处理函数 ----
|
|
42
58
|
export async function handle(name, args) {
|
|
43
59
|
switch (name) {
|
|
60
|
+
case "fetch_captcha":
|
|
61
|
+
return doFetchCaptcha();
|
|
44
62
|
case "login":
|
|
45
|
-
return doLogin(args.username, args.password);
|
|
63
|
+
return doLogin(args.username, args.password, args.captchaCode, args.uuid);
|
|
46
64
|
case "set_access_token":
|
|
47
65
|
return doSetToken(args.token);
|
|
48
66
|
case "get_token_status":
|
|
@@ -53,35 +71,64 @@ export async function handle(name, args) {
|
|
|
53
71
|
}
|
|
54
72
|
// ---- 内部函数 ----
|
|
55
73
|
/**
|
|
56
|
-
*
|
|
74
|
+
* 获取图形验证码
|
|
75
|
+
* GET /captchaImage → { code: 200, captchaEnabled: true, uuid: "...", img: "<base64>" }
|
|
76
|
+
* 将 base64 图片保存到临时文件,返回文件路径和 uuid
|
|
77
|
+
*/
|
|
78
|
+
async function doFetchCaptcha() {
|
|
79
|
+
const response = await apiGetRaw("/captchaImage");
|
|
80
|
+
const captchaEnabled = response.captchaEnabled;
|
|
81
|
+
if (!captchaEnabled) {
|
|
82
|
+
return {
|
|
83
|
+
captchaEnabled: false,
|
|
84
|
+
message: "验证码未启用,可直接调用 login 工具登录(captchaCode 和 uuid 传空字符串)",
|
|
85
|
+
uuid: "",
|
|
86
|
+
imagePath: "",
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
const img = response.img;
|
|
90
|
+
const uuid = response.uuid;
|
|
91
|
+
if (!img || !uuid) {
|
|
92
|
+
throw new Error("验证码接口返回数据异常:缺少 img 或 uuid 字段");
|
|
93
|
+
}
|
|
94
|
+
// 将 base64 图片保存到临时文件
|
|
95
|
+
const tmpDir = os.tmpdir();
|
|
96
|
+
const tmpFile = path.join(tmpDir, `captcha_${uuid}.jpg`);
|
|
97
|
+
fs.writeFileSync(tmpFile, Buffer.from(img, "base64"));
|
|
98
|
+
return {
|
|
99
|
+
captchaEnabled: true,
|
|
100
|
+
uuid,
|
|
101
|
+
imagePath: tmpFile,
|
|
102
|
+
message: "验证码已获取,请用 Read 工具查看图片内容,识别数学算式并计算结果,然后调用 login 工具登录",
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* 执行密码登录(含验证码)
|
|
57
107
|
* POST /console/user/login
|
|
58
|
-
* 前端 request 拦截器会将整个 JSON body AES 加密后以 { data: "<base64>" }
|
|
59
|
-
* 后端有对应的解密过滤器还原原始 body。MCP 需模拟相同行为。
|
|
60
|
-
* 响应格式: { code: 200, msg: "操作成功", token: "eyJ..." }
|
|
108
|
+
* 前端 request 拦截器会将整个 JSON body AES 加密后以 { data: "<base64>" } 发送
|
|
61
109
|
*/
|
|
62
|
-
|
|
110
|
+
async function doLogin(username, password, captchaCode, uuid) {
|
|
63
111
|
// 构造原始请求体(与前端登录组件一致)
|
|
64
|
-
const plainBody = {
|
|
112
|
+
const plainBody = {
|
|
113
|
+
username,
|
|
114
|
+
password,
|
|
115
|
+
code: captchaCode,
|
|
116
|
+
uuid: uuid || "",
|
|
117
|
+
loginSms: false,
|
|
118
|
+
};
|
|
65
119
|
// AES-128-CBC 加密整个 JSON body → Base64
|
|
66
120
|
const encryptedData = aesEncrypt(JSON.stringify(plainBody));
|
|
67
|
-
// 以 { data: "<encrypted>" }
|
|
121
|
+
// 以 { data: "<encrypted>" } 格式发送
|
|
68
122
|
const response = await apiPostRaw("/console/user/login", { data: encryptedData });
|
|
69
|
-
// Debug: 打印完整后端响应
|
|
70
|
-
if (process.env.TUS_DEBUG) {
|
|
71
|
-
console.error("[MCP-DEBUG] login 响应:", JSON.stringify(response).slice(0, 1000));
|
|
72
|
-
}
|
|
73
|
-
// 兼容多种响应格式:
|
|
74
|
-
// 格式1: { code: 200, msg: "操作成功", token: "eyJ..." } (AjaxResult.put)
|
|
75
|
-
// 格式2: { code: 200, msg: "操作成功", data: { token: "eyJ..." } }
|
|
76
|
-
// 格式3: { code: 200, data: "eyJ..." } (token 直接作为 data)
|
|
77
123
|
const code = response.code;
|
|
78
124
|
if (code !== undefined && code !== 200) {
|
|
79
125
|
throw new Error(`登录失败 (${code}): ${response.msg}`);
|
|
80
126
|
}
|
|
81
127
|
// 从多个位置尝试获取 token
|
|
82
|
-
const token = response.token ??
|
|
128
|
+
const token = response.token ??
|
|
129
|
+
response.data?.token ??
|
|
130
|
+
(typeof response.data === "string" ? response.data : undefined);
|
|
83
131
|
if (!token) {
|
|
84
|
-
// 打印完整响应帮助调试
|
|
85
132
|
const keys = Object.keys(response);
|
|
86
133
|
throw new Error(`登录成功但未返回 token,响应字段: [${keys.join(", ")}],完整响应: ${JSON.stringify(response).slice(0, 500)}`);
|
|
87
134
|
}
|
|
@@ -94,44 +141,15 @@ export async function doLogin(username, password) {
|
|
|
94
141
|
}
|
|
95
142
|
function doSetToken(token) {
|
|
96
143
|
if (!token || !token.startsWith("eyJ")) {
|
|
97
|
-
throw new Error("无效的 token
|
|
144
|
+
throw new Error("无效的 token,应提供以 eyJ 开头的 JWT 令牌");
|
|
98
145
|
}
|
|
99
146
|
setToken(token);
|
|
100
147
|
return {
|
|
101
148
|
success: true,
|
|
102
|
-
message: "
|
|
149
|
+
message: "令牌已更新,后续请求将自动使用该令牌",
|
|
103
150
|
tokenPreview: token.slice(0, 20) + "...",
|
|
104
151
|
};
|
|
105
152
|
}
|
|
106
|
-
/**
|
|
107
|
-
* 尝试使用环境变量中的用户名密码自动登录
|
|
108
|
-
* 返回 true 表示登录成功,false 表示跳过(无凭据或已有 token)
|
|
109
|
-
*/
|
|
110
|
-
export async function tryAutoLogin() {
|
|
111
|
-
const config = loadConfig();
|
|
112
|
-
// 已有 token 则跳过
|
|
113
|
-
if (getToken()) {
|
|
114
|
-
return false;
|
|
115
|
-
}
|
|
116
|
-
// 无用户名密码则跳过
|
|
117
|
-
if (!config.username || !config.password) {
|
|
118
|
-
return false;
|
|
119
|
-
}
|
|
120
|
-
await doLogin(config.username, config.password);
|
|
121
|
-
return true;
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* 强制使用环境变量中的用户名密码重新登录(用于 token 失效后的自动恢复)
|
|
125
|
-
* 返回 true 表示登录成功,false 表示无法重试(未配置凭据)
|
|
126
|
-
*/
|
|
127
|
-
export async function tryRelogin() {
|
|
128
|
-
const config = loadConfig();
|
|
129
|
-
if (!config.username || !config.password) {
|
|
130
|
-
return false;
|
|
131
|
-
}
|
|
132
|
-
await doLogin(config.username, config.password);
|
|
133
|
-
return true;
|
|
134
|
-
}
|
|
135
153
|
function getTokenStatus() {
|
|
136
154
|
const token = getToken();
|
|
137
155
|
const config = loadConfig();
|
|
@@ -140,9 +158,8 @@ function getTokenStatus() {
|
|
|
140
158
|
tokenSource: token
|
|
141
159
|
? config.accessToken === token
|
|
142
160
|
? "环境变量 (TUS_ACCESS_TOKEN)"
|
|
143
|
-
: "
|
|
144
|
-
: "
|
|
145
|
-
hasCredentials: !!(config.username && config.password),
|
|
161
|
+
: "对话中设置"
|
|
162
|
+
: "未设置",
|
|
146
163
|
};
|
|
147
164
|
}
|
|
148
165
|
//# sourceMappingURL=auth.js.map
|
package/dist/tools/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/tools/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/tools/auth.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/client.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ interface TableDataInfo<T = unknown> {
|
|
|
4
4
|
total: number;
|
|
5
5
|
rows: T[];
|
|
6
6
|
}
|
|
7
|
+
export declare function getToken(): string | undefined;
|
|
8
|
+
export declare function setToken(token: string): void;
|
|
7
9
|
/**
|
|
8
10
|
* 发起 GET 请求
|
|
9
11
|
* 与前端 request.js 一致:params 加密后作为 ?data=<encrypted> 发送
|
|
@@ -19,4 +21,14 @@ export declare function apiGetPage<T = unknown>(path: string, params?: Record<st
|
|
|
19
21
|
* 与前端 request.js 一致:body 加密后以 { data: "<encrypted>" } 发送
|
|
20
22
|
*/
|
|
21
23
|
export declare function apiPost<T = unknown>(path: string, body?: unknown): Promise<T>;
|
|
24
|
+
/**
|
|
25
|
+
* 发起 GET 请求,不携带 Authorization 头,返回完整 JSON 响应
|
|
26
|
+
* 用于验证码等无需认证的接口
|
|
27
|
+
*/
|
|
28
|
+
export declare function apiGetRaw(path: string): Promise<Record<string, unknown>>;
|
|
29
|
+
/**
|
|
30
|
+
* 发起 POST 请求,不携带 Authorization 头,返回完整 JSON 响应
|
|
31
|
+
* 用于登录等无需认证的接口
|
|
32
|
+
*/
|
|
33
|
+
export declare function apiPostRaw(path: string, body?: unknown): Promise<Record<string, unknown>>;
|
|
22
34
|
export {};
|
package/dist/tools/client.js
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import { loadConfig } from "../env.js";
|
|
2
2
|
import { aesEncrypt } from "./crypto.js";
|
|
3
|
+
// ── Token 管理(支持对话中动态更新) ──
|
|
4
|
+
let currentToken = loadConfig().accessToken;
|
|
5
|
+
export function getToken() {
|
|
6
|
+
return currentToken;
|
|
7
|
+
}
|
|
8
|
+
export function setToken(token) {
|
|
9
|
+
currentToken = token;
|
|
10
|
+
}
|
|
3
11
|
// ── Debug logging ──
|
|
4
12
|
function debugLog(label, ...args) {
|
|
5
13
|
if (process.env.TUS_DEBUG) {
|
|
@@ -9,7 +17,7 @@ function debugLog(label, ...args) {
|
|
|
9
17
|
// ── Helpers ──
|
|
10
18
|
function getBaseUrl() {
|
|
11
19
|
const config = loadConfig();
|
|
12
|
-
return config.baseUrl.replace(/\/+$/, "")
|
|
20
|
+
return config.baseUrl.replace(/\/+$/, "");
|
|
13
21
|
}
|
|
14
22
|
// ── 标准请求头(与前端 request.js 拦截器一致) ──
|
|
15
23
|
const COMMON_HEADERS = {
|
|
@@ -20,10 +28,13 @@ const COMMON_HEADERS = {
|
|
|
20
28
|
"DeviceType": "browser",
|
|
21
29
|
};
|
|
22
30
|
function getAuthHeaders() {
|
|
23
|
-
const
|
|
31
|
+
const token = currentToken ?? loadConfig().accessToken;
|
|
32
|
+
if (!token) {
|
|
33
|
+
throw new Error("未配置访问令牌,请使用 set_access_token 工具设置 token,或在环境变量中配置 TUS_ACCESS_TOKEN");
|
|
34
|
+
}
|
|
24
35
|
return {
|
|
25
36
|
...COMMON_HEADERS,
|
|
26
|
-
"Authorization": `Bearer ${
|
|
37
|
+
"Authorization": `Bearer ${token}`,
|
|
27
38
|
};
|
|
28
39
|
}
|
|
29
40
|
/**
|
|
@@ -147,4 +158,58 @@ export async function apiPost(path, body) {
|
|
|
147
158
|
clearTimeout(timeout);
|
|
148
159
|
}
|
|
149
160
|
}
|
|
161
|
+
/**
|
|
162
|
+
* 发起 GET 请求,不携带 Authorization 头,返回完整 JSON 响应
|
|
163
|
+
* 用于验证码等无需认证的接口
|
|
164
|
+
*/
|
|
165
|
+
export async function apiGetRaw(path) {
|
|
166
|
+
const url = `${getBaseUrl()}${path}`;
|
|
167
|
+
debugLog(`GET(raw) ${url}`);
|
|
168
|
+
const controller = new AbortController();
|
|
169
|
+
const timeout = setTimeout(() => controller.abort(), 30000);
|
|
170
|
+
try {
|
|
171
|
+
const res = await fetch(url, {
|
|
172
|
+
method: "GET",
|
|
173
|
+
headers: COMMON_HEADERS,
|
|
174
|
+
signal: controller.signal,
|
|
175
|
+
});
|
|
176
|
+
const text = await res.text();
|
|
177
|
+
debugLog(`GET(raw) ${path} → ${res.status}`, text.slice(0, 500));
|
|
178
|
+
if (!res.ok) {
|
|
179
|
+
throw new Error(`HTTP ${res.status}: ${text}`);
|
|
180
|
+
}
|
|
181
|
+
return JSON.parse(text);
|
|
182
|
+
}
|
|
183
|
+
finally {
|
|
184
|
+
clearTimeout(timeout);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* 发起 POST 请求,不携带 Authorization 头,返回完整 JSON 响应
|
|
189
|
+
* 用于登录等无需认证的接口
|
|
190
|
+
*/
|
|
191
|
+
export async function apiPostRaw(path, body) {
|
|
192
|
+
const url = `${getBaseUrl()}${path}`;
|
|
193
|
+
const bodyStr = body ? JSON.stringify(body) : undefined;
|
|
194
|
+
debugLog(`POST(raw) ${url}`, bodyStr?.slice(0, 500));
|
|
195
|
+
const controller = new AbortController();
|
|
196
|
+
const timeout = setTimeout(() => controller.abort(), 30000);
|
|
197
|
+
try {
|
|
198
|
+
const res = await fetch(url, {
|
|
199
|
+
method: "POST",
|
|
200
|
+
headers: COMMON_HEADERS,
|
|
201
|
+
body: bodyStr,
|
|
202
|
+
signal: controller.signal,
|
|
203
|
+
});
|
|
204
|
+
const text = await res.text();
|
|
205
|
+
debugLog(`POST(raw) ${path} → ${res.status}`, text.slice(0, 500));
|
|
206
|
+
if (!res.ok) {
|
|
207
|
+
throw new Error(`HTTP ${res.status}: ${text}`);
|
|
208
|
+
}
|
|
209
|
+
return JSON.parse(text);
|
|
210
|
+
}
|
|
211
|
+
finally {
|
|
212
|
+
clearTimeout(timeout);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
150
215
|
//# sourceMappingURL=client.js.map
|
package/dist/tools/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/tools/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAezC,sBAAsB;AAEtB,SAAS,QAAQ,CAAC,KAAa,EAAE,GAAG,IAAe;IACjD,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QAC1B,OAAO,CAAC,KAAK,CAAC,eAAe,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAED,gBAAgB;AAEhB,SAAS,UAAU;IACjB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/tools/client.ts"],"names":[],"mappings":"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"}
|