apaas-oapi-client 0.1.37 → 0.1.38

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.
@@ -1,674 +0,0 @@
1
- import { LoggerLevel } from './logger';
2
- /**
3
- * 批量操作结果
4
- */
5
- interface BatchResult<T> {
6
- /** 成功的项 */
7
- success: T[];
8
- /** 失败的项 */
9
- failed: Array<{
10
- id: string;
11
- error: string;
12
- }>;
13
- /** 成功数量 */
14
- successCount: number;
15
- /** 失败数量 */
16
- failedCount: number;
17
- /** 总数 */
18
- total: number;
19
- }
20
- /**
21
- * 重试配置
22
- */
23
- interface RetryOptions {
24
- /** 最大重试次数 */
25
- maxRetries?: number;
26
- /** 初始延迟时间(ms) */
27
- initialDelay?: number;
28
- /** 最大延迟时间(ms) */
29
- maxDelay?: number;
30
- /** 延迟倍数 */
31
- backoffMultiplier?: number;
32
- }
33
- /**
34
- * Client 初始化配置
35
- */
36
- interface ClientOptions {
37
- /** 命名空间, 例如 app_xxx */
38
- namespace: string;
39
- /** 应用 clientId */
40
- clientId: string;
41
- /** 应用 clientSecret */
42
- clientSecret: string;
43
- /** 是否禁用 token 缓存, 每次调用强制刷新 token, 默认 false */
44
- disableTokenCache?: boolean;
45
- }
46
- /**
47
- * aPaaS OpenAPI 客户端
48
- */
49
- declare class Client {
50
- private clientId;
51
- private clientSecret;
52
- private namespace;
53
- private disableTokenCache;
54
- private accessToken;
55
- private expireTime;
56
- private axiosInstance;
57
- private loggerLevel;
58
- /**
59
- * 构造函数
60
- * @param options ClientOptions
61
- */
62
- constructor(options: ClientOptions);
63
- /**
64
- * 设置日志等级
65
- * @param level LoggerLevel
66
- */
67
- setLoggerLevel(level: LoggerLevel): void;
68
- /**
69
- * 日志打印方法
70
- * @param level LoggerLevel
71
- * @param args 打印内容
72
- */
73
- private log;
74
- /**
75
- * 初始化 client, 自动获取 token
76
- */
77
- init(): Promise<void>;
78
- /**
79
- * 获取 accessToken
80
- */
81
- private getAccessToken;
82
- /**
83
- * 确保 token 有效, 若过期则刷新
84
- */
85
- private ensureTokenValid;
86
- /**
87
- * 获取当前 accessToken
88
- */
89
- get token(): string | null;
90
- /**
91
- * 获取当前 token 剩余过期时间(单位:秒)
92
- * @returns 剩余秒数,若无 token 则返回 null
93
- */
94
- get tokenExpireTime(): number | null;
95
- /**
96
- * 获取当前 namespace
97
- */
98
- get currentNamespace(): string;
99
- /**
100
- * 对象模块
101
- */
102
- object: {
103
- /**
104
- * 列出所有对象(数据表)
105
- * @param params 请求参数 { offset?, filter?, limit? }
106
- * @returns 接口返回结果 { code, items, total, msg, has_more }
107
- */
108
- list: (params?: {
109
- offset?: number;
110
- filter?: {
111
- type?: string;
112
- quickQuery?: string;
113
- };
114
- limit?: number;
115
- }) => Promise<any>;
116
- /**
117
- * 列出所有对象(数据表)- 支持自动分页查询
118
- * @description 该方法会自动处理分页,直到没有更多数据为止
119
- * @param params 请求参数 { filter?, limit? }
120
- * @returns { code, msg, items, total, failed? } - code 表示失败的分页数量
121
- */
122
- listWithIterator: (params?: {
123
- filter?: {
124
- type?: string;
125
- quickQuery?: string;
126
- };
127
- limit?: number;
128
- }) => Promise<{
129
- code: string;
130
- msg: string;
131
- items: any[];
132
- total: number;
133
- failed?: Array<{
134
- offset: number;
135
- limit: number;
136
- code: string;
137
- msg: string;
138
- }>;
139
- }>;
140
- metadata: {
141
- /**
142
- * 获取指定对象下指定字段的元数据
143
- * @description 查询指定对象下的单个字段元数据
144
- * @param params 请求参数 { object_name, field_name }
145
- * @returns 接口返回结果
146
- */
147
- field: (params: {
148
- object_name: string;
149
- field_name: string;
150
- }) => Promise<any>;
151
- /**
152
- * 获取指定对象的所有字段信息
153
- * @description 查询指定对象下的所有字段元数据
154
- * @param params 请求参数 { object_name }
155
- * @returns 接口返回结果
156
- */
157
- fields: (params: {
158
- object_name: string;
159
- }) => Promise<any>;
160
- /**
161
- * 导出数据对象元数据为 Markdown 文档
162
- * @description 将数据对象的字段信息导出为详细的 Markdown 文档,包含字段类型、配置、选项等完整信息
163
- * @param options 导出配置
164
- * @param options.object_names 可选,要导出的对象名称数组。如果不传,则导出所有对象
165
- * @returns Markdown 文档字符串
166
- * @example
167
- * ```typescript
168
- * // 导出所有对象
169
- * const markdown = await client.object.metadata.export2markdown();
170
- *
171
- * // 只导出指定对象
172
- * const markdown = await client.object.metadata.export2markdown({
173
- * object_names: ['object_store', 'object_order', '_user']
174
- * });
175
- *
176
- * // 结合 listWithIterator 使用
177
- * const allObjects = await client.object.listWithIterator();
178
- * const objectNames = allObjects.items.map(obj => obj.apiName);
179
- * const markdown = await client.object.metadata.export2markdown({
180
- * object_names: objectNames
181
- * });
182
- *
183
- * // 保存到文件
184
- * fs.writeFileSync('objects_doc.md', markdown, 'utf-8');
185
- * ```
186
- */
187
- export2markdown: (options?: {
188
- object_names?: string[];
189
- }) => Promise<string>;
190
- };
191
- search: {
192
- /**
193
- * 单条记录查询
194
- * @description 查询指定对象下的单条记录
195
- * @param params 请求参数
196
- * @returns 接口返回结果
197
- */
198
- record: (params: {
199
- object_name: string;
200
- record_id: string;
201
- select: string[];
202
- }) => Promise<any>;
203
- /**
204
- * 多条记录查询 - 最多传入 100 条
205
- * @description 查询指定对象下的多条记录
206
- * @param params 请求参数
207
- * @returns 接口返回结果
208
- */
209
- records: (params: {
210
- object_name: string;
211
- data: any;
212
- }) => Promise<any>;
213
- /**
214
- * 查询所有记录 - 支持超过 100 条数据,自动分页查询
215
- * @description 该方法会自动处理分页,直到没有更多数据为止
216
- * @param params 请求参数
217
- * @returns { total, items }
218
- */
219
- recordsWithIterator: (params: {
220
- object_name: string;
221
- data: any;
222
- }) => Promise<{
223
- total: number;
224
- items: any[];
225
- }>;
226
- /**
227
- * 统计记录数量
228
- * @description 统计指定对象中的记录总数,支持按条件统计
229
- * @param params 请求参数 { object_name, data? }
230
- * @returns 接口返回结果 { code, total, msg }
231
- */
232
- count: (params: {
233
- object_name: string;
234
- data?: any;
235
- }) => Promise<any>;
236
- };
237
- create: {
238
- /**
239
- * 单条记录创建
240
- * @description 创建单条记录到指定对象中
241
- * @param params 请求参数 { object_name, record }
242
- * @returns 接口返回结果
243
- */
244
- record: (params: {
245
- object_name: string;
246
- record: any;
247
- }) => Promise<any>;
248
- /**
249
- * 批量创建记录 - 最多传入 100 条
250
- * @description 创建多条记录到指定对象中
251
- * @param params 请求参数 { object_name, records }
252
- * @returns 接口返回结果
253
- */
254
- records: (params: {
255
- object_name: string;
256
- records: any[];
257
- }) => Promise<any>;
258
- /**
259
- * 分批创建所有记录 - 支持超过 100 条数据,自动拆分
260
- * @description 创建多条记录到指定对象中,超过 100 条数据会自动拆分为多次请求
261
- * @param params 请求参数 { object_name, records, limit }
262
- * @returns { total, success, failed, successCount, failedCount }
263
- */
264
- recordsWithIterator: (params: {
265
- object_name: string;
266
- records: any[];
267
- limit?: number;
268
- }) => Promise<{
269
- total: number;
270
- success: Array<{
271
- _id: string;
272
- success: true;
273
- }>;
274
- failed: Array<{
275
- _id: string;
276
- success: false;
277
- error?: string;
278
- }>;
279
- successCount: number;
280
- failedCount: number;
281
- }>;
282
- };
283
- update: {
284
- /**
285
- * 单条更新
286
- * @description 更新指定对象下的单条记录
287
- * @param params 请求参数
288
- * @returns 接口返回结果
289
- */
290
- record: (params: {
291
- object_name: string;
292
- record_id: string;
293
- record: any;
294
- }) => Promise<any>;
295
- /**
296
- * 多条更新 - 最多传入 100 条
297
- * @description 更新指定对象下的多条记录
298
- * @param params 请求参数
299
- * @returns 接口返回结果
300
- */
301
- records: (params: {
302
- object_name: string;
303
- records: any[];
304
- }) => Promise<any>;
305
- /**
306
- * 批量更新 - 支持超过 100 条数据,自动拆分
307
- * @description 更新指定对象下的多条记录,超过 100 条数据会自动拆分为多次请求
308
- * @param params 请求参数,包含 object_name, records, limit
309
- * @returns { total, success, failed, successCount, failedCount }
310
- */
311
- recordsWithIterator: (params: {
312
- object_name: string;
313
- records: any[];
314
- limit?: number;
315
- }) => Promise<{
316
- total: number;
317
- success: Array<{
318
- _id: string;
319
- success: true;
320
- }>;
321
- failed: Array<{
322
- _id: string;
323
- success: false;
324
- error?: string;
325
- }>;
326
- successCount: number;
327
- failedCount: number;
328
- }>;
329
- };
330
- delete: {
331
- /**
332
- * 单条删除
333
- * @description 删除指定对象下的单条记录
334
- * @param params 请求参数,包含 object_name 和 record_id
335
- * @returns 接口返回结果
336
- */
337
- record: (params: {
338
- object_name: string;
339
- record_id: string;
340
- }) => Promise<any>;
341
- /**
342
- * 多条删除 - 最多传入 100 条
343
- * @description 删除指定对象下的多条记录
344
- * @param params 请求参数,包含 object_name 和 ids 数组
345
- * @returns 接口返回结果
346
- */
347
- records: (params: {
348
- object_name: string;
349
- ids: string[];
350
- }) => Promise<any>;
351
- /**
352
- * 批量删除
353
- * @description 删除指定对象下的多条记录,超过 100 条数据会自动拆分为多次请求
354
- * @param params 请求参数,包含 object_name, ids 数组 和 可选的 limit
355
- * @returns { total, success, failed, successCount, failedCount }
356
- */
357
- recordsWithIterator: (params: {
358
- object_name: string;
359
- ids: string[];
360
- limit?: number;
361
- }) => Promise<{
362
- total: number;
363
- success: Array<{
364
- _id: string;
365
- success: true;
366
- }>;
367
- failed: Array<{
368
- _id: string;
369
- success: false;
370
- error?: string;
371
- }>;
372
- successCount: number;
373
- failedCount: number;
374
- }>;
375
- };
376
- };
377
- /**
378
- * 部门 ID 交换模块
379
- */
380
- department: {
381
- /**
382
- * 单个部门 ID 交换
383
- * @param params 请求参数
384
- * @returns 单个部门映射结果
385
- */
386
- exchange: (params: {
387
- department_id_type: "department_id" | "external_department_id" | "external_open_department_id";
388
- department_id: string;
389
- }) => Promise<any>;
390
- /**
391
- * 批量部门 ID 交换
392
- * @param params 请求参数
393
- * @returns 批量操作结果,包含成功和失败的详细信息
394
- */
395
- batchExchange: (params: {
396
- department_id_type: "department_id" | "external_department_id" | "external_open_department_id";
397
- department_ids: string[];
398
- retryOptions?: RetryOptions;
399
- }) => Promise<BatchResult<any>>;
400
- };
401
- /**
402
- * 用户 ID 交换模块
403
- */
404
- user: {
405
- /**
406
- * 单个用户 ID 交换
407
- * @param params 请求参数
408
- * @returns 单个用户映射结果
409
- */
410
- exchange: (params: {
411
- user_id_type: "user_id" | "external_user_id" | "external_open_id";
412
- user_id: string;
413
- feishu_app_id: string;
414
- }) => Promise<any>;
415
- /**
416
- * 批量用户 ID 交换
417
- * @param params 请求参数
418
- * @returns 批量操作结果,包含成功和失败的详细信息
419
- */
420
- batchExchange: (params: {
421
- user_id_type: "user_id" | "external_user_id" | "external_open_id";
422
- user_ids: string[];
423
- feishu_app_id: string;
424
- retryOptions?: RetryOptions;
425
- }) => Promise<BatchResult<any>>;
426
- };
427
- /**
428
- * 云函数模块
429
- */
430
- function: {
431
- /**
432
- * 调用云函数
433
- * @param params 请求参数 { name: string; params: any }
434
- * @returns 接口返回结果
435
- */
436
- invoke: (params: {
437
- name: string;
438
- params: any;
439
- }) => Promise<any>;
440
- };
441
- /**
442
- * 页面模块
443
- */
444
- page: {
445
- /**
446
- * 获取所有页面
447
- * @param params 请求参数 { limit: number (max 200), offset: number }
448
- * @returns 接口返回结果
449
- */
450
- list: (params: {
451
- limit: number;
452
- offset: number;
453
- }) => Promise<any>;
454
- /**
455
- * 获取所有页面 - 支持自动分页,获取全部数据
456
- * @description 该方法会自动处理分页,直到获取所有页面数据
457
- * @param params 请求参数 { limit?: number }
458
- * @returns { total, items }
459
- */
460
- listWithIterator: (params?: {
461
- limit?: number;
462
- }) => Promise<{
463
- total: number;
464
- items: any[];
465
- }>;
466
- /**
467
- * 获取页面详情
468
- * @param params 请求参数 { page_id: string }
469
- * @returns 接口返回结果
470
- */
471
- detail: (params: {
472
- page_id: string;
473
- }) => Promise<any>;
474
- /**
475
- * 获取页面访问地址
476
- * @param params 请求参数 { page_id: string, pageParams?: any, parentPageParams?: any, navId?: string, tabId?: string }
477
- * @returns 接口返回结果
478
- */
479
- url: (params: {
480
- page_id: string;
481
- pageParams?: any;
482
- parentPageParams?: any;
483
- navId?: string;
484
- tabId?: string;
485
- }) => Promise<any>;
486
- };
487
- /**
488
- * 附件模块
489
- */
490
- attachment: {
491
- /**
492
- * 文件操作
493
- */
494
- file: {
495
- /**
496
- * 上传文件
497
- * @param params 请求参数 { file: any }
498
- * @returns 接口返回结果
499
- */
500
- upload: (params: {
501
- file: any;
502
- }) => Promise<any>;
503
- /**
504
- * 下载文件
505
- * @param params 请求参数 { file_id: string }
506
- * @returns 文件二进制流
507
- */
508
- download: (params: {
509
- file_id: string;
510
- }) => Promise<any>;
511
- /**
512
- * 删除文件
513
- * @param params 请求参数 { file_id: string }
514
- * @returns 接口返回结果
515
- */
516
- delete: (params: {
517
- file_id: string;
518
- }) => Promise<any>;
519
- };
520
- /**
521
- * 头像图片操作
522
- */
523
- avatar: {
524
- /**
525
- * 上传头像图片
526
- * @param params 请求参数 { image: any }
527
- * @returns 接口返回结果
528
- */
529
- upload: (params: {
530
- image: any;
531
- }) => Promise<any>;
532
- /**
533
- * 下载头像图片
534
- * @param params 请求参数 { image_id: string }
535
- * @returns 图片二进制流
536
- */
537
- download: (params: {
538
- image_id: string;
539
- }) => Promise<any>;
540
- };
541
- };
542
- /**
543
- * 全局数据模块
544
- */
545
- global: {
546
- /**
547
- * 全局选项
548
- */
549
- options: {
550
- /**
551
- * 查询全局选项详情
552
- * @param params 请求参数 { api_name: string }
553
- * @returns 接口返回结果
554
- */
555
- detail: (params: {
556
- api_name: string;
557
- }) => Promise<any>;
558
- /**
559
- * 查询全局选项列表
560
- * @param params 请求参数 { limit: number, offset: number, filter?: { quickQuery?: string } }
561
- * @returns 接口返回结果
562
- */
563
- list: (params: {
564
- limit: number;
565
- offset: number;
566
- filter?: {
567
- quickQuery?: string;
568
- };
569
- }) => Promise<any>;
570
- /**
571
- * 查询所有全局选项 - 支持自动分页,获取全部数据
572
- * @description 该方法会自动处理分页,直到获取所有全局选项数据
573
- * @param params 请求参数 { limit?: number, filter?: { quickQuery?: string } }
574
- * @returns { total, items }
575
- */
576
- listWithIterator: (params?: {
577
- limit?: number;
578
- filter?: {
579
- quickQuery?: string;
580
- };
581
- }) => Promise<{
582
- total: number;
583
- items: any[];
584
- }>;
585
- };
586
- /**
587
- * 环境变量
588
- */
589
- variables: {
590
- /**
591
- * 查询环境变量详情
592
- * @param params 请求参数 { api_name: string }
593
- * @returns 接口返回结果
594
- */
595
- detail: (params: {
596
- api_name: string;
597
- }) => Promise<any>;
598
- /**
599
- * 查询环境变量列表
600
- * @param params 请求参数 { limit: number, offset: number, filter?: { quickQuery?: string } }
601
- * @returns 接口返回结果
602
- */
603
- list: (params: {
604
- limit: number;
605
- offset: number;
606
- filter?: {
607
- quickQuery?: string;
608
- };
609
- }) => Promise<any>;
610
- /**
611
- * 查询所有环境变量 - 支持自动分页,获取全部数据
612
- * @description 该方法会自动处理分页,直到获取所有环境变量数据
613
- * @param params 请求参数 { limit?: number, filter?: { quickQuery?: string } }
614
- * @returns { total, items }
615
- */
616
- listWithIterator: (params?: {
617
- limit?: number;
618
- filter?: {
619
- quickQuery?: string;
620
- };
621
- }) => Promise<{
622
- total: number;
623
- items: any[];
624
- }>;
625
- };
626
- };
627
- /**
628
- * 自动化流程模块
629
- */
630
- automation: {
631
- /**
632
- * V1 版本
633
- */
634
- v1: {
635
- /**
636
- * 执行流程
637
- * @param params 请求参数 { flow_api_name: string, operator: { _id: number, email: string }, params: any }
638
- * @returns 接口返回结果
639
- */
640
- execute: (params: {
641
- flow_api_name: string;
642
- operator: {
643
- _id: number;
644
- email: string;
645
- };
646
- params: any;
647
- }) => Promise<any>;
648
- };
649
- /**
650
- * V2 版本
651
- */
652
- v2: {
653
- /**
654
- * 执行流程
655
- * @param params 请求参数 { flow_api_name: string, operator: { _id: number, email: string }, params: any, is_resubmit?: boolean, pre_instance_id?: string }
656
- * @returns 接口返回结果
657
- */
658
- execute: (params: {
659
- flow_api_name: string;
660
- operator: {
661
- _id: number;
662
- email: string;
663
- };
664
- params: any;
665
- is_resubmit?: boolean;
666
- pre_instance_id?: string;
667
- }) => Promise<any>;
668
- };
669
- };
670
- }
671
- export declare const apaas: {
672
- Client: typeof Client;
673
- };
674
- export type { BatchResult, RetryOptions };
@@ -1,17 +0,0 @@
1
- import Bottleneck from 'bottleneck';
2
- /**
3
- * 默认 apaas 限流配置
4
- */
5
- export declare const apaasLimiterOptions: {
6
- minTime: number;
7
- reservoir: number;
8
- reservoirRefreshAmount: number;
9
- reservoirRefreshInterval: number;
10
- };
11
- /**
12
- * 创建限流器
13
- * @param fn 被限流函数
14
- * @param options 自定义限流配置
15
- * @returns 包装后的限流函数
16
- */
17
- export declare function functionLimiter<T>(fn: () => Promise<T>, options?: Partial<Bottleneck.ConstructorOptions>): Promise<T>;
@@ -1,11 +0,0 @@
1
- /**
2
- * 日志等级枚举
3
- */
4
- export declare enum LoggerLevel {
5
- fatal = 0,
6
- error = 1,
7
- warn = 2,
8
- info = 3,
9
- debug = 4,
10
- trace = 5
11
- }