mcp-user-system 2.0.1 → 2.0.3
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 +3 -1
- package/dist/env.js +12 -1
- package/dist/env.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +20 -3
- package/dist/index.js.map +1 -1
- package/dist/tools/auth.d.ts +46 -0
- package/dist/tools/auth.js +107 -0
- package/dist/tools/auth.js.map +1 -0
- package/dist/tools/client.d.ts +8 -1
- package/dist/tools/client.js +151 -73
- package/dist/tools/client.js.map +1 -1
- package/package.json +1 -1
package/dist/env.d.ts
CHANGED
package/dist/env.js
CHANGED
|
@@ -8,10 +8,21 @@ function requireEnv(name) {
|
|
|
8
8
|
}
|
|
9
9
|
return value;
|
|
10
10
|
}
|
|
11
|
+
function optionalEnv(name) {
|
|
12
|
+
return process.env[name] || undefined;
|
|
13
|
+
}
|
|
11
14
|
export function loadConfig() {
|
|
15
|
+
const accessToken = optionalEnv("TUS_ACCESS_TOKEN");
|
|
16
|
+
const username = optionalEnv("TUS_USERNAME");
|
|
17
|
+
const password = optionalEnv("TUS_PASSWORD");
|
|
18
|
+
if (!accessToken && (!username || !password)) {
|
|
19
|
+
throw new Error("Authentication required: provide TUS_ACCESS_TOKEN, or both TUS_USERNAME and TUS_PASSWORD");
|
|
20
|
+
}
|
|
12
21
|
return {
|
|
13
22
|
baseUrl: requireEnv("TUS_BASE_URL"),
|
|
14
|
-
accessToken
|
|
23
|
+
accessToken,
|
|
24
|
+
username,
|
|
25
|
+
password,
|
|
15
26
|
};
|
|
16
27
|
}
|
|
17
28
|
//# sourceMappingURL=env.js.map
|
package/dist/env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,SAAS,UAAU,CAAC,IAAY;IAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,0CAA0C,IAAI,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,MAAM,WAAW,GAAG,WAAW,CAAC,kBAAkB,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC;IAE7C,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CACb,0FAA0F,CAC3F,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,UAAU,CAAC,cAAc,CAAC;QACnC,WAAW;QACX,QAAQ;QACR,QAAQ;KACT,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.0.2",
|
|
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 },
|
|
@@ -57,8 +60,11 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
57
60
|
if (domain.names.includes(name)) {
|
|
58
61
|
try {
|
|
59
62
|
const data = await domain.handler(name, parsedArgs);
|
|
63
|
+
const text = data !== undefined
|
|
64
|
+
? JSON.stringify(data, null, 2)
|
|
65
|
+
: JSON.stringify({ message: "操作成功,无返回数据" });
|
|
60
66
|
return {
|
|
61
|
-
content: [{ type: "text", text
|
|
67
|
+
content: [{ type: "text", text }],
|
|
62
68
|
};
|
|
63
69
|
}
|
|
64
70
|
catch (err) {
|
|
@@ -77,6 +83,17 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
77
83
|
});
|
|
78
84
|
// ── Start Server ──
|
|
79
85
|
async function main() {
|
|
86
|
+
// 尝试自动登录(配置了用户名密码但没有 token 时)
|
|
87
|
+
try {
|
|
88
|
+
const loggedIn = await authTools.tryAutoLogin();
|
|
89
|
+
if (loggedIn) {
|
|
90
|
+
console.error("Auto-login successful using TUS_USERNAME/TUS_PASSWORD");
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
catch (err) {
|
|
94
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
95
|
+
console.error(`Auto-login failed: ${message}`);
|
|
96
|
+
}
|
|
80
97
|
const transport = new StdioServerTransport();
|
|
81
98
|
await server.connect(transport);
|
|
82
99
|
console.error("mcp-user-system server running on stdio");
|
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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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export declare const tools: ({
|
|
2
|
+
name: string;
|
|
3
|
+
description: string;
|
|
4
|
+
inputSchema: {
|
|
5
|
+
type: "object";
|
|
6
|
+
properties: {
|
|
7
|
+
username: {
|
|
8
|
+
type: string;
|
|
9
|
+
description: string;
|
|
10
|
+
};
|
|
11
|
+
password: {
|
|
12
|
+
type: string;
|
|
13
|
+
description: string;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
required: string[];
|
|
17
|
+
};
|
|
18
|
+
} | {
|
|
19
|
+
name: string;
|
|
20
|
+
description: string;
|
|
21
|
+
inputSchema: {
|
|
22
|
+
type: "object";
|
|
23
|
+
properties: {
|
|
24
|
+
username?: undefined;
|
|
25
|
+
password?: undefined;
|
|
26
|
+
};
|
|
27
|
+
required: never[];
|
|
28
|
+
};
|
|
29
|
+
})[];
|
|
30
|
+
export declare function handle(name: string, args: Record<string, string>): Promise<unknown>;
|
|
31
|
+
/**
|
|
32
|
+
* 执行密码登录
|
|
33
|
+
* POST /console/user/login body: { username, password, loginSms: false }
|
|
34
|
+
* 响应格式: { code: 200, msg: "操作成功", token: "eyJ..." }
|
|
35
|
+
*/
|
|
36
|
+
export declare function doLogin(username: string, password: string): Promise<unknown>;
|
|
37
|
+
/**
|
|
38
|
+
* 尝试使用环境变量中的用户名密码自动登录
|
|
39
|
+
* 返回 true 表示登录成功,false 表示跳过(无凭据或已有 token)
|
|
40
|
+
*/
|
|
41
|
+
export declare function tryAutoLogin(): Promise<boolean>;
|
|
42
|
+
/**
|
|
43
|
+
* 强制使用环境变量中的用户名密码重新登录(用于 token 失效后的自动恢复)
|
|
44
|
+
* 返回 true 表示登录成功,false 表示无法重试(未配置凭据)
|
|
45
|
+
*/
|
|
46
|
+
export declare function tryRelogin(): Promise<boolean>;
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { apiPostRaw, setToken, getToken } from "./client.js";
|
|
2
|
+
import { loadConfig } from "../env.js";
|
|
3
|
+
// ---- 工具定义 ----
|
|
4
|
+
export const tools = [
|
|
5
|
+
{
|
|
6
|
+
name: "login",
|
|
7
|
+
description: "使用用户名(或手机号)和密码登录系统,获取访问令牌。" +
|
|
8
|
+
"登录成功后后续请求将自动使用该令牌。",
|
|
9
|
+
inputSchema: {
|
|
10
|
+
type: "object",
|
|
11
|
+
properties: {
|
|
12
|
+
username: { type: "string", description: "用户名或手机号" },
|
|
13
|
+
password: { type: "string", description: "密码" },
|
|
14
|
+
},
|
|
15
|
+
required: ["username", "password"],
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
name: "get_token_status",
|
|
20
|
+
description: "查看当前认证状态(是否已登录、token 来源)",
|
|
21
|
+
inputSchema: {
|
|
22
|
+
type: "object",
|
|
23
|
+
properties: {},
|
|
24
|
+
required: [],
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
// ---- 处理函数 ----
|
|
29
|
+
export async function handle(name, args) {
|
|
30
|
+
switch (name) {
|
|
31
|
+
case "login":
|
|
32
|
+
return doLogin(args.username, args.password);
|
|
33
|
+
case "get_token_status":
|
|
34
|
+
return getTokenStatus();
|
|
35
|
+
default:
|
|
36
|
+
throw new Error(`Unknown tool: ${name}`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// ---- 内部函数 ----
|
|
40
|
+
/**
|
|
41
|
+
* 执行密码登录
|
|
42
|
+
* POST /console/user/login body: { username, password, loginSms: false }
|
|
43
|
+
* 响应格式: { code: 200, msg: "操作成功", token: "eyJ..." }
|
|
44
|
+
*/
|
|
45
|
+
export async function doLogin(username, password) {
|
|
46
|
+
const response = await apiPostRaw("/console/user/login", {
|
|
47
|
+
username,
|
|
48
|
+
password,
|
|
49
|
+
loginSms: false,
|
|
50
|
+
});
|
|
51
|
+
if (response.code !== 200) {
|
|
52
|
+
throw new Error(`登录失败 (${response.code}): ${response.msg}`);
|
|
53
|
+
}
|
|
54
|
+
const token = response.token;
|
|
55
|
+
if (!token) {
|
|
56
|
+
throw new Error("登录成功但未返回 token");
|
|
57
|
+
}
|
|
58
|
+
setToken(token);
|
|
59
|
+
return {
|
|
60
|
+
success: true,
|
|
61
|
+
message: "登录成功,后续请求将自动使用该令牌",
|
|
62
|
+
user: username,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* 尝试使用环境变量中的用户名密码自动登录
|
|
67
|
+
* 返回 true 表示登录成功,false 表示跳过(无凭据或已有 token)
|
|
68
|
+
*/
|
|
69
|
+
export async function tryAutoLogin() {
|
|
70
|
+
const config = loadConfig();
|
|
71
|
+
// 已有 token 则跳过
|
|
72
|
+
if (getToken()) {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
// 无用户名密码则跳过
|
|
76
|
+
if (!config.username || !config.password) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
await doLogin(config.username, config.password);
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* 强制使用环境变量中的用户名密码重新登录(用于 token 失效后的自动恢复)
|
|
84
|
+
* 返回 true 表示登录成功,false 表示无法重试(未配置凭据)
|
|
85
|
+
*/
|
|
86
|
+
export async function tryRelogin() {
|
|
87
|
+
const config = loadConfig();
|
|
88
|
+
if (!config.username || !config.password) {
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
await doLogin(config.username, config.password);
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
function getTokenStatus() {
|
|
95
|
+
const token = getToken();
|
|
96
|
+
const config = loadConfig();
|
|
97
|
+
return {
|
|
98
|
+
authenticated: !!token,
|
|
99
|
+
tokenSource: token
|
|
100
|
+
? config.accessToken === token
|
|
101
|
+
? "环境变量 (TUS_ACCESS_TOKEN)"
|
|
102
|
+
: "登录获取"
|
|
103
|
+
: "无",
|
|
104
|
+
hasCredentials: !!(config.username && config.password),
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +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;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,iBAAiB;AACjB,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB;QACE,IAAI,EAAE,OAAO;QACb,WAAW,EACT,4BAA4B;YAC5B,oBAAoB;QACtB,WAAW,EAAE;YACX,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE;gBACpD,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE;aAChD;YACD,QAAQ,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;SACnC;KACF;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,0BAA0B;QACvC,WAAW,EAAE;YACX,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,EAAE;SACb;KACF;CACF,CAAC;AAEF,iBAAiB;AACjB,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAY,EAAE,IAA4B;IACrE,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO;YACV,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/C,KAAK,kBAAkB;YACrB,OAAO,cAAc,EAAE,CAAC;QAC1B;YACE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,iBAAiB;AAEjB;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,QAAgB,EAAE,QAAgB;IAC9D,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,qBAAqB,EAAE;QACvD,QAAQ;QACR,QAAQ;QACR,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;IAEH,IAAI,QAAQ,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,SAAS,QAAQ,CAAC,IAAI,MAAM,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,KAA2B,CAAC;IACnD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACpC,CAAC;IAED,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEhB,OAAO;QACL,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,mBAAmB;QAC5B,IAAI,EAAE,QAAQ;KACf,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAE5B,eAAe;IACf,IAAI,QAAQ,EAAE,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;IAED,YAAY;IACZ,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAChD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAE5B,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAChD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,cAAc;IACrB,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAE5B,OAAO;QACL,aAAa,EAAE,CAAC,CAAC,KAAK;QACtB,WAAW,EAAE,KAAK;YAChB,CAAC,CAAC,MAAM,CAAC,WAAW,KAAK,KAAK;gBAC5B,CAAC,CAAC,yBAAyB;gBAC3B,CAAC,CAAC,MAAM;YACV,CAAC,CAAC,GAAG;QACP,cAAc,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC;KACvD,CAAC;AACJ,CAAC"}
|
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
|
*/
|
|
@@ -13,7 +15,12 @@ export declare function apiGet<T = unknown>(path: string, params?: Record<string
|
|
|
13
15
|
*/
|
|
14
16
|
export declare function apiGetPage<T = unknown>(path: string, params?: Record<string, string | undefined>): Promise<TableDataInfo<T>>;
|
|
15
17
|
/**
|
|
16
|
-
* 发起 POST
|
|
18
|
+
* 发起 POST 请求(携带 Authorization 头)
|
|
17
19
|
*/
|
|
18
20
|
export declare function apiPost<T = unknown>(path: string, body?: unknown): Promise<T>;
|
|
21
|
+
/**
|
|
22
|
+
* 发起 POST 请求,不携带 Authorization 头,返回完整 JSON 响应
|
|
23
|
+
* 用于登录等无需认证的接口
|
|
24
|
+
*/
|
|
25
|
+
export declare function apiPostRaw(path: string, body?: unknown): Promise<Record<string, unknown>>;
|
|
19
26
|
export {};
|
package/dist/tools/client.js
CHANGED
|
@@ -1,103 +1,185 @@
|
|
|
1
1
|
import { loadConfig } from "../env.js";
|
|
2
|
+
import { tryRelogin } from "./auth.js";
|
|
3
|
+
// ── Token management ──
|
|
4
|
+
let currentToken = loadConfig().accessToken;
|
|
5
|
+
export function getToken() {
|
|
6
|
+
return currentToken;
|
|
7
|
+
}
|
|
8
|
+
export function setToken(token) {
|
|
9
|
+
currentToken = token;
|
|
10
|
+
}
|
|
11
|
+
// ── Helpers ──
|
|
2
12
|
function getBaseUrl() {
|
|
3
13
|
const config = loadConfig();
|
|
4
14
|
return config.baseUrl.replace(/\/+$/, "");
|
|
5
15
|
}
|
|
16
|
+
function getAuthHeaders() {
|
|
17
|
+
const token = currentToken ?? loadConfig().accessToken;
|
|
18
|
+
if (!token) {
|
|
19
|
+
throw new Error("未登录,请先使用 login 工具登录,或在环境变量中配置 TUS_ACCESS_TOKEN");
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
"Authorization": `Bearer ${token}`,
|
|
23
|
+
"Content-Type": "application/json",
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* 判断错误是否为认证相关错误(token 过期、无效等)
|
|
28
|
+
*/
|
|
29
|
+
function isAuthError(error) {
|
|
30
|
+
if (!(error instanceof Error))
|
|
31
|
+
return false;
|
|
32
|
+
const msg = error.message.toLowerCase();
|
|
33
|
+
// HTTP 401
|
|
34
|
+
if (msg.includes("401"))
|
|
35
|
+
return true;
|
|
36
|
+
// 业务错误关键词
|
|
37
|
+
const authKeywords = ["token", "认证", "登录", "过期", "expired", "unauthorized", "无效"];
|
|
38
|
+
return authKeywords.some((kw) => msg.includes(kw));
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* 尝试自动重新登录并重试请求
|
|
42
|
+
* 如果配置了用户名密码且当前错误是认证错误,则重新登录后重试一次
|
|
43
|
+
*/
|
|
44
|
+
async function withAutoRetry(requestFn) {
|
|
45
|
+
try {
|
|
46
|
+
return await requestFn();
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
if (!isAuthError(err)) {
|
|
50
|
+
throw err;
|
|
51
|
+
}
|
|
52
|
+
// 尝试用用户名密码重新登录
|
|
53
|
+
const reloggedIn = await tryRelogin();
|
|
54
|
+
if (!reloggedIn) {
|
|
55
|
+
throw err; // 无法重试,抛出原始错误
|
|
56
|
+
}
|
|
57
|
+
// 用新 token 重试
|
|
58
|
+
return await requestFn();
|
|
59
|
+
}
|
|
60
|
+
}
|
|
6
61
|
/**
|
|
7
62
|
* 发起 GET 请求
|
|
8
63
|
*/
|
|
9
64
|
export async function apiGet(path, params) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
65
|
+
return withAutoRetry(async () => {
|
|
66
|
+
const query = new URLSearchParams();
|
|
67
|
+
if (params) {
|
|
68
|
+
for (const [key, value] of Object.entries(params)) {
|
|
69
|
+
if (value !== undefined && value !== "") {
|
|
70
|
+
query.append(key, value);
|
|
71
|
+
}
|
|
16
72
|
}
|
|
17
73
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
74
|
+
const qs = query.toString();
|
|
75
|
+
const url = `${getBaseUrl()}${path}${qs ? "?" + qs : ""}`;
|
|
76
|
+
const controller = new AbortController();
|
|
77
|
+
const timeout = setTimeout(() => controller.abort(), 30000);
|
|
78
|
+
try {
|
|
79
|
+
const res = await fetch(url, {
|
|
80
|
+
method: "GET",
|
|
81
|
+
headers: getAuthHeaders(),
|
|
82
|
+
signal: controller.signal,
|
|
83
|
+
});
|
|
84
|
+
const text = await res.text();
|
|
85
|
+
if (!res.ok) {
|
|
86
|
+
throw new Error(`HTTP ${res.status}: ${text}`);
|
|
87
|
+
}
|
|
88
|
+
const json = JSON.parse(text);
|
|
89
|
+
if (json.code !== 200) {
|
|
90
|
+
throw new Error(`API error (${json.code}): ${json.msg}`);
|
|
91
|
+
}
|
|
92
|
+
// 兼容 R<> 格式(有 data 字段)和 AjaxResult 格式(无 data 字段)
|
|
93
|
+
if ('data' in json) {
|
|
94
|
+
return json.data;
|
|
95
|
+
}
|
|
96
|
+
return json;
|
|
35
97
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
throw new Error(`API error (${json.code}): ${json.msg}`);
|
|
98
|
+
finally {
|
|
99
|
+
clearTimeout(timeout);
|
|
39
100
|
}
|
|
40
|
-
|
|
41
|
-
}
|
|
42
|
-
finally {
|
|
43
|
-
clearTimeout(timeout);
|
|
44
|
-
}
|
|
101
|
+
});
|
|
45
102
|
}
|
|
46
103
|
/**
|
|
47
104
|
* 发起 GET 请求,返回分页数据(TableDataInfo 格式)
|
|
48
105
|
*/
|
|
49
106
|
export async function apiGetPage(path, params) {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
107
|
+
return withAutoRetry(async () => {
|
|
108
|
+
const query = new URLSearchParams();
|
|
109
|
+
if (params) {
|
|
110
|
+
for (const [key, value] of Object.entries(params)) {
|
|
111
|
+
if (value !== undefined && value !== "") {
|
|
112
|
+
query.append(key, value);
|
|
113
|
+
}
|
|
56
114
|
}
|
|
57
115
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
116
|
+
const qs = query.toString();
|
|
117
|
+
const url = `${getBaseUrl()}${path}${qs ? "?" + qs : ""}`;
|
|
118
|
+
const controller = new AbortController();
|
|
119
|
+
const timeout = setTimeout(() => controller.abort(), 30000);
|
|
120
|
+
try {
|
|
121
|
+
const res = await fetch(url, {
|
|
122
|
+
method: "GET",
|
|
123
|
+
headers: getAuthHeaders(),
|
|
124
|
+
signal: controller.signal,
|
|
125
|
+
});
|
|
126
|
+
const text = await res.text();
|
|
127
|
+
if (!res.ok) {
|
|
128
|
+
throw new Error(`HTTP ${res.status}: ${text}`);
|
|
129
|
+
}
|
|
130
|
+
const json = JSON.parse(text);
|
|
131
|
+
if (json.code !== undefined && json.code !== 200 && json.code !== 0) {
|
|
132
|
+
throw new Error(`API error (${json.code}): ${json.msg}`);
|
|
133
|
+
}
|
|
134
|
+
return json;
|
|
75
135
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
throw new Error(`API error (${json.code}): ${json.msg}`);
|
|
136
|
+
finally {
|
|
137
|
+
clearTimeout(timeout);
|
|
79
138
|
}
|
|
80
|
-
|
|
81
|
-
}
|
|
82
|
-
finally {
|
|
83
|
-
clearTimeout(timeout);
|
|
84
|
-
}
|
|
139
|
+
});
|
|
85
140
|
}
|
|
86
141
|
/**
|
|
87
|
-
* 发起 POST
|
|
142
|
+
* 发起 POST 请求(携带 Authorization 头)
|
|
88
143
|
*/
|
|
89
144
|
export async function apiPost(path, body) {
|
|
90
|
-
|
|
145
|
+
return withAutoRetry(async () => {
|
|
146
|
+
const url = `${getBaseUrl()}${path}`;
|
|
147
|
+
const controller = new AbortController();
|
|
148
|
+
const timeout = setTimeout(() => controller.abort(), 30000);
|
|
149
|
+
try {
|
|
150
|
+
const res = await fetch(url, {
|
|
151
|
+
method: "POST",
|
|
152
|
+
headers: getAuthHeaders(),
|
|
153
|
+
body: body ? JSON.stringify(body) : undefined,
|
|
154
|
+
signal: controller.signal,
|
|
155
|
+
});
|
|
156
|
+
const text = await res.text();
|
|
157
|
+
if (!res.ok) {
|
|
158
|
+
throw new Error(`HTTP ${res.status}: ${text}`);
|
|
159
|
+
}
|
|
160
|
+
const json = JSON.parse(text);
|
|
161
|
+
if (json.code !== 200) {
|
|
162
|
+
throw new Error(`API error (${json.code}): ${json.msg}`);
|
|
163
|
+
}
|
|
164
|
+
return json.data;
|
|
165
|
+
}
|
|
166
|
+
finally {
|
|
167
|
+
clearTimeout(timeout);
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* 发起 POST 请求,不携带 Authorization 头,返回完整 JSON 响应
|
|
173
|
+
* 用于登录等无需认证的接口
|
|
174
|
+
*/
|
|
175
|
+
export async function apiPostRaw(path, body) {
|
|
91
176
|
const url = `${getBaseUrl()}${path}`;
|
|
92
177
|
const controller = new AbortController();
|
|
93
178
|
const timeout = setTimeout(() => controller.abort(), 30000);
|
|
94
179
|
try {
|
|
95
180
|
const res = await fetch(url, {
|
|
96
181
|
method: "POST",
|
|
97
|
-
headers: {
|
|
98
|
-
"Authorization": `Bearer ${config.accessToken}`,
|
|
99
|
-
"Content-Type": "application/json",
|
|
100
|
-
},
|
|
182
|
+
headers: { "Content-Type": "application/json" },
|
|
101
183
|
body: body ? JSON.stringify(body) : undefined,
|
|
102
184
|
signal: controller.signal,
|
|
103
185
|
});
|
|
@@ -105,11 +187,7 @@ export async function apiPost(path, body) {
|
|
|
105
187
|
if (!res.ok) {
|
|
106
188
|
throw new Error(`HTTP ${res.status}: ${text}`);
|
|
107
189
|
}
|
|
108
|
-
|
|
109
|
-
if (json.code !== 200) {
|
|
110
|
-
throw new Error(`API error (${json.code}): ${json.msg}`);
|
|
111
|
-
}
|
|
112
|
-
return json.data;
|
|
190
|
+
return JSON.parse(text);
|
|
113
191
|
}
|
|
114
192
|
finally {
|
|
115
193
|
clearTimeout(timeout);
|
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;AAevC,SAAS,UAAU;IACjB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/tools/client.ts"],"names":[],"mappings":"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"}
|