@lovrabet/sdk 1.3.6 → 1.3.8
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 +48 -2
- package/dist/index.js +1 -1
- package/dist/src/client/index.d.ts +49 -0
- package/dist/src/http/http-client.d.ts +3 -1
- package/dist/src/models/abstract-base-model.d.ts +27 -16
- package/dist/src/types/index.d.ts +39 -15
- package/package.json +1 -1
|
@@ -9,6 +9,55 @@ import { LovrabetClient } from './client';
|
|
|
9
9
|
* 3. 配置优先级 - 明确的配置合并和覆盖规则
|
|
10
10
|
* 4. 错误优先 - 在客户端创建阶段就发现配置问题
|
|
11
11
|
*
|
|
12
|
+
* 四种调用方式:
|
|
13
|
+
*
|
|
14
|
+
* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
15
|
+
* 方式 1:字符串 — 引用预注册的配置名称
|
|
16
|
+
* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
17
|
+
* 适用场景:已在启动时通过 registerModels() 注册过配置,直接按名引用。
|
|
18
|
+
* 示例:
|
|
19
|
+
* registerModels({ appCode: 'my-app', models: [...] }, 'prod');
|
|
20
|
+
* const client = createClient('prod');
|
|
21
|
+
* 省略参数时等价于 createClient('default')。
|
|
22
|
+
*
|
|
23
|
+
* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
24
|
+
* 方式 2:ModelsConfig — 纯模型配置对象(仅 appCode + models)
|
|
25
|
+
* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
26
|
+
* 适用场景:一次性创建客户端,无需预注册;传入最少字段即可。
|
|
27
|
+
* 判断依据:对象同时包含 appCode 和 models,且不包含 env 等 ClientConfig 字段。
|
|
28
|
+
* 示例:
|
|
29
|
+
* const client = createClient({
|
|
30
|
+
* appCode: 'my-app',
|
|
31
|
+
* models: { chat: { modelId: 'gpt-4o' } },
|
|
32
|
+
* });
|
|
33
|
+
* 额外字段(如 runtimeDomain、token)会被透传到最终配置。
|
|
34
|
+
*
|
|
35
|
+
* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
36
|
+
* 方式 3:ClientConfig & { apiConfigName } — 引用注册配置 + 覆盖选项
|
|
37
|
+
* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
38
|
+
* 适用场景:想复用预注册的模型定义,但需要自定义环境、认证等。
|
|
39
|
+
* 合并策略:注册配置提供 appCode + models;其余字段由传入对象覆盖。
|
|
40
|
+
* 示例:
|
|
41
|
+
* registerModels({ appCode: 'my-app', models: [...] }, 'prod');
|
|
42
|
+
* const client = createClient({
|
|
43
|
+
* apiConfigName: 'prod', // 从注册表取模型
|
|
44
|
+
* env: 'staging', // 覆盖为 staging 环境
|
|
45
|
+
* token: 'xxx', // 附加认证信息
|
|
46
|
+
* });
|
|
47
|
+
*
|
|
48
|
+
* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
49
|
+
* 方式 4:ClientConfig — 完整配置对象
|
|
50
|
+
* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
51
|
+
* 适用场景:不依赖任何预注册配置,显式传入全部所需字段。
|
|
52
|
+
* 示例:
|
|
53
|
+
* const client = createClient({
|
|
54
|
+
* appCode: 'my-app',
|
|
55
|
+
* env: 'production',
|
|
56
|
+
* models: { chat: { modelId: 'gpt-4o' } },
|
|
57
|
+
* token: 'xxx',
|
|
58
|
+
* });
|
|
59
|
+
* env 缺省时自动填充 DEFAULTS.ENV;models 缺省时为 {}。
|
|
60
|
+
*
|
|
12
61
|
* @param config - 客户端配置,支持以下类型:
|
|
13
62
|
* - string: 注册的配置名称(如 'default', 'prod')
|
|
14
63
|
* - ModelsConfig: 纯模型配置对象
|
|
@@ -6,7 +6,9 @@ export declare class HttpClient {
|
|
|
6
6
|
constructor(config: ClientConfig, authManager: AuthManager);
|
|
7
7
|
/**
|
|
8
8
|
* 获取 API 基础地址
|
|
9
|
-
* 优先级:
|
|
9
|
+
* 优先级:runtimeDomain > window.__GLOBAL__.deploymentConfig.RUNTIME_API_DOMAIN > getApiEndpoint(env)
|
|
10
|
+
*
|
|
11
|
+
* 注:serverUrl 为 runtimeDomain 的旧名称,向下兼容保留;两者均设置时以 runtimeDomain 优先。
|
|
10
12
|
*/
|
|
11
13
|
getBaseUrl(): string;
|
|
12
14
|
private getFullUrl;
|
|
@@ -37,31 +37,42 @@ export declare abstract class AbstractBaseModel implements BaseModelMethods {
|
|
|
37
37
|
}): Promise<T>;
|
|
38
38
|
create<T = any>(data: Record<string, any>): Promise<T>;
|
|
39
39
|
/**
|
|
40
|
-
*
|
|
41
|
-
* @param id - 单个 ID(string/number)或 ID 数组(最多 1000 条)
|
|
42
|
-
* @param data - 更新数据
|
|
43
|
-
* @returns 更新结果
|
|
40
|
+
* 更新记录,支持单条和批量。
|
|
44
41
|
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
* await model.update(1001,
|
|
42
|
+
* **推荐写法(对象合并)**:将 id 与更新字段合并为一个对象传入:
|
|
43
|
+
* ```typescript
|
|
44
|
+
* await model.update({ id: 1001, name: '张三' });
|
|
45
|
+
* await model.update({ id: [1001, 1002], status: 'active' });
|
|
46
|
+
* ```
|
|
48
47
|
*
|
|
49
|
-
*
|
|
48
|
+
* **兼容写法(id 分离)**:
|
|
49
|
+
* ```typescript
|
|
50
|
+
* await model.update(1001, { name: '张三' });
|
|
50
51
|
* await model.update([1001, 1002, 1003], { status: 'active' });
|
|
52
|
+
* ```
|
|
51
53
|
*/
|
|
52
|
-
update<T = any>(
|
|
54
|
+
update<T = any>(idOrData: string | number | (string | number)[] | {
|
|
55
|
+
id: string | number | (string | number)[];
|
|
56
|
+
[key: string]: any;
|
|
57
|
+
}, data?: Record<string, any>): Promise<T>;
|
|
53
58
|
/**
|
|
54
|
-
*
|
|
55
|
-
* @param id - 单个 ID(string/number)或 ID 数组(最多 1000 条)
|
|
59
|
+
* 删除记录,支持单条和批量。
|
|
56
60
|
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
* await model.delete(1001);
|
|
61
|
+
* **推荐写法(对象传入)**:
|
|
62
|
+
* ```typescript
|
|
63
|
+
* await model.delete({ id: 1001 });
|
|
64
|
+
* await model.delete({ id: [1001, 1002, 1003] });
|
|
65
|
+
* ```
|
|
60
66
|
*
|
|
61
|
-
*
|
|
67
|
+
* **兼容写法(直接传 id)**:
|
|
68
|
+
* ```typescript
|
|
69
|
+
* await model.delete(1001);
|
|
62
70
|
* await model.delete([1001, 1002, 1003]);
|
|
71
|
+
* ```
|
|
63
72
|
*/
|
|
64
|
-
delete(
|
|
73
|
+
delete(idOrParams: string | number | (string | number)[] | {
|
|
74
|
+
id: string | number | (string | number)[];
|
|
75
|
+
}): Promise<void>;
|
|
65
76
|
getSelectOptions(params: SelectOptionsParams): Promise<SelectOption[]>;
|
|
66
77
|
excelExport<T = any>(params?: ListParams): Promise<T>;
|
|
67
78
|
aggregate<T = any>(params?: AggregateParams): Promise<ListResponse<T>>;
|
|
@@ -386,7 +386,21 @@ export interface ModelsConfig {
|
|
|
386
386
|
export interface ClientConfig {
|
|
387
387
|
/** 应用代码,用于标识不同的应用 */
|
|
388
388
|
appCode?: string;
|
|
389
|
-
/**
|
|
389
|
+
/**
|
|
390
|
+
* 运行态 API 域名,优先级最高,可覆盖环境默认端点与部署配置注入的地址。
|
|
391
|
+
* 适用于私有化部署或本地联调。
|
|
392
|
+
*
|
|
393
|
+
* 与 rabetbase-cli/.rabetbase.json 中的 `runtimeDomain` 字段命名对齐。
|
|
394
|
+
*
|
|
395
|
+
* @example 'https://runtime.my-company.com'
|
|
396
|
+
*/
|
|
397
|
+
runtimeDomain?: string;
|
|
398
|
+
/**
|
|
399
|
+
* @deprecated 请使用 `runtimeDomain` 替代。
|
|
400
|
+
* 为向下兼容而保留,优先级低于 `runtimeDomain`;
|
|
401
|
+
* 两者均设置时以 `runtimeDomain` 为准。
|
|
402
|
+
* 下一个大版本将移除此字段。
|
|
403
|
+
*/
|
|
390
404
|
serverUrl?: string;
|
|
391
405
|
/** 运行环境,默认为 'production'(向下兼容 'online') */
|
|
392
406
|
env?: Environment;
|
|
@@ -511,33 +525,43 @@ export interface BaseModelMethods {
|
|
|
511
525
|
/**
|
|
512
526
|
* 更新数据,支持单条和批量
|
|
513
527
|
* @template T 返回数据的类型
|
|
514
|
-
*
|
|
515
|
-
*
|
|
516
|
-
* @returns 返回更新后的数据
|
|
517
|
-
* @example
|
|
528
|
+
*
|
|
529
|
+
* **推荐写法(对象合并)**:将 id 与更新字段合并为一个对象传入:
|
|
518
530
|
* ```typescript
|
|
519
|
-
*
|
|
520
|
-
* await model.update(1001,
|
|
531
|
+
* await model.update({ id: 1001, name: '张三' });
|
|
532
|
+
* await model.update({ id: [1001, 1002], status: 'active' });
|
|
533
|
+
* ```
|
|
521
534
|
*
|
|
522
|
-
*
|
|
523
|
-
*
|
|
535
|
+
* **兼容写法(id 分离)**:
|
|
536
|
+
* ```typescript
|
|
537
|
+
* await model.update(1001, { name: '张三' });
|
|
538
|
+
* await model.update([1001, 1002], { status: 'active' });
|
|
524
539
|
* ```
|
|
525
540
|
*/
|
|
541
|
+
update<T = any>(dataWithId: {
|
|
542
|
+
id: string | number | (string | number)[];
|
|
543
|
+
[key: string]: any;
|
|
544
|
+
}): Promise<T>;
|
|
526
545
|
update<T = any>(id: string | number | (string | number)[], data: Record<string, any>): Promise<T>;
|
|
527
546
|
/**
|
|
528
547
|
* 删除数据,支持单条和批量
|
|
529
|
-
* @param id 单个 ID(string/number)或 ID 数组(最多 1000 条)
|
|
530
|
-
* @returns Promise<void>
|
|
531
548
|
* @throws Error OpenAPI 模式暂不支持此操作,仅 WebAPI 模式可用
|
|
532
|
-
*
|
|
549
|
+
*
|
|
550
|
+
* **推荐写法(对象传入)**:
|
|
533
551
|
* ```typescript
|
|
534
|
-
*
|
|
535
|
-
* await model.delete(1001);
|
|
552
|
+
* await model.delete({ id: 1001 });
|
|
553
|
+
* await model.delete({ id: [1001, 1002, 1003] });
|
|
554
|
+
* ```
|
|
536
555
|
*
|
|
537
|
-
*
|
|
556
|
+
* **兼容写法(直接传 id)**:
|
|
557
|
+
* ```typescript
|
|
558
|
+
* await model.delete(1001);
|
|
538
559
|
* await model.delete([1001, 1002, 1003]);
|
|
539
560
|
* ```
|
|
540
561
|
*/
|
|
562
|
+
delete(params: {
|
|
563
|
+
id: string | number | (string | number)[];
|
|
564
|
+
}): Promise<void>;
|
|
541
565
|
delete(id: string | number | (string | number)[]): Promise<void>;
|
|
542
566
|
/**
|
|
543
567
|
* 获取下拉选项
|