@give-tech/lingxi-mcp-server 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 +193 -0
- package/dist/client.d.ts +11 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +46 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +88 -0
- package/dist/index.js.map +1 -0
- package/dist/lingxi-client.d.ts +59 -0
- package/dist/lingxi-client.d.ts.map +1 -0
- package/dist/lingxi-client.js +380 -0
- package/dist/lingxi-client.js.map +1 -0
- package/dist/tools/api.d.ts +176 -0
- package/dist/tools/api.d.ts.map +1 -0
- package/dist/tools/api.js +188 -0
- package/dist/tools/api.js.map +1 -0
- package/dist/tools/document.d.ts +103 -0
- package/dist/tools/document.d.ts.map +1 -0
- package/dist/tools/document.js +125 -0
- package/dist/tools/document.js.map +1 -0
- package/dist/tools/model.d.ts +176 -0
- package/dist/tools/model.d.ts.map +1 -0
- package/dist/tools/model.js +178 -0
- package/dist/tools/model.js.map +1 -0
- package/dist/tools/module.d.ts +111 -0
- package/dist/tools/module.d.ts.map +1 -0
- package/dist/tools/module.js +126 -0
- package/dist/tools/module.js.map +1 -0
- package/dist/tools/project.d.ts +17 -0
- package/dist/tools/project.d.ts.map +1 -0
- package/dist/tools/project.js +25 -0
- package/dist/tools/project.js.map +1 -0
- package/dist/tools/team.d.ts +92 -0
- package/dist/tools/team.d.ts.map +1 -0
- package/dist/tools/team.js +109 -0
- package/dist/tools/team.js.map +1 -0
- package/dist/types.d.ts +238 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +38 -0
package/README.md
ADDED
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
# Lingxi MCP Server
|
|
2
|
+
|
|
3
|
+
[Model Context Protocol](https://modelcontextprotocol.io/) server for [Lingxi API Management Platform](https://github.com/lingxi).
|
|
4
|
+
|
|
5
|
+
## 功能
|
|
6
|
+
|
|
7
|
+
通过 MCP Protocol 提供 Lingxi API 管理平台的完整 CRUD 操作:
|
|
8
|
+
|
|
9
|
+
- **Team (团队)**: 5 个工具
|
|
10
|
+
- **Module (模块)**: 5 个工具
|
|
11
|
+
- **API**: 6 个工具
|
|
12
|
+
- **Model**: 5 个工具
|
|
13
|
+
- **Document (文档)**: 5 个工具
|
|
14
|
+
|
|
15
|
+
## 安装
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npm install -g @lingxi/mcp-server
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## 配置
|
|
22
|
+
|
|
23
|
+
设置环境变量:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
export LINGXI_API_TOKEN="your-api-token-here"
|
|
27
|
+
export LINGXI_API_BASE_URL="https://lingxiapi.8jinkeji.com" # 可选,默认为此地址
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### 获取 API Token
|
|
31
|
+
|
|
32
|
+
**方式一:通过灵犀平台 Web 页面**
|
|
33
|
+
|
|
34
|
+
1. 访问灵犀 API 管理平台:https://lingxi.8jinkeji.com
|
|
35
|
+
2. 登录后点击右上角头像 → **设置**
|
|
36
|
+
3. 选择 **API Token** → 点击 **创建 Token**
|
|
37
|
+
4. 输入 Token 名称(如 "Claude Code")和有效期
|
|
38
|
+
5. 创建后**复制 Token**(仅显示一次,请妥善保管)
|
|
39
|
+
|
|
40
|
+
**方式二:通过 API 创建**
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
curl -X POST https://lingxiapi.8jinkeji.com/api/v1/users/tokens \
|
|
44
|
+
-H "Authorization: Bearer YOUR_LOGIN_TOKEN" \
|
|
45
|
+
-H "Content-Type: application/json" \
|
|
46
|
+
-d '{"name": "Claude MCP", "expire_days": 365}'
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## 使用
|
|
50
|
+
|
|
51
|
+
### Claude Code 配置
|
|
52
|
+
|
|
53
|
+
编辑 Claude Code 配置文件 `~/.claude/settings.json`:
|
|
54
|
+
|
|
55
|
+
```json
|
|
56
|
+
{
|
|
57
|
+
"mcpServers": {
|
|
58
|
+
"lingxi": {
|
|
59
|
+
"command": "node",
|
|
60
|
+
"args": ["/path/to/mcp-server/dist/index.js"],
|
|
61
|
+
"env": {
|
|
62
|
+
"LINGXI_API_TOKEN": "your-api-token-here",
|
|
63
|
+
"LINGXI_API_BASE_URL": "https://lingxiapi.8jinkeji.com"
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**配置说明**:
|
|
71
|
+
- `command`: 运行 MCP Server 的命令(`node` 或直接指向编译后的文件)
|
|
72
|
+
- `args`: MCP Server 文件路径(需替换为实际路径)
|
|
73
|
+
- `LINGXI_API_TOKEN`: **必填**,灵犀平台的 API Token
|
|
74
|
+
- `LINGXI_API_BASE_URL`: 可选,默认为 `https://lingxiapi.8jinkeji.com`
|
|
75
|
+
|
|
76
|
+
### Claude Desktop 配置
|
|
77
|
+
|
|
78
|
+
在 Claude Desktop 的配置文件中添加:
|
|
79
|
+
|
|
80
|
+
**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
81
|
+
**Windows**: `%APPDATA%/Claude/claude_desktop_config.json`
|
|
82
|
+
|
|
83
|
+
```json
|
|
84
|
+
{
|
|
85
|
+
"mcpServers": {
|
|
86
|
+
"lingxi": {
|
|
87
|
+
"command": "lingxi-mcp-server",
|
|
88
|
+
"env": {
|
|
89
|
+
"LINGXI_API_TOKEN": "your-api-token-here"
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### 本地开发
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
# 安装依赖
|
|
100
|
+
npm install
|
|
101
|
+
|
|
102
|
+
# 构建
|
|
103
|
+
npm run build
|
|
104
|
+
|
|
105
|
+
# 运行
|
|
106
|
+
npm start
|
|
107
|
+
|
|
108
|
+
# 开发模式
|
|
109
|
+
npm run dev
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## 可用工具
|
|
113
|
+
|
|
114
|
+
### Team 工具
|
|
115
|
+
|
|
116
|
+
| 工具 | 描述 |
|
|
117
|
+
|------|------|
|
|
118
|
+
| `lingxi_list_teams` | 获取团队列表 |
|
|
119
|
+
| `lingxi_get_team` | 获取团队详情 |
|
|
120
|
+
| `lingxi_create_team` | 创建团队 |
|
|
121
|
+
| `lingxi_update_team` | 更新团队 |
|
|
122
|
+
| `lingxi_delete_team` | 删除团队 |
|
|
123
|
+
|
|
124
|
+
### Module 工具
|
|
125
|
+
|
|
126
|
+
| 工具 | 描述 |
|
|
127
|
+
|------|------|
|
|
128
|
+
| `lingxi_list_modules` | 获取项目模块列表 |
|
|
129
|
+
| `lingxi_get_module` | 获取模块详情 |
|
|
130
|
+
| `lingxi_create_module` | 创建模块 |
|
|
131
|
+
| `lingxi_update_module` | 更新模块 |
|
|
132
|
+
| `lingxi_delete_module` | 删除模块 |
|
|
133
|
+
|
|
134
|
+
### API 工具
|
|
135
|
+
|
|
136
|
+
| 工具 | 描述 |
|
|
137
|
+
|------|------|
|
|
138
|
+
| `lingxi_list_apis` | 获取模块 API 列表 |
|
|
139
|
+
| `lingxi_get_api` | 获取 API 详情 |
|
|
140
|
+
| `lingxi_create_api` | 创建 API |
|
|
141
|
+
| `lingxi_update_api` | 更新 API |
|
|
142
|
+
| `lingxi_delete_api` | 删除 API |
|
|
143
|
+
| `lingxi_update_api_status` | 更新 API 状态 |
|
|
144
|
+
|
|
145
|
+
### Model 工具
|
|
146
|
+
|
|
147
|
+
| 工具 | 描述 |
|
|
148
|
+
|------|------|
|
|
149
|
+
| `lingxi_list_models` | 获取模块 Model 列表 |
|
|
150
|
+
| `lingxi_get_model` | 获取 Model 详情 |
|
|
151
|
+
| `lingxi_create_model` | 创建 Model |
|
|
152
|
+
| `lingxi_update_model` | 更新 Model |
|
|
153
|
+
| `lingxi_delete_model` | 删除 Model |
|
|
154
|
+
|
|
155
|
+
### Document 工具
|
|
156
|
+
|
|
157
|
+
| 工具 | 描述 |
|
|
158
|
+
|------|------|
|
|
159
|
+
| `lingxi_list_documents` | 获取模块文档列表 |
|
|
160
|
+
| `lingxi_get_document` | 获取文档详情 |
|
|
161
|
+
| `lingxi_create_document` | 创建文档 |
|
|
162
|
+
| `lingxi_update_document` | 更新文档 |
|
|
163
|
+
| `lingxi_delete_document` | 删除文档 |
|
|
164
|
+
|
|
165
|
+
## 示例
|
|
166
|
+
|
|
167
|
+
在 Claude 中使用:
|
|
168
|
+
|
|
169
|
+
```
|
|
170
|
+
请帮我创建一个名为 "用户服务" 的团队
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
```
|
|
174
|
+
请列出 "用户服务" 团队中的所有模块
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
```
|
|
178
|
+
请创建一个新的 API,方法为 GET,路径为 /api/users
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
## 开发
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
# 类型检查
|
|
185
|
+
npx tsc --noEmit
|
|
186
|
+
|
|
187
|
+
# 构建
|
|
188
|
+
npm run build
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
## 许可证
|
|
192
|
+
|
|
193
|
+
MIT
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ApiConfig } from './types.js';
|
|
2
|
+
export declare class ApiClient {
|
|
3
|
+
private config;
|
|
4
|
+
constructor(config: ApiConfig);
|
|
5
|
+
private request;
|
|
6
|
+
get<T>(endpoint: string): Promise<T>;
|
|
7
|
+
post<T>(endpoint: string, data: unknown): Promise<T>;
|
|
8
|
+
put<T>(endpoint: string, data: unknown): Promise<T>;
|
|
9
|
+
delete<T>(endpoint: string): Promise<T>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,YAAY,CAAC;AAEzD,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAY;gBAEd,MAAM,EAAE,SAAS;YAIf,OAAO;IA6Bf,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAIpC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAOpD,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAOnD,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;CAG9C"}
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// API 客户端
|
|
2
|
+
export class ApiClient {
|
|
3
|
+
config;
|
|
4
|
+
constructor(config) {
|
|
5
|
+
this.config = config;
|
|
6
|
+
}
|
|
7
|
+
async request(endpoint, options = {}) {
|
|
8
|
+
const url = `${this.config.baseURL}${endpoint}`;
|
|
9
|
+
const response = await fetch(url, {
|
|
10
|
+
...options,
|
|
11
|
+
headers: {
|
|
12
|
+
'Content-Type': 'application/json',
|
|
13
|
+
'X-API-Token': this.config.apiToken,
|
|
14
|
+
...options.headers,
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
if (!response.ok) {
|
|
18
|
+
const error = await response.text();
|
|
19
|
+
throw new Error(`API request failed: ${response.status} ${error}`);
|
|
20
|
+
}
|
|
21
|
+
const result = await response.json();
|
|
22
|
+
if (result.code !== 0) {
|
|
23
|
+
throw new Error(`API error: ${result.message}`);
|
|
24
|
+
}
|
|
25
|
+
return result.data;
|
|
26
|
+
}
|
|
27
|
+
async get(endpoint) {
|
|
28
|
+
return this.request(endpoint, { method: 'GET' });
|
|
29
|
+
}
|
|
30
|
+
async post(endpoint, data) {
|
|
31
|
+
return this.request(endpoint, {
|
|
32
|
+
method: 'POST',
|
|
33
|
+
body: JSON.stringify(data),
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
async put(endpoint, data) {
|
|
37
|
+
return this.request(endpoint, {
|
|
38
|
+
method: 'PUT',
|
|
39
|
+
body: JSON.stringify(data),
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
async delete(endpoint) {
|
|
43
|
+
return this.request(endpoint, { method: 'DELETE' });
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,UAAU;AAIV,MAAM,OAAO,SAAS;IACZ,MAAM,CAAY;IAE1B,YAAY,MAAiB;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEO,KAAK,CAAC,OAAO,CACnB,QAAgB,EAChB,UAAuB,EAAE;QAEzB,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,QAAQ,EAAE,CAAC;QAEhD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,GAAG,OAAO;YACV,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;gBACnC,GAAG,OAAO,CAAC,OAAO;aACnB;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,MAAM,GAAmB,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAErD,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,cAAc,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,GAAG,CAAI,QAAgB;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAI,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,IAAI,CAAI,QAAgB,EAAE,IAAa;QAC3C,OAAO,IAAI,CAAC,OAAO,CAAI,QAAQ,EAAE;YAC/B,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,GAAG,CAAI,QAAgB,EAAE,IAAa;QAC1C,OAAO,IAAI,CAAC,OAAO,CAAI,QAAQ,EAAE;YAC/B,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAI,QAAgB;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAI,QAAQ,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACzD,CAAC;CACF"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;GAIG"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Lingxi MCP Server
|
|
4
|
+
*
|
|
5
|
+
* Model Context Protocol server for Lingxi API Management Platform
|
|
6
|
+
*/
|
|
7
|
+
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
8
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
9
|
+
import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
10
|
+
import { ApiClient } from './client.js';
|
|
11
|
+
import { registerTeamTools } from './tools/team.js';
|
|
12
|
+
import { registerModuleTools } from './tools/module.js';
|
|
13
|
+
import { registerApiTools } from './tools/api.js';
|
|
14
|
+
import { registerModelTools } from './tools/model.js';
|
|
15
|
+
import { registerDocumentTools } from './tools/document.js';
|
|
16
|
+
import { registerProjectTools } from './tools/project.js';
|
|
17
|
+
// 获取配置
|
|
18
|
+
const API_BASE_URL = process.env.LINGXI_API_BASE_URL || 'https://lingxiapi.8jinkeji.com';
|
|
19
|
+
const API_TOKEN = process.env.LINGXI_API_TOKEN || '';
|
|
20
|
+
if (!API_TOKEN) {
|
|
21
|
+
console.error('Error: LINGXI_API_TOKEN environment variable is required');
|
|
22
|
+
process.exit(1);
|
|
23
|
+
}
|
|
24
|
+
// 创建 API 客户端
|
|
25
|
+
const client = new ApiClient({
|
|
26
|
+
baseURL: API_BASE_URL,
|
|
27
|
+
apiToken: API_TOKEN,
|
|
28
|
+
});
|
|
29
|
+
// 创建 MCP Server
|
|
30
|
+
const server = new Server({
|
|
31
|
+
name: 'lingxi-mcp-server',
|
|
32
|
+
version: '1.0.0',
|
|
33
|
+
}, {
|
|
34
|
+
capabilities: {
|
|
35
|
+
tools: {},
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
// 注册所有工具
|
|
39
|
+
const tools = [
|
|
40
|
+
...registerTeamTools(client),
|
|
41
|
+
...registerModuleTools(client),
|
|
42
|
+
...registerApiTools(client),
|
|
43
|
+
...registerModelTools(client),
|
|
44
|
+
...registerDocumentTools(client),
|
|
45
|
+
...registerProjectTools(client),
|
|
46
|
+
];
|
|
47
|
+
// 处理 list_tools 请求
|
|
48
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
49
|
+
return {
|
|
50
|
+
tools: tools.map((tool) => ({
|
|
51
|
+
name: tool.name,
|
|
52
|
+
description: tool.description,
|
|
53
|
+
inputSchema: tool.inputSchema,
|
|
54
|
+
})),
|
|
55
|
+
};
|
|
56
|
+
});
|
|
57
|
+
// 处理 call_tool 请求
|
|
58
|
+
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
59
|
+
const { name, arguments: args } = request.params;
|
|
60
|
+
const tool = tools.find((t) => t.name === name);
|
|
61
|
+
if (!tool) {
|
|
62
|
+
throw new Error(`Tool not found: ${name}`);
|
|
63
|
+
}
|
|
64
|
+
try {
|
|
65
|
+
const result = await tool.handler(args);
|
|
66
|
+
return {
|
|
67
|
+
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
72
|
+
return {
|
|
73
|
+
content: [{ type: 'text', text: JSON.stringify({ error: errorMessage }, null, 2) }],
|
|
74
|
+
isError: true,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
// 启动服务器
|
|
79
|
+
async function main() {
|
|
80
|
+
const transport = new StdioServerTransport();
|
|
81
|
+
await server.connect(transport);
|
|
82
|
+
console.error('Lingxi MCP Server running on stdio');
|
|
83
|
+
}
|
|
84
|
+
main().catch((error) => {
|
|
85
|
+
console.error('Fatal error:', error);
|
|
86
|
+
process.exit(1);
|
|
87
|
+
});
|
|
88
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { LingxiConfig, Team, Project, Module, API } from './types.js';
|
|
2
|
+
interface Logger {
|
|
3
|
+
info: (msg: string, ...args: unknown[]) => void;
|
|
4
|
+
error: (msg: string, ...args: unknown[]) => void;
|
|
5
|
+
debug: (msg: string, ...args: unknown[]) => void;
|
|
6
|
+
}
|
|
7
|
+
export interface LingxiClientConfig extends LingxiConfig {
|
|
8
|
+
log?: Logger;
|
|
9
|
+
}
|
|
10
|
+
export declare class LingxiClient {
|
|
11
|
+
private config;
|
|
12
|
+
constructor(config: LingxiClientConfig);
|
|
13
|
+
private get log();
|
|
14
|
+
private getHeaders;
|
|
15
|
+
private request;
|
|
16
|
+
getTeams(): Promise<Team[]>;
|
|
17
|
+
getProjects(teamId?: string): Promise<Project[]>;
|
|
18
|
+
getProject(projectId: string): Promise<Project>;
|
|
19
|
+
getModules(projectId: string): Promise<Module[]>;
|
|
20
|
+
getAPIs(moduleId: string): Promise<API[]>;
|
|
21
|
+
getAPI(apiId: string): Promise<API>;
|
|
22
|
+
getAPISchema(apiId: string): Promise<{
|
|
23
|
+
request: {
|
|
24
|
+
pathParams?: Record<string, unknown>;
|
|
25
|
+
queryParams?: Record<string, unknown>;
|
|
26
|
+
headers?: Record<string, unknown>;
|
|
27
|
+
body?: Record<string, unknown>;
|
|
28
|
+
};
|
|
29
|
+
response: {
|
|
30
|
+
body?: Record<string, unknown>;
|
|
31
|
+
};
|
|
32
|
+
}>;
|
|
33
|
+
callAPI(apiId: string, params?: {
|
|
34
|
+
pathParams?: Record<string, string>;
|
|
35
|
+
queryParams?: Record<string, string>;
|
|
36
|
+
headers?: Record<string, string>;
|
|
37
|
+
body?: unknown;
|
|
38
|
+
}): Promise<{
|
|
39
|
+
status: number;
|
|
40
|
+
statusText: string;
|
|
41
|
+
headers: Record<string, string>;
|
|
42
|
+
body: string;
|
|
43
|
+
size: string;
|
|
44
|
+
time: number;
|
|
45
|
+
}>;
|
|
46
|
+
exportOpenAPI(projectId: string, moduleId?: string): Promise<object>;
|
|
47
|
+
private buildParamSchema;
|
|
48
|
+
private buildBodySchema;
|
|
49
|
+
private buildItemsSchema;
|
|
50
|
+
private buildFieldsSchema;
|
|
51
|
+
private mapTypeToJSONSchemaType;
|
|
52
|
+
private buildFullUrl;
|
|
53
|
+
private formatSize;
|
|
54
|
+
private buildOpenAPIParameters;
|
|
55
|
+
private buildOpenAPIRequestBody;
|
|
56
|
+
private buildOpenAPIResponseContent;
|
|
57
|
+
}
|
|
58
|
+
export {};
|
|
59
|
+
//# sourceMappingURL=lingxi-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lingxi-client.d.ts","sourceRoot":"","sources":["../src/lingxi-client.ts"],"names":[],"mappings":"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"}
|