@lobehub/market-sdk 0.0.9 → 0.0.11
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/index.d.mts +107 -71
- package/dist/index.mjs +227 -143
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -273,12 +273,64 @@ declare class BaseSDK {
|
|
|
273
273
|
}
|
|
274
274
|
|
|
275
275
|
/**
|
|
276
|
-
*
|
|
277
|
-
*
|
|
276
|
+
* 插件服务
|
|
277
|
+
* 处理插件相关功能
|
|
278
278
|
*/
|
|
279
|
-
declare class
|
|
279
|
+
declare class PluginsService extends BaseSDK {
|
|
280
280
|
/**
|
|
281
|
-
*
|
|
281
|
+
* 创建插件服务实例
|
|
282
|
+
* @param options SDK 配置选项
|
|
283
|
+
* @param sharedHeaders 共享的 headers 对象(可选)
|
|
284
|
+
*/
|
|
285
|
+
constructor(options?: MarketSDKOptions, sharedHeaders?: Record<string, string>);
|
|
286
|
+
/**
|
|
287
|
+
* 获取插件列表
|
|
288
|
+
* @param params 查询参数
|
|
289
|
+
* @returns 插件列表响应
|
|
290
|
+
*/
|
|
291
|
+
getPluginList(params?: PluginQueryParams): Promise<PluginListResponse>;
|
|
292
|
+
/**
|
|
293
|
+
* 获取插件清单
|
|
294
|
+
* @param identifier 插件标识符
|
|
295
|
+
* @param locale 语言
|
|
296
|
+
* @param version 版本
|
|
297
|
+
* @returns 插件清单
|
|
298
|
+
*/
|
|
299
|
+
getPluginManifest(identifier: string, locale?: string, version?: string): Promise<PluginManifest>;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* LobeHub Market SDK Client
|
|
304
|
+
* 采用组合模式组合各个领域服务
|
|
305
|
+
*/
|
|
306
|
+
declare class MarketSDK extends BaseSDK {
|
|
307
|
+
/**
|
|
308
|
+
* 插件服务
|
|
309
|
+
*/
|
|
310
|
+
readonly plugins: PluginsService;
|
|
311
|
+
/**
|
|
312
|
+
* 发现服务
|
|
313
|
+
*/
|
|
314
|
+
private readonly discovery;
|
|
315
|
+
/**
|
|
316
|
+
* Create MarketSDK instance
|
|
317
|
+
* @param options SDK configuration options
|
|
318
|
+
*/
|
|
319
|
+
constructor(options?: MarketSDKOptions);
|
|
320
|
+
/**
|
|
321
|
+
* Get market service discovery document
|
|
322
|
+
* @returns Service discovery document
|
|
323
|
+
*/
|
|
324
|
+
getDiscoveryDocument(): Promise<DiscoveryDocument>;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
/**
|
|
328
|
+
* 插件管理服务
|
|
329
|
+
* 处理插件相关的管理功能
|
|
330
|
+
*/
|
|
331
|
+
declare class PluginAdminService extends BaseSDK {
|
|
332
|
+
/**
|
|
333
|
+
* 创建插件管理服务实例
|
|
282
334
|
* @param options SDK 配置选项
|
|
283
335
|
* @param sharedHeaders 共享的 headers 对象(可选)
|
|
284
336
|
*/
|
|
@@ -294,22 +346,17 @@ declare class AdminService extends BaseSDK {
|
|
|
294
346
|
failed: number;
|
|
295
347
|
}>;
|
|
296
348
|
/**
|
|
297
|
-
*
|
|
298
|
-
* @param params
|
|
349
|
+
* 获取插件列表
|
|
350
|
+
* @param params 查询参数
|
|
299
351
|
* @returns 插件列表响应
|
|
300
352
|
*/
|
|
301
353
|
getPlugins(params?: AdminPluginParams): Promise<{
|
|
302
354
|
data: Plugin[];
|
|
303
|
-
meta: {
|
|
304
|
-
total: number;
|
|
305
|
-
limit: number;
|
|
306
|
-
offset: number;
|
|
307
|
-
};
|
|
308
355
|
}>;
|
|
309
356
|
/**
|
|
310
|
-
*
|
|
357
|
+
* 获取单个插件
|
|
311
358
|
* @param id 插件 ID
|
|
312
|
-
* @returns
|
|
359
|
+
* @returns 插件详情
|
|
313
360
|
*/
|
|
314
361
|
getPlugin(id: number): Promise<{
|
|
315
362
|
data: Plugin & {
|
|
@@ -403,88 +450,77 @@ declare class AdminService extends BaseSDK {
|
|
|
403
450
|
}
|
|
404
451
|
|
|
405
452
|
/**
|
|
406
|
-
*
|
|
407
|
-
*
|
|
453
|
+
* 系统依赖管理服务
|
|
454
|
+
* 处理插件系统依赖相关的管理功能
|
|
408
455
|
*/
|
|
409
|
-
declare class
|
|
456
|
+
declare class SystemDependencyService extends BaseSDK {
|
|
410
457
|
/**
|
|
411
|
-
*
|
|
458
|
+
* 创建系统依赖管理服务实例
|
|
412
459
|
* @param options SDK 配置选项
|
|
413
460
|
* @param sharedHeaders 共享的 headers 对象(可选)
|
|
414
461
|
*/
|
|
415
462
|
constructor(options?: MarketSDKOptions, sharedHeaders?: Record<string, string>);
|
|
416
463
|
/**
|
|
417
|
-
*
|
|
418
|
-
* @
|
|
419
|
-
* @returns 插件列表响应
|
|
464
|
+
* 获取所有系统依赖项
|
|
465
|
+
* @returns 系统依赖项列表
|
|
420
466
|
*/
|
|
421
|
-
|
|
467
|
+
getSystemDependencies(): Promise<{
|
|
468
|
+
data: SystemDependency[];
|
|
469
|
+
}>;
|
|
422
470
|
/**
|
|
423
|
-
*
|
|
424
|
-
* @param
|
|
425
|
-
* @
|
|
426
|
-
* @param version 版本
|
|
427
|
-
* @returns 插件清单
|
|
471
|
+
* 获取特定系统依赖项
|
|
472
|
+
* @param id 依赖项 ID
|
|
473
|
+
* @returns 系统依赖项
|
|
428
474
|
*/
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
/**
|
|
433
|
-
* 发现服务
|
|
434
|
-
* 处理服务发现功能
|
|
435
|
-
*/
|
|
436
|
-
declare class DiscoveryService extends BaseSDK {
|
|
437
|
-
private discoveryDoc?;
|
|
475
|
+
getSystemDependency(id: number): Promise<{
|
|
476
|
+
data: SystemDependency;
|
|
477
|
+
}>;
|
|
438
478
|
/**
|
|
439
|
-
*
|
|
440
|
-
* @param
|
|
441
|
-
* @
|
|
479
|
+
* 创建系统依赖项
|
|
480
|
+
* @param data 依赖项创建数据
|
|
481
|
+
* @returns 创建的依赖项
|
|
442
482
|
*/
|
|
443
|
-
|
|
483
|
+
createSystemDependency(data: Omit<SystemDependency, 'id'>): Promise<{
|
|
484
|
+
data: SystemDependency;
|
|
485
|
+
}>;
|
|
444
486
|
/**
|
|
445
|
-
*
|
|
446
|
-
* @
|
|
487
|
+
* 更新系统依赖项
|
|
488
|
+
* @param id 依赖项 ID
|
|
489
|
+
* @param data 依赖项更新数据
|
|
490
|
+
* @returns 更新后的依赖项
|
|
447
491
|
*/
|
|
448
|
-
|
|
492
|
+
updateSystemDependency(id: number, data: Partial<SystemDependency>): Promise<{
|
|
493
|
+
data: SystemDependency;
|
|
494
|
+
}>;
|
|
495
|
+
/**
|
|
496
|
+
* 删除系统依赖项
|
|
497
|
+
* @param id 依赖项 ID
|
|
498
|
+
* @returns 成功响应
|
|
499
|
+
*/
|
|
500
|
+
deleteSystemDependency(id: number): Promise<{
|
|
501
|
+
success: boolean;
|
|
502
|
+
message: string;
|
|
503
|
+
}>;
|
|
449
504
|
}
|
|
450
505
|
|
|
451
506
|
/**
|
|
452
|
-
* LobeHub
|
|
453
|
-
*
|
|
507
|
+
* LobeHub 市场管理 SDK 客户端
|
|
508
|
+
* 专门用于管理市场的管理功能
|
|
454
509
|
*/
|
|
455
|
-
declare class
|
|
510
|
+
declare class MarketAdmin extends BaseSDK {
|
|
456
511
|
/**
|
|
457
|
-
*
|
|
512
|
+
* 插件管理服务
|
|
458
513
|
*/
|
|
459
|
-
readonly plugins:
|
|
514
|
+
readonly plugins: PluginAdminService;
|
|
460
515
|
/**
|
|
461
|
-
*
|
|
516
|
+
* 系统依赖管理服务
|
|
462
517
|
*/
|
|
463
|
-
readonly
|
|
518
|
+
readonly dependencies: SystemDependencyService;
|
|
464
519
|
/**
|
|
465
|
-
*
|
|
466
|
-
|
|
467
|
-
private readonly discovery;
|
|
468
|
-
/**
|
|
469
|
-
* Create MarketSDK instance
|
|
470
|
-
* @param options SDK configuration options
|
|
520
|
+
* 创建 MarketAdmin 实例
|
|
521
|
+
* @param options SDK 配置选项
|
|
471
522
|
*/
|
|
472
523
|
constructor(options?: MarketSDKOptions);
|
|
473
|
-
/**
|
|
474
|
-
* Get market service discovery document
|
|
475
|
-
* @returns Service discovery document
|
|
476
|
-
*/
|
|
477
|
-
getDiscoveryDocument(): Promise<DiscoveryDocument>;
|
|
478
|
-
/**
|
|
479
|
-
* Import plugin manifests (requires admin privileges)
|
|
480
|
-
* @param manifests Plugin manifest array
|
|
481
|
-
* @param ownerId Owner ID
|
|
482
|
-
* @returns Import result
|
|
483
|
-
*/
|
|
484
|
-
importManifests(manifests: PluginManifest[], ownerId?: number): Promise<{
|
|
485
|
-
success: number;
|
|
486
|
-
failed: number;
|
|
487
|
-
}>;
|
|
488
524
|
}
|
|
489
525
|
|
|
490
|
-
export { type AdminPluginParams,
|
|
526
|
+
export { type AdminPluginParams, type ConnectionConfig, type ConnectionType, ConnectionTypeEnum, type DeploymentOption, type DiscoveryDocument, type InstallationDetails, type InstallationMethod, InstallationMethodEnum, MarketAdmin, MarketSDK, type MarketSDKOptions, type Plugin, type PluginCompatibility, type PluginItem, type PluginListResponse, type PluginManifest, type PluginPrompt, type PluginQueryParams, type PluginResource, type PluginTool, type PluginType, PluginTypeEnum, type PluginUpdateParams, type PluginVersion, type PluginVersionCreateParams, type PluginVersionUpdateParams, type PromptArgument, type SystemDependency };
|
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
// src/market-sdk.ts
|
|
2
|
-
import
|
|
1
|
+
// src/market/market-sdk.ts
|
|
2
|
+
import debug4 from "debug";
|
|
3
3
|
|
|
4
4
|
// src/core/BaseSDK.ts
|
|
5
5
|
import debug from "debug";
|
|
@@ -12,18 +12,18 @@ var BaseSDK = class {
|
|
|
12
12
|
*/
|
|
13
13
|
constructor(options = {}, sharedHeaders) {
|
|
14
14
|
this.baseUrl = options.baseUrl || "https://market.lobehub.com/api";
|
|
15
|
-
this.defaultLocale = options.defaultLocale || "
|
|
15
|
+
this.defaultLocale = options.defaultLocale || "en-US";
|
|
16
16
|
if (sharedHeaders) {
|
|
17
17
|
this.headers = sharedHeaders;
|
|
18
|
-
log("
|
|
18
|
+
log("Using shared headers object");
|
|
19
19
|
} else {
|
|
20
20
|
this.headers = {
|
|
21
21
|
"Content-Type": "application/json",
|
|
22
22
|
...options.apiKey ? { Authorization: `Bearer ${options.apiKey}` } : {}
|
|
23
23
|
};
|
|
24
|
-
log("
|
|
24
|
+
log("Created new headers object");
|
|
25
25
|
}
|
|
26
|
-
log("BaseSDK
|
|
26
|
+
log("BaseSDK instance created: %O", {
|
|
27
27
|
baseUrl: this.baseUrl,
|
|
28
28
|
defaultLocale: this.defaultLocale
|
|
29
29
|
});
|
|
@@ -35,7 +35,7 @@ var BaseSDK = class {
|
|
|
35
35
|
* @returns 响应数据
|
|
36
36
|
*/
|
|
37
37
|
async request(url, options = {}) {
|
|
38
|
-
log("
|
|
38
|
+
log("Sending request: %s", `${this.baseUrl}${url}`);
|
|
39
39
|
const response = await fetch(`${this.baseUrl}${url}`, {
|
|
40
40
|
...options,
|
|
41
41
|
headers: {
|
|
@@ -44,11 +44,11 @@ var BaseSDK = class {
|
|
|
44
44
|
}
|
|
45
45
|
});
|
|
46
46
|
if (!response.ok) {
|
|
47
|
-
const errorMsg =
|
|
48
|
-
log("
|
|
47
|
+
const errorMsg = `Request failed: ${response.status} ${response.statusText}`;
|
|
48
|
+
log("Request error: %s", errorMsg);
|
|
49
49
|
throw new Error(errorMsg);
|
|
50
50
|
}
|
|
51
|
-
log("
|
|
51
|
+
log("Request successful: %s", url);
|
|
52
52
|
return response.json();
|
|
53
53
|
}
|
|
54
54
|
/**
|
|
@@ -65,30 +65,134 @@ var BaseSDK = class {
|
|
|
65
65
|
* @param token 认证令牌
|
|
66
66
|
*/
|
|
67
67
|
setAuthToken(token) {
|
|
68
|
-
log("
|
|
68
|
+
log("Setting authentication token");
|
|
69
69
|
this.headers.Authorization = `Bearer ${token}`;
|
|
70
70
|
}
|
|
71
71
|
/**
|
|
72
72
|
* 清除认证令牌
|
|
73
73
|
*/
|
|
74
74
|
clearAuthToken() {
|
|
75
|
-
log("
|
|
75
|
+
log("Clearing authentication token");
|
|
76
76
|
delete this.headers.Authorization;
|
|
77
77
|
}
|
|
78
78
|
};
|
|
79
79
|
|
|
80
|
-
// src/services/
|
|
80
|
+
// src/market/services/PluginsService.ts
|
|
81
81
|
import debug2 from "debug";
|
|
82
|
-
var log2 = debug2("lobe-market-sdk:
|
|
83
|
-
var
|
|
82
|
+
var log2 = debug2("lobe-market-sdk:plugins");
|
|
83
|
+
var PluginsService = class extends BaseSDK {
|
|
84
|
+
/**
|
|
85
|
+
* 创建插件服务实例
|
|
86
|
+
* @param options SDK 配置选项
|
|
87
|
+
* @param sharedHeaders 共享的 headers 对象(可选)
|
|
88
|
+
*/
|
|
89
|
+
constructor(options = {}, sharedHeaders) {
|
|
90
|
+
super(options, sharedHeaders);
|
|
91
|
+
log2("PluginsService instance created");
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* 获取插件列表
|
|
95
|
+
* @param params 查询参数
|
|
96
|
+
* @returns 插件列表响应
|
|
97
|
+
*/
|
|
98
|
+
async getPluginList(params = {}) {
|
|
99
|
+
const locale = params.locale || this.defaultLocale;
|
|
100
|
+
const queryParams = { ...params, locale };
|
|
101
|
+
const queryString = this.buildQueryString(queryParams);
|
|
102
|
+
log2("Getting plugin list: %O", queryParams);
|
|
103
|
+
const result = await this.request(`/v1/plugins${queryString}`);
|
|
104
|
+
log2("Retrieved %d plugins", result.items.length);
|
|
105
|
+
return result;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* 获取插件清单
|
|
109
|
+
* @param identifier 插件标识符
|
|
110
|
+
* @param locale 语言
|
|
111
|
+
* @param version 版本
|
|
112
|
+
* @returns 插件清单
|
|
113
|
+
*/
|
|
114
|
+
async getPluginManifest(identifier, locale, version) {
|
|
115
|
+
log2("Getting plugin manifest: %O", { identifier, version, locale });
|
|
116
|
+
const localeParam = locale || this.defaultLocale;
|
|
117
|
+
const params = { locale: localeParam };
|
|
118
|
+
if (version) {
|
|
119
|
+
params.version = version;
|
|
120
|
+
}
|
|
121
|
+
const queryString = this.buildQueryString(params);
|
|
122
|
+
const manifest = await this.request(
|
|
123
|
+
`/v1/plugins/${identifier}/manifest${queryString}`
|
|
124
|
+
);
|
|
125
|
+
log2("Plugin manifest successfully retrieved: %s", identifier);
|
|
126
|
+
return manifest;
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
// src/market/services/DiscoveryService.ts
|
|
131
|
+
import debug3 from "debug";
|
|
132
|
+
var log3 = debug3("lobe-market-sdk:discovery");
|
|
133
|
+
var DiscoveryService = class extends BaseSDK {
|
|
84
134
|
/**
|
|
85
|
-
*
|
|
135
|
+
* 创建发现服务实例
|
|
86
136
|
* @param options SDK 配置选项
|
|
87
137
|
* @param sharedHeaders 共享的 headers 对象(可选)
|
|
88
138
|
*/
|
|
89
139
|
constructor(options = {}, sharedHeaders) {
|
|
90
140
|
super(options, sharedHeaders);
|
|
91
|
-
|
|
141
|
+
log3("DiscoveryService instance created");
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* 获取市场服务发现文档
|
|
145
|
+
* @returns 服务发现文档
|
|
146
|
+
*/
|
|
147
|
+
async getDiscoveryDocument() {
|
|
148
|
+
log3("Fetching discovery document");
|
|
149
|
+
if (this.discoveryDoc) {
|
|
150
|
+
log3("Returning cached discovery document");
|
|
151
|
+
return this.discoveryDoc;
|
|
152
|
+
}
|
|
153
|
+
this.discoveryDoc = await this.request("/market/.well-known/discovery");
|
|
154
|
+
log3("Discovery document successfully fetched");
|
|
155
|
+
return this.discoveryDoc;
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
// src/market/market-sdk.ts
|
|
160
|
+
var log4 = debug4("lobe-market-sdk");
|
|
161
|
+
var MarketSDK = class extends BaseSDK {
|
|
162
|
+
/**
|
|
163
|
+
* Create MarketSDK instance
|
|
164
|
+
* @param options SDK configuration options
|
|
165
|
+
*/
|
|
166
|
+
constructor(options = {}) {
|
|
167
|
+
super(options);
|
|
168
|
+
log4("MarketSDK instance created");
|
|
169
|
+
this.plugins = new PluginsService(options, this.headers);
|
|
170
|
+
this.discovery = new DiscoveryService(options, this.headers);
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Get market service discovery document
|
|
174
|
+
* @returns Service discovery document
|
|
175
|
+
*/
|
|
176
|
+
async getDiscoveryDocument() {
|
|
177
|
+
return this.discovery.getDiscoveryDocument();
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
|
|
181
|
+
// src/admin/MarketAdmin.ts
|
|
182
|
+
import debug7 from "debug";
|
|
183
|
+
|
|
184
|
+
// src/admin/services/PluginAdminService.ts
|
|
185
|
+
import debug5 from "debug";
|
|
186
|
+
var log5 = debug5("lobe-market-sdk:admin:plugin");
|
|
187
|
+
var PluginAdminService = class extends BaseSDK {
|
|
188
|
+
/**
|
|
189
|
+
* 创建插件管理服务实例
|
|
190
|
+
* @param options SDK 配置选项
|
|
191
|
+
* @param sharedHeaders 共享的 headers 对象(可选)
|
|
192
|
+
*/
|
|
193
|
+
constructor(options = {}, sharedHeaders) {
|
|
194
|
+
super(options, sharedHeaders);
|
|
195
|
+
log5("PluginAdminService instance created");
|
|
92
196
|
}
|
|
93
197
|
/**
|
|
94
198
|
* 导入插件清单(需要管理员权限)
|
|
@@ -97,9 +201,9 @@ var AdminService = class extends BaseSDK {
|
|
|
97
201
|
* @returns 导入结果
|
|
98
202
|
*/
|
|
99
203
|
async importManifests(manifests, ownerId) {
|
|
100
|
-
|
|
204
|
+
log5(`\u5F00\u59CB\u6279\u91CF\u5BFC\u5165 ${manifests.length} \u4E2A\u6E05\u5355`);
|
|
101
205
|
if (ownerId) {
|
|
102
|
-
|
|
206
|
+
log5(`\u4F7F\u7528\u6307\u5B9A\u7684\u6240\u6709\u8005 ID: ${ownerId}`);
|
|
103
207
|
}
|
|
104
208
|
const response = await this.request(
|
|
105
209
|
"/admin/plugins/import",
|
|
@@ -111,36 +215,33 @@ var AdminService = class extends BaseSDK {
|
|
|
111
215
|
})
|
|
112
216
|
}
|
|
113
217
|
);
|
|
114
|
-
|
|
115
|
-
`\u6279\u91CF\u5BFC\u5165\u5B8C\u6210: ${response.data.success} \u4E2A\u6210\u529F, ${response.data.failed} \u4E2A\u5931\u8D25`
|
|
116
|
-
);
|
|
218
|
+
log5(`\u6279\u91CF\u5BFC\u5165\u5B8C\u6210: ${response.data.success} \u4E2A\u6210\u529F, ${response.data.failed} \u4E2A\u5931\u8D25`);
|
|
117
219
|
return response.data;
|
|
118
220
|
}
|
|
119
221
|
/**
|
|
120
|
-
*
|
|
121
|
-
* @param params
|
|
222
|
+
* 获取插件列表
|
|
223
|
+
* @param params 查询参数
|
|
122
224
|
* @returns 插件列表响应
|
|
123
225
|
*/
|
|
124
226
|
async getPlugins(params = {}) {
|
|
125
|
-
|
|
227
|
+
log5("Getting plugins with params: %O", params);
|
|
126
228
|
const queryString = this.buildQueryString(params);
|
|
127
|
-
const
|
|
128
|
-
|
|
129
|
-
);
|
|
130
|
-
log2("\u5DF2\u83B7\u53D6 %d \u4E2A\u63D2\u4EF6", result.data.length);
|
|
229
|
+
const url = `/admin/plugins${queryString ? `?${queryString}` : ""}`;
|
|
230
|
+
const result = await this.request(url);
|
|
231
|
+
log5("Retrieved %d plugins", result.data.length);
|
|
131
232
|
return result;
|
|
132
233
|
}
|
|
133
234
|
/**
|
|
134
|
-
*
|
|
235
|
+
* 获取单个插件
|
|
135
236
|
* @param id 插件 ID
|
|
136
|
-
* @returns
|
|
237
|
+
* @returns 插件详情
|
|
137
238
|
*/
|
|
138
239
|
async getPlugin(id) {
|
|
139
|
-
|
|
240
|
+
log5("\u83B7\u53D6\u63D2\u4EF6\u8BE6\u60C5\uFF08\u7BA1\u7406\u5458\uFF09: %d", id);
|
|
140
241
|
const result = await this.request(
|
|
141
242
|
`/admin/plugins/${id}`
|
|
142
243
|
);
|
|
143
|
-
|
|
244
|
+
log5("\u5DF2\u83B7\u53D6\u63D2\u4EF6\uFF08\u5171 %d \u4E2A\u7248\u672C\uFF09", result.data.versions.length);
|
|
144
245
|
return result;
|
|
145
246
|
}
|
|
146
247
|
/**
|
|
@@ -150,15 +251,12 @@ var AdminService = class extends BaseSDK {
|
|
|
150
251
|
* @returns 更新后的插件
|
|
151
252
|
*/
|
|
152
253
|
async updatePlugin(id, data) {
|
|
153
|
-
|
|
154
|
-
const result = await this.request(
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
}
|
|
160
|
-
);
|
|
161
|
-
log2("\u63D2\u4EF6\u66F4\u65B0\u6210\u529F");
|
|
254
|
+
log5("\u66F4\u65B0\u63D2\u4EF6: %d\uFF0C\u6570\u636E: %O", id, data);
|
|
255
|
+
const result = await this.request(`/admin/plugins/${id}`, {
|
|
256
|
+
method: "PUT",
|
|
257
|
+
body: JSON.stringify(data)
|
|
258
|
+
});
|
|
259
|
+
log5("\u63D2\u4EF6\u66F4\u65B0\u6210\u529F");
|
|
162
260
|
return result;
|
|
163
261
|
}
|
|
164
262
|
/**
|
|
@@ -168,7 +266,7 @@ var AdminService = class extends BaseSDK {
|
|
|
168
266
|
* @returns 成功响应
|
|
169
267
|
*/
|
|
170
268
|
async updatePluginStatus(id, status) {
|
|
171
|
-
|
|
269
|
+
log5("\u66F4\u65B0\u63D2\u4EF6\u72B6\u6001: %d \u4E3A %s", id, status);
|
|
172
270
|
const result = await this.request(
|
|
173
271
|
`/admin/plugins/${id}/status`,
|
|
174
272
|
{
|
|
@@ -176,7 +274,7 @@ var AdminService = class extends BaseSDK {
|
|
|
176
274
|
body: JSON.stringify({ status })
|
|
177
275
|
}
|
|
178
276
|
);
|
|
179
|
-
|
|
277
|
+
log5("\u63D2\u4EF6\u72B6\u6001\u66F4\u65B0\u6210\u529F");
|
|
180
278
|
return result;
|
|
181
279
|
}
|
|
182
280
|
/**
|
|
@@ -185,12 +283,12 @@ var AdminService = class extends BaseSDK {
|
|
|
185
283
|
* @returns 成功响应
|
|
186
284
|
*/
|
|
187
285
|
async deletePlugin(id) {
|
|
188
|
-
|
|
286
|
+
log5("\u5220\u9664\u63D2\u4EF6: %d", id);
|
|
189
287
|
const result = await this.request(
|
|
190
288
|
`/admin/plugins/${id}`,
|
|
191
289
|
{ method: "DELETE" }
|
|
192
290
|
);
|
|
193
|
-
|
|
291
|
+
log5("\u63D2\u4EF6\u5220\u9664\u6210\u529F");
|
|
194
292
|
return result;
|
|
195
293
|
}
|
|
196
294
|
/**
|
|
@@ -199,11 +297,11 @@ var AdminService = class extends BaseSDK {
|
|
|
199
297
|
* @returns 插件版本列表
|
|
200
298
|
*/
|
|
201
299
|
async getPluginVersions(pluginId) {
|
|
202
|
-
|
|
300
|
+
log5("Getting plugin versions: pluginId=%d", pluginId);
|
|
203
301
|
const result = await this.request(
|
|
204
302
|
`/admin/plugins/${pluginId}/versions`
|
|
205
303
|
);
|
|
206
|
-
|
|
304
|
+
log5("Retrieved %d versions", result.data.length);
|
|
207
305
|
return result;
|
|
208
306
|
}
|
|
209
307
|
/**
|
|
@@ -213,11 +311,11 @@ var AdminService = class extends BaseSDK {
|
|
|
213
311
|
* @returns 插件版本
|
|
214
312
|
*/
|
|
215
313
|
async getPluginVersion(pluginId, versionId) {
|
|
216
|
-
|
|
314
|
+
log5("Getting version details: pluginId=%d, versionId=%d", pluginId, versionId);
|
|
217
315
|
const result = await this.request(
|
|
218
316
|
`/admin/plugins/${pluginId}/versions/${versionId}`
|
|
219
317
|
);
|
|
220
|
-
|
|
318
|
+
log5("Version details retrieved");
|
|
221
319
|
return result;
|
|
222
320
|
}
|
|
223
321
|
/**
|
|
@@ -227,7 +325,7 @@ var AdminService = class extends BaseSDK {
|
|
|
227
325
|
* @returns 创建的版本
|
|
228
326
|
*/
|
|
229
327
|
async createPluginVersion(pluginId, data) {
|
|
230
|
-
|
|
328
|
+
log5("Creating new version: pluginId=%d", pluginId);
|
|
231
329
|
const result = await this.request(
|
|
232
330
|
`/admin/plugins/${pluginId}/versions`,
|
|
233
331
|
{
|
|
@@ -235,7 +333,7 @@ var AdminService = class extends BaseSDK {
|
|
|
235
333
|
body: JSON.stringify(data)
|
|
236
334
|
}
|
|
237
335
|
);
|
|
238
|
-
|
|
336
|
+
log5("Plugin version created successfully");
|
|
239
337
|
return result;
|
|
240
338
|
}
|
|
241
339
|
/**
|
|
@@ -246,7 +344,7 @@ var AdminService = class extends BaseSDK {
|
|
|
246
344
|
* @returns 更新后的版本
|
|
247
345
|
*/
|
|
248
346
|
async updatePluginVersion(pluginId, versionId, data) {
|
|
249
|
-
|
|
347
|
+
log5("Updating version: pluginId=%d, versionId=%d", pluginId, versionId);
|
|
250
348
|
const result = await this.request(
|
|
251
349
|
`/admin/plugins/${pluginId}/versions/${versionId}`,
|
|
252
350
|
{
|
|
@@ -254,7 +352,7 @@ var AdminService = class extends BaseSDK {
|
|
|
254
352
|
body: JSON.stringify(data)
|
|
255
353
|
}
|
|
256
354
|
);
|
|
257
|
-
|
|
355
|
+
log5("\u63D2\u4EF6\u7248\u672C\u66F4\u65B0\u6210\u529F");
|
|
258
356
|
return result;
|
|
259
357
|
}
|
|
260
358
|
/**
|
|
@@ -264,12 +362,12 @@ var AdminService = class extends BaseSDK {
|
|
|
264
362
|
* @returns 成功响应
|
|
265
363
|
*/
|
|
266
364
|
async deletePluginVersion(pluginId, versionId) {
|
|
267
|
-
|
|
365
|
+
log5("\u5220\u9664\u7248\u672C: pluginId=%d, versionId=%d", pluginId, versionId);
|
|
268
366
|
const result = await this.request(
|
|
269
367
|
`/admin/plugins/${pluginId}/versions/${versionId}`,
|
|
270
368
|
{ method: "DELETE" }
|
|
271
369
|
);
|
|
272
|
-
|
|
370
|
+
log5("\u63D2\u4EF6\u7248\u672C\u5220\u9664\u6210\u529F");
|
|
273
371
|
return result;
|
|
274
372
|
}
|
|
275
373
|
/**
|
|
@@ -279,124 +377,112 @@ var AdminService = class extends BaseSDK {
|
|
|
279
377
|
* @returns 成功响应
|
|
280
378
|
*/
|
|
281
379
|
async setPluginVersionAsLatest(pluginId, versionId) {
|
|
282
|
-
|
|
380
|
+
log5("Setting version as latest: pluginId=%d, versionId=%d", pluginId, versionId);
|
|
283
381
|
const result = await this.request(
|
|
284
382
|
`/admin/plugins/${pluginId}/versions/${versionId}/latest`,
|
|
285
383
|
{ method: "POST" }
|
|
286
384
|
);
|
|
287
|
-
|
|
385
|
+
log5("Version set as latest");
|
|
288
386
|
return result;
|
|
289
387
|
}
|
|
290
388
|
};
|
|
291
389
|
|
|
292
|
-
// src/services/
|
|
293
|
-
import
|
|
294
|
-
var
|
|
295
|
-
var
|
|
390
|
+
// src/admin/services/SystemDependencyService.ts
|
|
391
|
+
import debug6 from "debug";
|
|
392
|
+
var log6 = debug6("lobe-market-sdk:admin:dependency");
|
|
393
|
+
var SystemDependencyService = class extends BaseSDK {
|
|
296
394
|
/**
|
|
297
|
-
*
|
|
395
|
+
* 创建系统依赖管理服务实例
|
|
298
396
|
* @param options SDK 配置选项
|
|
299
397
|
* @param sharedHeaders 共享的 headers 对象(可选)
|
|
300
398
|
*/
|
|
301
399
|
constructor(options = {}, sharedHeaders) {
|
|
302
400
|
super(options, sharedHeaders);
|
|
303
|
-
|
|
401
|
+
log6("SystemDependencyService instance created");
|
|
304
402
|
}
|
|
305
403
|
/**
|
|
306
|
-
*
|
|
307
|
-
* @
|
|
308
|
-
* @returns 插件列表响应
|
|
404
|
+
* 获取所有系统依赖项
|
|
405
|
+
* @returns 系统依赖项列表
|
|
309
406
|
*/
|
|
310
|
-
async
|
|
311
|
-
|
|
312
|
-
const
|
|
313
|
-
|
|
314
|
-
log3("\u83B7\u53D6\u63D2\u4EF6\u5217\u8868: %O", queryParams);
|
|
315
|
-
const result = await this.request(`/v1/plugins${queryString}`);
|
|
316
|
-
log3("\u5DF2\u83B7\u53D6 %d \u4E2A\u63D2\u4EF6", result.items.length);
|
|
407
|
+
async getSystemDependencies() {
|
|
408
|
+
log6("Getting all system dependencies");
|
|
409
|
+
const result = await this.request(`/admin/plugins/dependencies`);
|
|
410
|
+
log6("Retrieved %d system dependencies", result.data.length);
|
|
317
411
|
return result;
|
|
318
412
|
}
|
|
319
413
|
/**
|
|
320
|
-
*
|
|
321
|
-
* @param
|
|
322
|
-
* @
|
|
323
|
-
* @param version 版本
|
|
324
|
-
* @returns 插件清单
|
|
414
|
+
* 获取特定系统依赖项
|
|
415
|
+
* @param id 依赖项 ID
|
|
416
|
+
* @returns 系统依赖项
|
|
325
417
|
*/
|
|
326
|
-
async
|
|
327
|
-
|
|
328
|
-
const
|
|
329
|
-
|
|
330
|
-
if (version) {
|
|
331
|
-
params.version = version;
|
|
332
|
-
}
|
|
333
|
-
const queryString = this.buildQueryString(params);
|
|
334
|
-
const manifest = await this.request(
|
|
335
|
-
`/v1/plugins/${identifier}/manifest${queryString}`
|
|
418
|
+
async getSystemDependency(id) {
|
|
419
|
+
log6("Getting system dependency details: %d", id);
|
|
420
|
+
const result = await this.request(
|
|
421
|
+
`/admin/plugins/dependencies/${id}`
|
|
336
422
|
);
|
|
337
|
-
|
|
338
|
-
return
|
|
423
|
+
log6("System dependency details retrieved");
|
|
424
|
+
return result;
|
|
339
425
|
}
|
|
340
|
-
};
|
|
341
|
-
|
|
342
|
-
// src/services/DiscoveryService.ts
|
|
343
|
-
import debug4 from "debug";
|
|
344
|
-
var log4 = debug4("lobe-market-sdk:discovery");
|
|
345
|
-
var DiscoveryService = class extends BaseSDK {
|
|
346
426
|
/**
|
|
347
|
-
*
|
|
348
|
-
* @param
|
|
349
|
-
* @
|
|
427
|
+
* 创建系统依赖项
|
|
428
|
+
* @param data 依赖项创建数据
|
|
429
|
+
* @returns 创建的依赖项
|
|
350
430
|
*/
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
431
|
+
async createSystemDependency(data) {
|
|
432
|
+
log6("Creating system dependency: %O", data);
|
|
433
|
+
const result = await this.request(`/admin/plugins/dependencies`, {
|
|
434
|
+
method: "POST",
|
|
435
|
+
body: JSON.stringify(data)
|
|
436
|
+
});
|
|
437
|
+
log6("System dependency created successfully");
|
|
438
|
+
return result;
|
|
354
439
|
}
|
|
355
440
|
/**
|
|
356
|
-
*
|
|
357
|
-
* @
|
|
441
|
+
* 更新系统依赖项
|
|
442
|
+
* @param id 依赖项 ID
|
|
443
|
+
* @param data 依赖项更新数据
|
|
444
|
+
* @returns 更新后的依赖项
|
|
358
445
|
*/
|
|
359
|
-
async
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
446
|
+
async updateSystemDependency(id, data) {
|
|
447
|
+
log6("Updating system dependency: %d, data: %O", id, data);
|
|
448
|
+
const result = await this.request(
|
|
449
|
+
`/admin/plugins/dependencies/${id}`,
|
|
450
|
+
{
|
|
451
|
+
method: "PUT",
|
|
452
|
+
body: JSON.stringify(data)
|
|
453
|
+
}
|
|
454
|
+
);
|
|
455
|
+
log6("System dependency updated successfully");
|
|
456
|
+
return result;
|
|
457
|
+
}
|
|
458
|
+
/**
|
|
459
|
+
* 删除系统依赖项
|
|
460
|
+
* @param id 依赖项 ID
|
|
461
|
+
* @returns 成功响应
|
|
462
|
+
*/
|
|
463
|
+
async deleteSystemDependency(id) {
|
|
464
|
+
log6("\u5220\u9664\u7CFB\u7EDF\u4F9D\u8D56\u9879: %d", id);
|
|
465
|
+
const result = await this.request(
|
|
466
|
+
`/admin/plugins/dependencies/${id}`,
|
|
467
|
+
{ method: "DELETE" }
|
|
468
|
+
);
|
|
469
|
+
log6("\u7CFB\u7EDF\u4F9D\u8D56\u9879\u5220\u9664\u6210\u529F");
|
|
470
|
+
return result;
|
|
368
471
|
}
|
|
369
472
|
};
|
|
370
473
|
|
|
371
|
-
// src/
|
|
372
|
-
var
|
|
373
|
-
var
|
|
474
|
+
// src/admin/MarketAdmin.ts
|
|
475
|
+
var log7 = debug7("lobe-market-sdk:admin");
|
|
476
|
+
var MarketAdmin = class extends BaseSDK {
|
|
374
477
|
/**
|
|
375
|
-
*
|
|
376
|
-
* @param options SDK
|
|
478
|
+
* 创建 MarketAdmin 实例
|
|
479
|
+
* @param options SDK 配置选项
|
|
377
480
|
*/
|
|
378
481
|
constructor(options = {}) {
|
|
379
482
|
super(options);
|
|
380
|
-
|
|
381
|
-
this.plugins = new
|
|
382
|
-
this.
|
|
383
|
-
this.discovery = new DiscoveryService(options, this.headers);
|
|
384
|
-
}
|
|
385
|
-
/**
|
|
386
|
-
* Get market service discovery document
|
|
387
|
-
* @returns Service discovery document
|
|
388
|
-
*/
|
|
389
|
-
async getDiscoveryDocument() {
|
|
390
|
-
return this.discovery.getDiscoveryDocument();
|
|
391
|
-
}
|
|
392
|
-
/**
|
|
393
|
-
* Import plugin manifests (requires admin privileges)
|
|
394
|
-
* @param manifests Plugin manifest array
|
|
395
|
-
* @param ownerId Owner ID
|
|
396
|
-
* @returns Import result
|
|
397
|
-
*/
|
|
398
|
-
async importManifests(manifests, ownerId) {
|
|
399
|
-
return this.admin.importManifests(manifests, ownerId);
|
|
483
|
+
log7("MarketAdmin instance created");
|
|
484
|
+
this.plugins = new PluginAdminService(options, this.headers);
|
|
485
|
+
this.dependencies = new SystemDependencyService(options, this.headers);
|
|
400
486
|
}
|
|
401
487
|
};
|
|
402
488
|
|
|
@@ -428,12 +514,10 @@ var InstallationMethodEnum2 = z2.enum([
|
|
|
428
514
|
"none"
|
|
429
515
|
]);
|
|
430
516
|
export {
|
|
431
|
-
AdminService,
|
|
432
517
|
ConnectionTypeEnum2 as ConnectionTypeEnum,
|
|
433
|
-
DiscoveryService,
|
|
434
518
|
InstallationMethodEnum2 as InstallationMethodEnum,
|
|
519
|
+
MarketAdmin,
|
|
435
520
|
MarketSDK,
|
|
436
|
-
PluginTypeEnum2 as PluginTypeEnum
|
|
437
|
-
PluginsService
|
|
521
|
+
PluginTypeEnum2 as PluginTypeEnum
|
|
438
522
|
};
|
|
439
523
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/market-sdk.ts","../src/core/BaseSDK.ts","../src/services/AdminService.ts","../src/services/PluginsService.ts","../src/services/DiscoveryService.ts","../src/types/index.ts","../src/types/plugins.ts"],"sourcesContent":["import debug from 'debug';\n\nimport { BaseSDK } from './core/BaseSDK';\nimport { AdminService, DiscoveryService, PluginsService } from './services';\nimport {\n AdminPluginParams,\n DiscoveryDocument,\n MarketSDKOptions,\n Plugin,\n PluginListResponse,\n PluginManifest,\n PluginVersion,\n PluginVersionCreateParams,\n PluginVersionUpdateParams,\n} from './types';\n\n// Create debug instance\nconst log = debug('lobe-market-sdk');\n\n/**\n * LobeHub Market SDK Client\n * 采用组合模式组合各个领域服务\n */\nexport class MarketSDK extends BaseSDK {\n /**\n * 插件服务\n */\n readonly plugins: PluginsService;\n\n /**\n * 管理员服务\n */\n readonly admin: AdminService;\n\n /**\n * 发现服务\n */\n private readonly discovery: DiscoveryService;\n\n /**\n * Create MarketSDK instance\n * @param options SDK configuration options\n */\n constructor(options: MarketSDKOptions = {}) {\n super(options);\n log('MarketSDK 实例已创建');\n\n // 初始化各领域服务,共享 headers 对象\n this.plugins = new PluginsService(options, this.headers);\n this.admin = new AdminService(options, this.headers);\n this.discovery = new DiscoveryService(options, this.headers);\n }\n\n /**\n * Get market service discovery document\n * @returns Service discovery document\n */\n async getDiscoveryDocument(): Promise<DiscoveryDocument> {\n return this.discovery.getDiscoveryDocument();\n }\n\n /**\n * Import plugin manifests (requires admin privileges)\n * @param manifests Plugin manifest array\n * @param ownerId Owner ID\n * @returns Import result\n */\n async importManifests(\n manifests: PluginManifest[],\n ownerId?: number,\n ): Promise<{ success: number; failed: number }> {\n return this.admin.importManifests(manifests, ownerId);\n }\n}\n","import debug from 'debug';\n\nimport { MarketSDKOptions } from '../types';\n\n// 创建调试实例\nconst log = debug('lobe-market-sdk:core');\n\n/**\n * 基础 SDK 类\n * 提供共享的请求逻辑和认证功能\n */\nexport class BaseSDK {\n protected baseUrl: string;\n protected defaultLocale: string;\n protected headers: Record<string, string>;\n\n /**\n * 创建基础 SDK 实例\n * @param options SDK 配置选项\n * @param sharedHeaders 共享的 headers 对象(可选)\n */\n constructor(options: MarketSDKOptions = {}, sharedHeaders?: Record<string, string>) {\n this.baseUrl = options.baseUrl || 'https://market.lobehub.com/api';\n this.defaultLocale = options.defaultLocale || 'zh-CN';\n \n // 使用共享的 headers 或创建新的\n if (sharedHeaders) {\n this.headers = sharedHeaders;\n log('使用共享的 headers 对象');\n } else {\n this.headers = {\n 'Content-Type': 'application/json',\n ...(options.apiKey ? { Authorization: `Bearer ${options.apiKey}` } : {}),\n };\n log('创建新的 headers 对象');\n }\n\n log('BaseSDK 实例已创建: %O', {\n baseUrl: this.baseUrl,\n defaultLocale: this.defaultLocale,\n });\n }\n\n /**\n * 发送请求并处理响应\n * @param url 请求 URL\n * @param options fetch 选项\n * @returns 响应数据\n */\n protected async request<T>(url: string, options: RequestInit = {}): Promise<T> {\n log('发送请求: %s', `${this.baseUrl}${url}`);\n\n const response = await fetch(`${this.baseUrl}${url}`, {\n ...options,\n headers: {\n ...this.headers,\n ...options.headers,\n },\n });\n\n if (!response.ok) {\n const errorMsg = `请求失败: ${response.status} ${response.statusText}`;\n log('请求错误: %s', errorMsg);\n throw new Error(errorMsg);\n }\n\n log('请求成功: %s', url);\n return response.json() as Promise<T>;\n }\n\n /**\n * 构建查询字符串\n * @param params 查询参数\n * @returns 查询字符串\n */\n protected buildQueryString(params: Record<string, any>): string {\n const query = Object.entries(params)\n .filter(([_, value]) => value !== undefined && value !== null)\n .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`)\n .join('&');\n\n return query ? `?${query}` : '';\n }\n\n /**\n * 设置认证令牌\n * @param token 认证令牌\n */\n setAuthToken(token: string): void {\n log('设置认证令牌');\n this.headers.Authorization = `Bearer ${token}`;\n }\n\n /**\n * 清除认证令牌\n */\n clearAuthToken(): void {\n log('清除认证令牌');\n delete this.headers.Authorization;\n }\n} ","import debug from 'debug';\n\nimport { BaseSDK } from '../core/BaseSDK';\nimport {\n AdminPluginParams,\n MarketSDKOptions,\n Plugin,\n PluginManifest,\n PluginUpdateParams,\n PluginVersion,\n PluginVersionCreateParams,\n PluginVersionUpdateParams,\n} from '../types';\n\n// 创建调试实例\nconst log = debug('lobe-market-sdk:admin');\n\n/**\n * 管理员服务\n * 处理管理员相关功能\n */\nexport class AdminService extends BaseSDK {\n /**\n * 创建管理员服务实例\n * @param options SDK 配置选项\n * @param sharedHeaders 共享的 headers 对象(可选)\n */\n constructor(options: MarketSDKOptions = {}, sharedHeaders?: Record<string, string>) {\n super(options, sharedHeaders);\n log('AdminService 实例已创建');\n }\n \n /**\n * 导入插件清单(需要管理员权限)\n * @param manifests 插件清单数组\n * @param ownerId 所有者 ID\n * @returns 导入结果\n */\n async importManifests(\n manifests: PluginManifest[],\n ownerId?: number,\n ): Promise<{ success: number; failed: number }> {\n log(`开始批量导入 ${manifests.length} 个清单`);\n if (ownerId) {\n log(`使用指定的所有者 ID: ${ownerId}`);\n }\n\n const response = await this.request<{ data: { success: number; failed: number } }>(\n '/admin/plugins/import',\n {\n method: 'POST',\n body: JSON.stringify({\n manifests,\n ownerId,\n }),\n },\n );\n\n log(\n `批量导入完成: ${response.data.success} 个成功, ${response.data.failed} 个失败`,\n );\n return response.data;\n }\n\n /**\n * 获取所有插件(高级筛选)\n * @param params 管理员插件查询参数\n * @returns 插件列表响应\n */\n async getPlugins(params: AdminPluginParams = {}): Promise<{ data: Plugin[]; meta: { total: number; limit: number; offset: number } }> {\n log('获取插件列表(管理员): %O', params);\n const queryString = this.buildQueryString(params);\n\n const result = await this.request<{ data: Plugin[]; meta: { total: number; limit: number; offset: number } }>(\n `/admin/plugins${queryString}`,\n );\n log('已获取 %d 个插件', result.data.length);\n return result;\n }\n\n /**\n * 获取单个插件(含所有版本)\n * @param id 插件 ID\n * @returns 插件(含版本)\n */\n async getPlugin(id: number): Promise<{ data: Plugin & { versions: PluginVersion[] } }> {\n log('获取插件详情(管理员): %d', id);\n \n const result = await this.request<{ data: Plugin & { versions: PluginVersion[] } }>(\n `/admin/plugins/${id}`,\n );\n log('已获取插件(共 %d 个版本)', result.data.versions.length);\n return result;\n }\n\n /**\n * 更新插件信息\n * @param id 插件 ID\n * @param data 插件更新数据\n * @returns 更新后的插件\n */\n async updatePlugin(\n id: number, \n data: PluginUpdateParams\n ): Promise<{ data: Plugin }> {\n log('更新插件: %d,数据: %O', id, data);\n \n const result = await this.request<{ data: Plugin }>(\n `/admin/plugins/${id}`,\n {\n method: 'PUT',\n body: JSON.stringify(data),\n }\n );\n log('插件更新成功');\n return result;\n }\n\n /**\n * 更新插件状态\n * @param id 插件 ID\n * @param status 新状态\n * @returns 成功响应\n */\n async updatePluginStatus(\n id: number,\n status: 'published' | 'draft' | 'review' | 'rejected'\n ): Promise<{ success: boolean; message: string }> {\n log('更新插件状态: %d 为 %s', id, status);\n \n const result = await this.request<{ success: boolean; message: string }>(\n `/admin/plugins/${id}/status`,\n {\n method: 'PATCH',\n body: JSON.stringify({ status }),\n }\n );\n log('插件状态更新成功');\n return result;\n }\n\n /**\n * 删除插件\n * @param id 插件 ID\n * @returns 成功响应\n */\n async deletePlugin(id: number): Promise<{ success: boolean; message: string }> {\n log('删除插件: %d', id);\n \n const result = await this.request<{ success: boolean; message: string }>(\n `/admin/plugins/${id}`,\n { method: 'DELETE' }\n );\n log('插件删除成功');\n return result;\n }\n\n /**\n * 获取插件版本列表\n * @param pluginId 插件 ID\n * @returns 插件版本列表\n */\n async getPluginVersions(pluginId: number): Promise<{ data: PluginVersion[] }> {\n log('获取插件版本: pluginId=%d', pluginId);\n \n const result = await this.request<{ data: PluginVersion[] }>(\n `/admin/plugins/${pluginId}/versions`,\n );\n log('已获取 %d 个版本', result.data.length);\n return result;\n }\n\n /**\n * 获取单个插件版本\n * @param pluginId 插件 ID\n * @param versionId 版本 ID\n * @returns 插件版本\n */\n async getPluginVersion(pluginId: number, versionId: number): Promise<{ data: PluginVersion }> {\n log('获取版本详情: pluginId=%d, versionId=%d', pluginId, versionId);\n \n const result = await this.request<{ data: PluginVersion }>(\n `/admin/plugins/${pluginId}/versions/${versionId}`,\n );\n log('已获取版本详情');\n return result;\n }\n\n /**\n * 创建插件版本\n * @param pluginId 插件 ID\n * @param data 版本创建数据\n * @returns 创建的版本\n */\n async createPluginVersion(\n pluginId: number,\n data: PluginVersionCreateParams\n ): Promise<{ data: PluginVersion }> {\n log('创建新版本: pluginId=%d', pluginId);\n \n const result = await this.request<{ data: PluginVersion }>(\n `/admin/plugins/${pluginId}/versions`,\n {\n method: 'POST',\n body: JSON.stringify(data),\n }\n );\n log('插件版本创建成功');\n return result;\n }\n\n /**\n * 更新插件版本\n * @param pluginId 插件 ID\n * @param versionId 版本 ID\n * @param data 版本更新数据\n * @returns 更新后的版本\n */\n async updatePluginVersion(\n pluginId: number,\n versionId: number,\n data: PluginVersionUpdateParams\n ): Promise<{ data: PluginVersion }> {\n log('更新版本: pluginId=%d, versionId=%d', pluginId, versionId);\n \n const result = await this.request<{ data: PluginVersion }>(\n `/admin/plugins/${pluginId}/versions/${versionId}`,\n {\n method: 'PUT',\n body: JSON.stringify(data),\n }\n );\n log('插件版本更新成功');\n return result;\n }\n\n /**\n * 删除插件版本\n * @param pluginId 插件 ID\n * @param versionId 版本 ID\n * @returns 成功响应\n */\n async deletePluginVersion(pluginId: number, versionId: number): Promise<{ success: boolean; message: string }> {\n log('删除版本: pluginId=%d, versionId=%d', pluginId, versionId);\n \n const result = await this.request<{ success: boolean; message: string }>(\n `/admin/plugins/${pluginId}/versions/${versionId}`,\n { method: 'DELETE' }\n );\n log('插件版本删除成功');\n return result;\n }\n\n /**\n * 设置插件版本为最新版本\n * @param pluginId 插件 ID\n * @param versionId 版本 ID\n * @returns 成功响应\n */\n async setPluginVersionAsLatest(pluginId: number, versionId: number): Promise<{ success: boolean; message: string }> {\n log('设置版本为最新: pluginId=%d, versionId=%d', pluginId, versionId);\n \n const result = await this.request<{ success: boolean; message: string }>(\n `/admin/plugins/${pluginId}/versions/${versionId}/latest`,\n { method: 'POST' }\n );\n log('版本已设置为最新');\n return result;\n }\n} ","import debug from 'debug';\n\nimport { BaseSDK } from '../core/BaseSDK';\nimport { MarketSDKOptions, PluginListResponse, PluginManifest, PluginQueryParams } from '../types';\n\n// 创建调试实例\nconst log = debug('lobe-market-sdk:plugins');\n\n/**\n * 插件服务\n * 处理插件相关功能\n */\nexport class PluginsService extends BaseSDK {\n /**\n * 创建插件服务实例\n * @param options SDK 配置选项\n * @param sharedHeaders 共享的 headers 对象(可选)\n */\n constructor(options: MarketSDKOptions = {}, sharedHeaders?: Record<string, string>) {\n super(options, sharedHeaders);\n log('PluginsService 实例已创建');\n }\n \n /**\n * 获取插件列表\n * @param params 查询参数\n * @returns 插件列表响应\n */\n async getPluginList(params: PluginQueryParams = {}): Promise<PluginListResponse> {\n const locale = params.locale || this.defaultLocale;\n const queryParams = { ...params, locale };\n const queryString = this.buildQueryString(queryParams);\n\n log('获取插件列表: %O', queryParams);\n\n const result = await this.request<PluginListResponse>(`/v1/plugins${queryString}`);\n log('已获取 %d 个插件', result.items.length);\n return result;\n }\n\n /**\n * 获取插件清单\n * @param identifier 插件标识符\n * @param locale 语言\n * @param version 版本\n * @returns 插件清单\n */\n async getPluginManifest(\n identifier: string,\n locale?: string,\n version?: string,\n ): Promise<PluginManifest> {\n log('获取插件清单: %O', { identifier, version, locale });\n const localeParam = locale || this.defaultLocale;\n const params: Record<string, string> = { locale: localeParam };\n if (version) {\n params.version = version;\n }\n const queryString = this.buildQueryString(params);\n\n const manifest = await this.request<PluginManifest>(\n `/v1/plugins/${identifier}/manifest${queryString}`,\n );\n log('成功获取插件清单: %s', identifier);\n return manifest;\n }\n} ","import debug from 'debug';\n\nimport { BaseSDK } from '../core/BaseSDK';\nimport { DiscoveryDocument, MarketSDKOptions } from '../types';\n\n// 创建调试实例\nconst log = debug('lobe-market-sdk:discovery');\n\n/**\n * 发现服务\n * 处理服务发现功能\n */\nexport class DiscoveryService extends BaseSDK {\n private discoveryDoc?: DiscoveryDocument;\n\n /**\n * 创建发现服务实例\n * @param options SDK 配置选项\n * @param sharedHeaders 共享的 headers 对象(可选)\n */\n constructor(options: MarketSDKOptions = {}, sharedHeaders?: Record<string, string>) {\n super(options, sharedHeaders);\n log('DiscoveryService 实例已创建');\n }\n\n /**\n * 获取市场服务发现文档\n * @returns 服务发现文档\n */\n async getDiscoveryDocument(): Promise<DiscoveryDocument> {\n log('获取服务发现文档');\n if (this.discoveryDoc) {\n log('返回缓存的发现文档');\n return this.discoveryDoc;\n }\n\n this.discoveryDoc = await this.request<DiscoveryDocument>('/market/.well-known/discovery');\n log('成功获取服务发现文档');\n return this.discoveryDoc;\n }\n} ","import { z } from 'zod';\n\n// 插件类型\nexport const PluginTypeEnum = z.enum(['lobe', 'openai', 'mcp']);\nexport type PluginType = z.infer<typeof PluginTypeEnum>;\n\n// 连接类型\nexport const ConnectionTypeEnum = z.enum(['http', 'stdio']);\nexport type ConnectionType = z.infer<typeof ConnectionTypeEnum>;\n\n// 安装方法\nexport const InstallationMethodEnum = z.enum([\n 'npm',\n 'docker',\n 'git',\n 'binaryUrl',\n 'manual',\n 'none',\n]);\nexport type InstallationMethod = z.infer<typeof InstallationMethodEnum>;\n\n// 系统依赖项\nexport interface SystemDependency {\n name: string;\n type?: string;\n requiredVersion?: string;\n checkCommand?: string;\n installInstructions?: Record<string, string>;\n versionParsingRequired?: boolean;\n notes?: string;\n}\n\n// 连接配置\nexport interface ConnectionConfig {\n type: string;\n command?: string;\n args?: string[];\n url?: string;\n}\n\nexport interface InstallationDetails {\n packageName?: string;\n repositoryUrlToClone?: string;\n setupSteps?: string[];\n}\n// 部署选项\nexport interface DeploymentOption {\n installationMethod: string;\n installationDetails?: InstallationDetails;\n connection: ConnectionConfig;\n isRecommended?: boolean;\n notes?: string;\n systemDependencies?: SystemDependency[];\n}\n\n// 兼容性信息\nexport interface PluginCompatibility {\n platforms?: string[];\n minAppVersion?: string;\n maxAppVersion?: string;\n}\n\n// 插件项\nexport interface PluginItem {\n identifier: string;\n version: string;\n isLatest: boolean;\n name: string;\n createdAt: string;\n type: PluginType;\n manifestUrl?: string;\n manifestVersion: string;\n icon?: string;\n author?: string;\n homepage?: string;\n category?: string;\n connectionType?: ConnectionType;\n compatibility?: PluginCompatibility;\n capabilities: {\n tools: boolean;\n prompts: boolean;\n resources: boolean;\n };\n description: string;\n tags?: string[];\n authRequirement?: string;\n isInstallable?: boolean;\n toolsCount?: number;\n promptsCount?: number;\n resourcesCount?: number;\n isValidated?: boolean;\n installCount?: number;\n ratingAverage?: number;\n ratingCount?: number;\n commentCount?: number;\n}\n\n// 插件列表响应\nexport interface PluginListResponse {\n items: PluginItem[];\n totalCount: number;\n currentPage: number;\n pageSize: number;\n totalPages: number;\n categories: string[];\n tags: string[];\n}\n\n// 工具项定义\nexport interface PluginTool {\n name: string;\n description?: string;\n parameters?: Record<string, any>;\n}\n\n// 资源项定义\nexport interface PluginResource {\n uri: string;\n name?: string;\n mimeType?: string;\n}\n\n// 提示词参数定义\nexport interface PromptArgument {\n name: string;\n required?: boolean;\n description?: string;\n type?: string;\n}\n\n// 提示词项定义\nexport interface PluginPrompt {\n name: string;\n description: string;\n arguments?: PromptArgument[];\n}\n\n// 插件清单\nexport interface PluginManifest {\n id: string;\n name: string;\n version: string;\n description: string;\n category?: string;\n tags?: string[];\n author?: {\n name: string;\n url?: string;\n };\n homepage?: string;\n icon?: string;\n capabilities?: {\n tools?: boolean;\n prompts?: boolean;\n resources?: boolean;\n };\n deploymentOptions?: DeploymentOption[];\n compatibility?: PluginCompatibility;\n // 工具定义\n tools?: PluginTool[];\n // 资源定义\n resources?: PluginResource[];\n // 提示词定义\n prompts?: PluginPrompt[];\n // 验证信息\n isValidated?: boolean;\n validatedAt?: string;\n}\n\n// 市场服务发现文档\nexport interface DiscoveryDocument {\n issuer: string;\n market_index_schema_version: number;\n resource_types_supported: string[];\n resource_endpoints: Record<string, string>;\n manifest_endpoint_template: string | Record<string, string>;\n support_locales: string[];\n response_types_supported: string[];\n authentication?: {\n schemes_supported: Array<'none' | 'apiKey' | 'oauth2'>;\n };\n api_documentation_url?: string;\n policy_url?: string;\n terms_of_service_url?: string;\n}\n\n// SDK 配置选项\nexport interface MarketSDKOptions {\n baseUrl?: string;\n defaultLocale?: string;\n apiKey?: string;\n}\n\n// 管理员 API 相关类型\n\n// 插件数据库模型\nexport interface Plugin {\n id: number;\n identifier: string;\n name: string;\n description: string;\n ownerId: number;\n type: string;\n visibility: 'public' | 'private' | 'unlisted';\n status: 'published' | 'draft' | 'review' | 'rejected';\n isFeatured: boolean;\n category: string;\n tags: string[];\n icon: string | null;\n author: string | null;\n homepage: string | null;\n manifestVersion: string;\n createdAt: string;\n updatedAt: string;\n meta: Record<string, any> | null;\n installCount: number;\n ratingAverage: number | null;\n ratingCount: number;\n reviewCount: number;\n}\n\n// 插件版本数据库模型\nexport interface PluginVersion {\n id: number;\n pluginId: number;\n version: string;\n isLatest: boolean;\n manifestUrl: string | null;\n toolsCount: number;\n promptsCount: number;\n resourcesCount: number;\n isValidated: boolean;\n createdAt: string;\n updatedAt: string;\n manifest: PluginManifest;\n meta: Record<string, any> | null;\n}\n\n// 管理员获取插件列表参数\nexport interface AdminPluginParams {\n status?: 'published' | 'draft' | 'review' | 'rejected';\n visibility?: 'public' | 'private' | 'unlisted';\n featured?: boolean;\n ownerId?: number;\n limit?: number;\n offset?: number;\n orderBy?: 'createdAt' | 'updatedAt' | 'installCount' | 'ratingAverage';\n order?: 'asc' | 'desc';\n}\n\n// 创建插件版本参数\nexport interface PluginVersionCreateParams {\n version: string;\n manifest: PluginManifest;\n manifestUrl?: string;\n isLatest?: boolean;\n isValidated?: boolean;\n meta?: Record<string, any>;\n}\n\n// 更新插件版本参数\nexport interface PluginVersionUpdateParams {\n manifestUrl?: string;\n isValidated?: boolean;\n meta?: Record<string, any>;\n}\n\n// 导出所有类型\nexport * from './common';\nexport * from './plugins';\nexport * from './admin';\n","import { z } from 'zod';\n\n// 插件类型\nexport const PluginTypeEnum = z.enum(['lobe', 'openai', 'mcp']);\nexport type PluginType = z.infer<typeof PluginTypeEnum>;\n\n// 连接类型\nexport const ConnectionTypeEnum = z.enum(['http', 'stdio']);\nexport type ConnectionType = z.infer<typeof ConnectionTypeEnum>;\n\n// 安装方法\nexport const InstallationMethodEnum = z.enum([\n 'npm',\n 'docker',\n 'git',\n 'binaryUrl',\n 'manual',\n 'none',\n]);\nexport type InstallationMethod = z.infer<typeof InstallationMethodEnum>;\n\n// 系统依赖项\nexport interface SystemDependency {\n name: string;\n type?: string;\n requiredVersion?: string;\n checkCommand?: string;\n installInstructions?: Record<string, string>;\n versionParsingRequired?: boolean;\n notes?: string;\n}\n\n// 连接配置\nexport interface ConnectionConfig {\n type: string;\n command?: string;\n args?: string[];\n url?: string;\n}\n\nexport interface InstallationDetails {\n packageName?: string;\n repositoryUrlToClone?: string;\n setupSteps?: string[];\n}\n\n// 部署选项\nexport interface DeploymentOption {\n installationMethod: string;\n installationDetails?: InstallationDetails;\n connection: ConnectionConfig;\n isRecommended?: boolean;\n notes?: string;\n systemDependencies?: SystemDependency[];\n}\n\n// 兼容性信息\nexport interface PluginCompatibility {\n platforms?: string[];\n minAppVersion?: string;\n maxAppVersion?: string;\n}\n\n// 插件项\nexport interface PluginItem {\n identifier: string;\n version: string;\n isLatest: boolean;\n name: string;\n createdAt: string;\n type: PluginType;\n manifestUrl?: string;\n manifestVersion: string;\n icon?: string;\n author?: string;\n homepage?: string;\n category?: string;\n connectionType?: ConnectionType;\n compatibility?: PluginCompatibility;\n capabilities: {\n tools: boolean;\n prompts: boolean;\n resources: boolean;\n };\n description: string;\n tags?: string[];\n authRequirement?: string;\n isInstallable?: boolean;\n toolsCount?: number;\n promptsCount?: number;\n resourcesCount?: number;\n isValidated?: boolean;\n installCount?: number;\n ratingAverage?: number;\n ratingCount?: number;\n commentCount?: number;\n}\n\n// 插件列表响应\nexport interface PluginListResponse {\n items: PluginItem[];\n totalCount: number;\n currentPage: number;\n pageSize: number;\n totalPages: number;\n categories: string[];\n tags: string[];\n}\n\n// 工具项定义\nexport interface PluginTool {\n name: string;\n description?: string;\n parameters?: Record<string, any>;\n}\n\n// 资源项定义\nexport interface PluginResource {\n uri: string;\n name?: string;\n mimeType?: string;\n}\n\n// 提示词参数定义\nexport interface PromptArgument {\n name: string;\n required?: boolean;\n description?: string;\n type?: string;\n}\n\n// 提示词项定义\nexport interface PluginPrompt {\n name: string;\n description: string;\n arguments?: PromptArgument[];\n}\n\n// 插件清单\nexport interface PluginManifest {\n id: string;\n name: string;\n version: string;\n description: string;\n category?: string;\n tags?: string[];\n author?: {\n name: string;\n url?: string;\n };\n homepage?: string;\n icon?: string;\n capabilities?: {\n tools?: boolean;\n prompts?: boolean;\n resources?: boolean;\n };\n deploymentOptions?: DeploymentOption[];\n compatibility?: PluginCompatibility;\n // 工具定义\n tools?: PluginTool[];\n // 资源定义\n resources?: PluginResource[];\n // 提示词定义\n prompts?: PluginPrompt[];\n // 验证信息\n isValidated?: boolean;\n validatedAt?: string;\n}\n\n// 插件查询参数\nexport interface PluginQueryParams {\n page?: number;\n pageSize?: number;\n category?: string;\n tags?: string;\n q?: string;\n sort?: 'installCount' | 'createdAt' | 'updatedAt' | 'ratingAverage';\n order?: 'asc' | 'desc';\n locale?: string;\n} "],"mappings":"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","names":["debug","debug","log","debug","debug","log","debug","debug","log","debug","log","debug","z","PluginTypeEnum","z","ConnectionTypeEnum","InstallationMethodEnum"]}
|
|
1
|
+
{"version":3,"sources":["../src/market/market-sdk.ts","../src/core/BaseSDK.ts","../src/market/services/PluginsService.ts","../src/market/services/DiscoveryService.ts","../src/admin/MarketAdmin.ts","../src/admin/services/PluginAdminService.ts","../src/admin/services/SystemDependencyService.ts","../src/types/index.ts","../src/types/plugins.ts"],"sourcesContent":["import debug from 'debug';\n\nimport { BaseSDK } from '../core/BaseSDK';\nimport { DiscoveryService, PluginsService } from './services';\nimport { DiscoveryDocument, MarketSDKOptions } from '../types';\n\n// Create debug instance\nconst log = debug('lobe-market-sdk');\n\n/**\n * LobeHub Market SDK Client\n * 采用组合模式组合各个领域服务\n */\nexport class MarketSDK extends BaseSDK {\n /**\n * 插件服务\n */\n readonly plugins: PluginsService;\n\n /**\n * 发现服务\n */\n private readonly discovery: DiscoveryService;\n\n /**\n * Create MarketSDK instance\n * @param options SDK configuration options\n */\n constructor(options: MarketSDKOptions = {}) {\n super(options);\n log('MarketSDK instance created');\n\n // Initialize domain services with shared headers\n this.plugins = new PluginsService(options, this.headers);\n this.discovery = new DiscoveryService(options, this.headers);\n }\n\n /**\n * Get market service discovery document\n * @returns Service discovery document\n */\n async getDiscoveryDocument(): Promise<DiscoveryDocument> {\n return this.discovery.getDiscoveryDocument();\n }\n}\n","import debug from 'debug';\n\nimport { MarketSDKOptions } from '../types';\n\n// Create debug instance\nconst log = debug('lobe-market-sdk:core');\n\n/**\n * 基础 SDK 类\n * 提供共享的请求逻辑和认证功能\n */\nexport class BaseSDK {\n protected baseUrl: string;\n protected defaultLocale: string;\n protected headers: Record<string, string>;\n\n /**\n * 创建基础 SDK 实例\n * @param options SDK 配置选项\n * @param sharedHeaders 共享的 headers 对象(可选)\n */\n constructor(options: MarketSDKOptions = {}, sharedHeaders?: Record<string, string>) {\n this.baseUrl = options.baseUrl || 'https://market.lobehub.com/api';\n this.defaultLocale = options.defaultLocale || 'en-US';\n\n // 使用共享的 headers 或创建新的\n if (sharedHeaders) {\n this.headers = sharedHeaders;\n log('Using shared headers object');\n } else {\n this.headers = {\n 'Content-Type': 'application/json',\n ...(options.apiKey ? { Authorization: `Bearer ${options.apiKey}` } : {}),\n };\n log('Created new headers object');\n }\n\n log('BaseSDK instance created: %O', {\n baseUrl: this.baseUrl,\n defaultLocale: this.defaultLocale,\n });\n }\n\n /**\n * 发送请求并处理响应\n * @param url 请求 URL\n * @param options fetch 选项\n * @returns 响应数据\n */\n protected async request<T>(url: string, options: RequestInit = {}): Promise<T> {\n log('Sending request: %s', `${this.baseUrl}${url}`);\n\n const response = await fetch(`${this.baseUrl}${url}`, {\n ...options,\n headers: {\n ...this.headers,\n ...options.headers,\n },\n });\n\n if (!response.ok) {\n const errorMsg = `Request failed: ${response.status} ${response.statusText}`;\n log('Request error: %s', errorMsg);\n throw new Error(errorMsg);\n }\n\n log('Request successful: %s', url);\n return response.json() as Promise<T>;\n }\n\n /**\n * 构建查询字符串\n * @param params 查询参数\n * @returns 查询字符串\n */\n protected buildQueryString(params: Record<string, any>): string {\n const query = Object.entries(params)\n .filter(([_, value]) => value !== undefined && value !== null)\n .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`)\n .join('&');\n\n return query ? `?${query}` : '';\n }\n\n /**\n * 设置认证令牌\n * @param token 认证令牌\n */\n setAuthToken(token: string): void {\n log('Setting authentication token');\n this.headers.Authorization = `Bearer ${token}`;\n }\n\n /**\n * 清除认证令牌\n */\n clearAuthToken(): void {\n log('Clearing authentication token');\n delete this.headers.Authorization;\n }\n}\n","import debug from 'debug';\n\nimport { BaseSDK } from '../../core/BaseSDK';\nimport { MarketSDKOptions, PluginListResponse, PluginManifest, PluginQueryParams } from '../../types';\n\n// Create debug instance\nconst log = debug('lobe-market-sdk:plugins');\n\n/**\n * 插件服务\n * 处理插件相关功能\n */\nexport class PluginsService extends BaseSDK {\n /**\n * 创建插件服务实例\n * @param options SDK 配置选项\n * @param sharedHeaders 共享的 headers 对象(可选)\n */\n constructor(options: MarketSDKOptions = {}, sharedHeaders?: Record<string, string>) {\n super(options, sharedHeaders);\n log('PluginsService instance created');\n }\n\n /**\n * 获取插件列表\n * @param params 查询参数\n * @returns 插件列表响应\n */\n async getPluginList(params: PluginQueryParams = {}): Promise<PluginListResponse> {\n const locale = params.locale || this.defaultLocale;\n const queryParams = { ...params, locale };\n const queryString = this.buildQueryString(queryParams);\n\n log('Getting plugin list: %O', queryParams);\n\n const result = await this.request<PluginListResponse>(`/v1/plugins${queryString}`);\n log('Retrieved %d plugins', result.items.length);\n return result;\n }\n\n /**\n * 获取插件清单\n * @param identifier 插件标识符\n * @param locale 语言\n * @param version 版本\n * @returns 插件清单\n */\n async getPluginManifest(\n identifier: string,\n locale?: string,\n version?: string,\n ): Promise<PluginManifest> {\n log('Getting plugin manifest: %O', { identifier, version, locale });\n const localeParam = locale || this.defaultLocale;\n const params: Record<string, string> = { locale: localeParam };\n if (version) {\n params.version = version;\n }\n const queryString = this.buildQueryString(params);\n\n const manifest = await this.request<PluginManifest>(\n `/v1/plugins/${identifier}/manifest${queryString}`,\n );\n log('Plugin manifest successfully retrieved: %s', identifier);\n return manifest;\n }\n}\n","import debug from 'debug';\n\nimport { BaseSDK } from '../../core/BaseSDK';\nimport { DiscoveryDocument, MarketSDKOptions } from '../../types';\n\n// Create debug instance\nconst log = debug('lobe-market-sdk:discovery');\n\n/**\n * 发现服务\n * 处理服务发现功能\n */\nexport class DiscoveryService extends BaseSDK {\n private discoveryDoc?: DiscoveryDocument;\n\n /**\n * 创建发现服务实例\n * @param options SDK 配置选项\n * @param sharedHeaders 共享的 headers 对象(可选)\n */\n constructor(options: MarketSDKOptions = {}, sharedHeaders?: Record<string, string>) {\n super(options, sharedHeaders);\n log('DiscoveryService instance created');\n }\n\n /**\n * 获取市场服务发现文档\n * @returns 服务发现文档\n */\n async getDiscoveryDocument(): Promise<DiscoveryDocument> {\n log('Fetching discovery document');\n if (this.discoveryDoc) {\n log('Returning cached discovery document');\n return this.discoveryDoc;\n }\n\n this.discoveryDoc = await this.request<DiscoveryDocument>('/market/.well-known/discovery');\n log('Discovery document successfully fetched');\n return this.discoveryDoc;\n }\n}\n","import debug from 'debug';\n\nimport { BaseSDK } from '../core/BaseSDK';\nimport { MarketSDKOptions } from '../types';\nimport { PluginAdminService, SystemDependencyService } from './services';\n\n// 创建 debug 实例\nconst log = debug('lobe-market-sdk:admin');\n\n/**\n * LobeHub 市场管理 SDK 客户端\n * 专门用于管理市场的管理功能\n */\nexport class MarketAdmin extends BaseSDK {\n /**\n * 插件管理服务\n */\n readonly plugins: PluginAdminService;\n\n /**\n * 系统依赖管理服务\n */\n readonly dependencies: SystemDependencyService;\n\n /**\n * 创建 MarketAdmin 实例\n * @param options SDK 配置选项\n */\n constructor(options: MarketSDKOptions = {}) {\n super(options);\n log('MarketAdmin instance created');\n\n // 初始化服务\n this.plugins = new PluginAdminService(options, this.headers);\n this.dependencies = new SystemDependencyService(options, this.headers);\n }\n} ","import debug from 'debug';\n\nimport { BaseSDK } from '../../core/BaseSDK';\nimport {\n AdminPluginParams,\n MarketSDKOptions,\n Plugin,\n PluginManifest,\n PluginUpdateParams,\n PluginVersion,\n PluginVersionCreateParams,\n PluginVersionUpdateParams,\n} from '../../types';\n\n// 创建 debug 实例\nconst log = debug('lobe-market-sdk:admin:plugin');\n\n/**\n * 插件管理服务\n * 处理插件相关的管理功能\n */\nexport class PluginAdminService extends BaseSDK {\n /**\n * 创建插件管理服务实例\n * @param options SDK 配置选项\n * @param sharedHeaders 共享的 headers 对象(可选)\n */\n constructor(options: MarketSDKOptions = {}, sharedHeaders?: Record<string, string>) {\n super(options, sharedHeaders);\n log('PluginAdminService instance created');\n }\n\n /**\n * 导入插件清单(需要管理员权限)\n * @param manifests 插件清单数组\n * @param ownerId 所有者 ID\n * @returns 导入结果\n */\n async importManifests(\n manifests: PluginManifest[],\n ownerId?: number,\n ): Promise<{ success: number; failed: number }> {\n log(`开始批量导入 ${manifests.length} 个清单`);\n if (ownerId) {\n log(`使用指定的所有者 ID: ${ownerId}`);\n }\n\n const response = await this.request<{ data: { success: number; failed: number } }>(\n '/admin/plugins/import',\n {\n method: 'POST',\n body: JSON.stringify({\n manifests,\n ownerId,\n }),\n },\n );\n\n log(`批量导入完成: ${response.data.success} 个成功, ${response.data.failed} 个失败`);\n return response.data;\n }\n\n /**\n * 获取插件列表\n * @param params 查询参数\n * @returns 插件列表响应\n */\n async getPlugins(params: AdminPluginParams = {}): Promise<{ data: Plugin[] }> {\n log('Getting plugins with params: %O', params);\n\n const queryString = this.buildQueryString(params);\n const url = `/admin/plugins${queryString ? `?${queryString}` : ''}`;\n\n const result = await this.request<{ data: Plugin[] }>(url);\n log('Retrieved %d plugins', result.data.length);\n return result;\n }\n\n /**\n * 获取单个插件\n * @param id 插件 ID\n * @returns 插件详情\n */\n async getPlugin(id: number): Promise<{ data: Plugin & { versions: PluginVersion[] } }> {\n log('获取插件详情(管理员): %d', id);\n\n const result = await this.request<{ data: Plugin & { versions: PluginVersion[] } }>(\n `/admin/plugins/${id}`,\n );\n log('已获取插件(共 %d 个版本)', result.data.versions.length);\n return result;\n }\n\n /**\n * 更新插件信息\n * @param id 插件 ID\n * @param data 插件更新数据\n * @returns 更新后的插件\n */\n async updatePlugin(id: number, data: PluginUpdateParams): Promise<{ data: Plugin }> {\n log('更新插件: %d,数据: %O', id, data);\n\n const result = await this.request<{ data: Plugin }>(`/admin/plugins/${id}`, {\n method: 'PUT',\n body: JSON.stringify(data),\n });\n log('插件更新成功');\n return result;\n }\n\n /**\n * 更新插件状态\n * @param id 插件 ID\n * @param status 新状态\n * @returns 成功响应\n */\n async updatePluginStatus(\n id: number,\n status: 'published' | 'draft' | 'review' | 'rejected',\n ): Promise<{ success: boolean; message: string }> {\n log('更新插件状态: %d 为 %s', id, status);\n\n const result = await this.request<{ success: boolean; message: string }>(\n `/admin/plugins/${id}/status`,\n {\n method: 'PATCH',\n body: JSON.stringify({ status }),\n },\n );\n log('插件状态更新成功');\n return result;\n }\n\n /**\n * 删除插件\n * @param id 插件 ID\n * @returns 成功响应\n */\n async deletePlugin(id: number): Promise<{ success: boolean; message: string }> {\n log('删除插件: %d', id);\n\n const result = await this.request<{ success: boolean; message: string }>(\n `/admin/plugins/${id}`,\n { method: 'DELETE' },\n );\n log('插件删除成功');\n return result;\n }\n\n /**\n * 获取插件版本列表\n * @param pluginId 插件 ID\n * @returns 插件版本列表\n */\n async getPluginVersions(pluginId: number): Promise<{ data: PluginVersion[] }> {\n log('Getting plugin versions: pluginId=%d', pluginId);\n\n const result = await this.request<{ data: PluginVersion[] }>(\n `/admin/plugins/${pluginId}/versions`,\n );\n\n log('Retrieved %d versions', result.data.length);\n return result;\n }\n\n /**\n * 获取单个插件版本\n * @param pluginId 插件 ID\n * @param versionId 版本 ID\n * @returns 插件版本\n */\n async getPluginVersion(pluginId: number, versionId: number): Promise<{ data: PluginVersion }> {\n log('Getting version details: pluginId=%d, versionId=%d', pluginId, versionId);\n\n const result = await this.request<{ data: PluginVersion }>(\n `/admin/plugins/${pluginId}/versions/${versionId}`,\n );\n log('Version details retrieved');\n return result;\n }\n\n /**\n * 创建插件版本\n * @param pluginId 插件 ID\n * @param data 版本创建数据\n * @returns 创建的版本\n */\n async createPluginVersion(\n pluginId: number,\n data: PluginVersionCreateParams,\n ): Promise<{ data: PluginVersion }> {\n log('Creating new version: pluginId=%d', pluginId);\n\n const result = await this.request<{ data: PluginVersion }>(\n `/admin/plugins/${pluginId}/versions`,\n {\n method: 'POST',\n body: JSON.stringify(data),\n },\n );\n log('Plugin version created successfully');\n return result;\n }\n\n /**\n * 更新插件版本\n * @param pluginId 插件 ID\n * @param versionId 版本 ID\n * @param data 版本更新数据\n * @returns 更新后的版本\n */\n async updatePluginVersion(\n pluginId: number,\n versionId: number,\n data: PluginVersionUpdateParams,\n ): Promise<{ data: PluginVersion }> {\n log('Updating version: pluginId=%d, versionId=%d', pluginId, versionId);\n\n const result = await this.request<{ data: PluginVersion }>(\n `/admin/plugins/${pluginId}/versions/${versionId}`,\n {\n method: 'PUT',\n body: JSON.stringify(data),\n },\n );\n log('插件版本更新成功');\n return result;\n }\n\n /**\n * 删除插件版本\n * @param pluginId 插件 ID\n * @param versionId 版本 ID\n * @returns 成功响应\n */\n async deletePluginVersion(\n pluginId: number,\n versionId: number,\n ): Promise<{ success: boolean; message: string }> {\n log('删除版本: pluginId=%d, versionId=%d', pluginId, versionId);\n\n const result = await this.request<{ success: boolean; message: string }>(\n `/admin/plugins/${pluginId}/versions/${versionId}`,\n { method: 'DELETE' },\n );\n log('插件版本删除成功');\n return result;\n }\n\n /**\n * 设置插件版本为最新版本\n * @param pluginId 插件 ID\n * @param versionId 版本 ID\n * @returns 成功响应\n */\n async setPluginVersionAsLatest(\n pluginId: number,\n versionId: number,\n ): Promise<{ success: boolean; message: string }> {\n log('Setting version as latest: pluginId=%d, versionId=%d', pluginId, versionId);\n\n const result = await this.request<{ success: boolean; message: string }>(\n `/admin/plugins/${pluginId}/versions/${versionId}/latest`,\n { method: 'POST' },\n );\n log('Version set as latest');\n return result;\n }\n} ","import debug from 'debug';\n\nimport { BaseSDK } from '../../core/BaseSDK';\nimport { MarketSDKOptions, SystemDependency } from '../../types';\n\n// 创建 debug 实例\nconst log = debug('lobe-market-sdk:admin:dependency');\n\n/**\n * 系统依赖管理服务\n * 处理插件系统依赖相关的管理功能\n */\nexport class SystemDependencyService extends BaseSDK {\n /**\n * 创建系统依赖管理服务实例\n * @param options SDK 配置选项\n * @param sharedHeaders 共享的 headers 对象(可选)\n */\n constructor(options: MarketSDKOptions = {}, sharedHeaders?: Record<string, string>) {\n super(options, sharedHeaders);\n log('SystemDependencyService instance created');\n }\n\n /**\n * 获取所有系统依赖项\n * @returns 系统依赖项列表\n */\n async getSystemDependencies(): Promise<{ data: SystemDependency[] }> {\n log('Getting all system dependencies');\n\n const result = await this.request<{ data: SystemDependency[] }>(`/admin/plugins/dependencies`);\n log('Retrieved %d system dependencies', result.data.length);\n return result;\n }\n\n /**\n * 获取特定系统依赖项\n * @param id 依赖项 ID\n * @returns 系统依赖项\n */\n async getSystemDependency(id: number): Promise<{ data: SystemDependency }> {\n log('Getting system dependency details: %d', id);\n\n const result = await this.request<{ data: SystemDependency }>(\n `/admin/plugins/dependencies/${id}`,\n );\n log('System dependency details retrieved');\n return result;\n }\n\n /**\n * 创建系统依赖项\n * @param data 依赖项创建数据\n * @returns 创建的依赖项\n */\n async createSystemDependency(\n data: Omit<SystemDependency, 'id'>,\n ): Promise<{ data: SystemDependency }> {\n log('Creating system dependency: %O', data);\n\n const result = await this.request<{ data: SystemDependency }>(`/admin/plugins/dependencies`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n log('System dependency created successfully');\n return result;\n }\n\n /**\n * 更新系统依赖项\n * @param id 依赖项 ID\n * @param data 依赖项更新数据\n * @returns 更新后的依赖项\n */\n async updateSystemDependency(\n id: number,\n data: Partial<SystemDependency>,\n ): Promise<{ data: SystemDependency }> {\n log('Updating system dependency: %d, data: %O', id, data);\n\n const result = await this.request<{ data: SystemDependency }>(\n `/admin/plugins/dependencies/${id}`,\n {\n method: 'PUT',\n body: JSON.stringify(data),\n },\n );\n log('System dependency updated successfully');\n return result;\n }\n\n /**\n * 删除系统依赖项\n * @param id 依赖项 ID\n * @returns 成功响应\n */\n async deleteSystemDependency(id: number): Promise<{ success: boolean; message: string }> {\n log('删除系统依赖项: %d', id);\n\n const result = await this.request<{ success: boolean; message: string }>(\n `/admin/plugins/dependencies/${id}`,\n { method: 'DELETE' },\n );\n log('系统依赖项删除成功');\n return result;\n }\n} ","import { z } from 'zod';\n\n// 插件类型\nexport const PluginTypeEnum = z.enum(['lobe', 'openai', 'mcp']);\nexport type PluginType = z.infer<typeof PluginTypeEnum>;\n\n// 连接类型\nexport const ConnectionTypeEnum = z.enum(['http', 'stdio']);\nexport type ConnectionType = z.infer<typeof ConnectionTypeEnum>;\n\n// 安装方法\nexport const InstallationMethodEnum = z.enum([\n 'npm',\n 'docker',\n 'git',\n 'binaryUrl',\n 'manual',\n 'none',\n]);\nexport type InstallationMethod = z.infer<typeof InstallationMethodEnum>;\n\n// 系统依赖项\nexport interface SystemDependency {\n name: string;\n type?: string;\n requiredVersion?: string;\n checkCommand?: string;\n installInstructions?: Record<string, string>;\n versionParsingRequired?: boolean;\n notes?: string;\n}\n\n// 连接配置\nexport interface ConnectionConfig {\n type: string;\n command?: string;\n args?: string[];\n url?: string;\n}\n\nexport interface InstallationDetails {\n packageName?: string;\n repositoryUrlToClone?: string;\n setupSteps?: string[];\n}\n// 部署选项\nexport interface DeploymentOption {\n installationMethod: string;\n installationDetails?: InstallationDetails;\n connection: ConnectionConfig;\n isRecommended?: boolean;\n notes?: string;\n systemDependencies?: SystemDependency[];\n}\n\n// 兼容性信息\nexport interface PluginCompatibility {\n platforms?: string[];\n minAppVersion?: string;\n maxAppVersion?: string;\n}\n\n// 插件项\nexport interface PluginItem {\n identifier: string;\n version: string;\n isLatest: boolean;\n name: string;\n createdAt: string;\n type: PluginType;\n manifestUrl?: string;\n manifestVersion: string;\n icon?: string;\n author?: string;\n homepage?: string;\n category?: string;\n connectionType?: ConnectionType;\n compatibility?: PluginCompatibility;\n capabilities: {\n tools: boolean;\n prompts: boolean;\n resources: boolean;\n };\n description: string;\n tags?: string[];\n authRequirement?: string;\n isInstallable?: boolean;\n toolsCount?: number;\n promptsCount?: number;\n resourcesCount?: number;\n isValidated?: boolean;\n installCount?: number;\n ratingAverage?: number;\n ratingCount?: number;\n commentCount?: number;\n}\n\n// 插件列表响应\nexport interface PluginListResponse {\n items: PluginItem[];\n totalCount: number;\n currentPage: number;\n pageSize: number;\n totalPages: number;\n categories: string[];\n tags: string[];\n}\n\n// 工具项定义\nexport interface PluginTool {\n name: string;\n description?: string;\n parameters?: Record<string, any>;\n}\n\n// 资源项定义\nexport interface PluginResource {\n uri: string;\n name?: string;\n mimeType?: string;\n}\n\n// 提示词参数定义\nexport interface PromptArgument {\n name: string;\n required?: boolean;\n description?: string;\n type?: string;\n}\n\n// 提示词项定义\nexport interface PluginPrompt {\n name: string;\n description: string;\n arguments?: PromptArgument[];\n}\n\n// 插件清单\nexport interface PluginManifest {\n id: string;\n name: string;\n version: string;\n description: string;\n category?: string;\n tags?: string[];\n author?: {\n name: string;\n url?: string;\n };\n homepage?: string;\n icon?: string;\n capabilities?: {\n tools?: boolean;\n prompts?: boolean;\n resources?: boolean;\n };\n deploymentOptions?: DeploymentOption[];\n compatibility?: PluginCompatibility;\n // 工具定义\n tools?: PluginTool[];\n // 资源定义\n resources?: PluginResource[];\n // 提示词定义\n prompts?: PluginPrompt[];\n // 验证信息\n isValidated?: boolean;\n validatedAt?: string;\n}\n\n// 市场服务发现文档\nexport interface DiscoveryDocument {\n issuer: string;\n market_index_schema_version: number;\n resource_types_supported: string[];\n resource_endpoints: Record<string, string>;\n manifest_endpoint_template: string | Record<string, string>;\n support_locales: string[];\n response_types_supported: string[];\n authentication?: {\n schemes_supported: Array<'none' | 'apiKey' | 'oauth2'>;\n };\n api_documentation_url?: string;\n policy_url?: string;\n terms_of_service_url?: string;\n}\n\n// SDK 配置选项\nexport interface MarketSDKOptions {\n baseUrl?: string;\n defaultLocale?: string;\n apiKey?: string;\n}\n\n// 管理员 API 相关类型\n\n// 插件数据库模型\nexport interface Plugin {\n id: number;\n identifier: string;\n name: string;\n description: string;\n ownerId: number;\n type: string;\n visibility: 'public' | 'private' | 'unlisted';\n status: 'published' | 'draft' | 'review' | 'rejected';\n isFeatured: boolean;\n category: string;\n tags: string[];\n icon: string | null;\n author: string | null;\n homepage: string | null;\n manifestVersion: string;\n createdAt: string;\n updatedAt: string;\n meta: Record<string, any> | null;\n installCount: number;\n ratingAverage: number | null;\n ratingCount: number;\n reviewCount: number;\n}\n\n// 插件版本数据库模型\nexport interface PluginVersion {\n id: number;\n pluginId: number;\n version: string;\n isLatest: boolean;\n manifestUrl: string | null;\n toolsCount: number;\n promptsCount: number;\n resourcesCount: number;\n isValidated: boolean;\n createdAt: string;\n updatedAt: string;\n manifest: PluginManifest;\n meta: Record<string, any> | null;\n}\n\n// 管理员获取插件列表参数\nexport interface AdminPluginParams {\n status?: 'published' | 'draft' | 'review' | 'rejected';\n visibility?: 'public' | 'private' | 'unlisted';\n featured?: boolean;\n ownerId?: number;\n limit?: number;\n offset?: number;\n orderBy?: 'createdAt' | 'updatedAt' | 'installCount' | 'ratingAverage';\n order?: 'asc' | 'desc';\n}\n\n// 创建插件版本参数\nexport interface PluginVersionCreateParams {\n version: string;\n manifest: PluginManifest;\n manifestUrl?: string;\n isLatest?: boolean;\n isValidated?: boolean;\n meta?: Record<string, any>;\n}\n\n// 更新插件版本参数\nexport interface PluginVersionUpdateParams {\n manifestUrl?: string;\n isValidated?: boolean;\n meta?: Record<string, any>;\n}\n\n// 导出所有类型\nexport * from './common';\nexport * from './plugins';\nexport * from './admin';\n","import { z } from 'zod';\n\n// 插件类型\nexport const PluginTypeEnum = z.enum(['lobe', 'openai', 'mcp']);\nexport type PluginType = z.infer<typeof PluginTypeEnum>;\n\n// 连接类型\nexport const ConnectionTypeEnum = z.enum(['http', 'stdio']);\nexport type ConnectionType = z.infer<typeof ConnectionTypeEnum>;\n\n// 安装方法\nexport const InstallationMethodEnum = z.enum([\n 'npm',\n 'docker',\n 'git',\n 'binaryUrl',\n 'manual',\n 'none',\n]);\nexport type InstallationMethod = z.infer<typeof InstallationMethodEnum>;\n\n// 系统依赖项\nexport interface SystemDependency {\n name: string;\n type?: string;\n requiredVersion?: string;\n checkCommand?: string;\n installInstructions?: Record<string, string>;\n versionParsingRequired?: boolean;\n notes?: string;\n}\n\n// 连接配置\nexport interface ConnectionConfig {\n type: string;\n command?: string;\n args?: string[];\n url?: string;\n}\n\nexport interface InstallationDetails {\n packageName?: string;\n repositoryUrlToClone?: string;\n setupSteps?: string[];\n}\n\n// 部署选项\nexport interface DeploymentOption {\n installationMethod: string;\n installationDetails?: InstallationDetails;\n connection: ConnectionConfig;\n isRecommended?: boolean;\n notes?: string;\n systemDependencies?: SystemDependency[];\n}\n\n// 兼容性信息\nexport interface PluginCompatibility {\n platforms?: string[];\n minAppVersion?: string;\n maxAppVersion?: string;\n}\n\n// 插件项\nexport interface PluginItem {\n identifier: string;\n version: string;\n isLatest: boolean;\n name: string;\n createdAt: string;\n type: PluginType;\n manifestUrl?: string;\n manifestVersion: string;\n icon?: string;\n author?: string;\n homepage?: string;\n category?: string;\n connectionType?: ConnectionType;\n compatibility?: PluginCompatibility;\n capabilities: {\n tools: boolean;\n prompts: boolean;\n resources: boolean;\n };\n description: string;\n tags?: string[];\n authRequirement?: string;\n isInstallable?: boolean;\n toolsCount?: number;\n promptsCount?: number;\n resourcesCount?: number;\n isValidated?: boolean;\n installCount?: number;\n ratingAverage?: number;\n ratingCount?: number;\n commentCount?: number;\n}\n\n// 插件列表响应\nexport interface PluginListResponse {\n items: PluginItem[];\n totalCount: number;\n currentPage: number;\n pageSize: number;\n totalPages: number;\n categories: string[];\n tags: string[];\n}\n\n// 工具项定义\nexport interface PluginTool {\n name: string;\n description?: string;\n parameters?: Record<string, any>;\n}\n\n// 资源项定义\nexport interface PluginResource {\n uri: string;\n name?: string;\n mimeType?: string;\n}\n\n// 提示词参数定义\nexport interface PromptArgument {\n name: string;\n required?: boolean;\n description?: string;\n type?: string;\n}\n\n// 提示词项定义\nexport interface PluginPrompt {\n name: string;\n description: string;\n arguments?: PromptArgument[];\n}\n\n// 插件清单\nexport interface PluginManifest {\n id: string;\n name: string;\n version: string;\n description: string;\n category?: string;\n tags?: string[];\n author?: {\n name: string;\n url?: string;\n };\n homepage?: string;\n icon?: string;\n capabilities?: {\n tools?: boolean;\n prompts?: boolean;\n resources?: boolean;\n };\n deploymentOptions?: DeploymentOption[];\n compatibility?: PluginCompatibility;\n // 工具定义\n tools?: PluginTool[];\n // 资源定义\n resources?: PluginResource[];\n // 提示词定义\n prompts?: PluginPrompt[];\n // 验证信息\n isValidated?: boolean;\n validatedAt?: string;\n}\n\n// 插件查询参数\nexport interface PluginQueryParams {\n page?: number;\n pageSize?: number;\n category?: string;\n tags?: string;\n q?: string;\n sort?: 'installCount' | 'createdAt' | 'updatedAt' | 'ratingAverage';\n order?: 'asc' | 'desc';\n locale?: string;\n} "],"mappings":"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","names":["debug","debug","log","debug","debug","log","debug","log","debug","debug","debug","log","debug","debug","log","debug","log","debug","z","PluginTypeEnum","z","ConnectionTypeEnum","InstallationMethodEnum"]}
|