@nest-packages/nestjs-lark-sdk 0.1.0 → 0.1.1

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.
Files changed (53) hide show
  1. package/dist/bitable-base-field.d.ts +177 -0
  2. package/dist/bitable-base-field.js +188 -0
  3. package/dist/bitable-base-field.js.map +1 -0
  4. package/dist/bitable-base-record.d.ts +211 -0
  5. package/dist/bitable-base-record.js +276 -0
  6. package/dist/bitable-base-record.js.map +1 -0
  7. package/dist/bitable-base.abstract.d.ts +18 -0
  8. package/dist/bitable-base.abstract.js +68 -0
  9. package/dist/bitable-base.abstract.js.map +1 -0
  10. package/dist/contact-base.d.ts +333 -0
  11. package/dist/contact-base.js +238 -0
  12. package/dist/contact-base.js.map +1 -0
  13. package/dist/feishu-base-plus.d.ts +19 -0
  14. package/dist/feishu-base-plus.js +187 -0
  15. package/dist/feishu-base-plus.js.map +1 -0
  16. package/dist/feishu-code.d.ts +22 -0
  17. package/dist/feishu-code.js +26 -0
  18. package/dist/feishu-code.js.map +1 -0
  19. package/dist/feishu.constants.d.ts +2 -0
  20. package/dist/feishu.constants.js +6 -0
  21. package/dist/feishu.constants.js.map +1 -0
  22. package/dist/feishu.utils.d.ts +5 -0
  23. package/dist/feishu.utils.js +23 -0
  24. package/dist/feishu.utils.js.map +1 -0
  25. package/dist/im-base.config.d.ts +3 -0
  26. package/dist/im-base.config.js +18 -0
  27. package/dist/im-base.config.js.map +1 -0
  28. package/dist/im-base.d.ts +96 -0
  29. package/dist/im-base.js +270 -0
  30. package/dist/im-base.js.map +1 -0
  31. package/dist/im-base.type.d.ts +19 -0
  32. package/dist/im-base.type.js +3 -0
  33. package/dist/im-base.type.js.map +1 -0
  34. package/dist/index.d.ts +8 -0
  35. package/dist/index.js +25 -0
  36. package/dist/index.js.map +1 -0
  37. package/dist/nestjs-lark-sdk.module.d.ts +9 -0
  38. package/dist/nestjs-lark-sdk.module.js +95 -0
  39. package/dist/nestjs-lark-sdk.module.js.map +1 -0
  40. package/dist/nestjs-lark-sdk.service.d.ts +2 -0
  41. package/dist/nestjs-lark-sdk.service.js +17 -0
  42. package/dist/nestjs-lark-sdk.service.js.map +1 -0
  43. package/dist/tsconfig.build.tsbuildinfo +1 -0
  44. package/dist/type.bitable.d.ts +9 -0
  45. package/dist/type.bitable.js +3 -0
  46. package/dist/type.bitable.js.map +1 -0
  47. package/dist/type.d.ts +63 -0
  48. package/dist/type.js +3 -0
  49. package/dist/type.js.map +1 -0
  50. package/dist/types/index.d.ts +168 -0
  51. package/dist/types/index.js +3 -0
  52. package/dist/types/index.js.map +1 -0
  53. package/package.json +13 -6
@@ -0,0 +1,276 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BitableRecordBase = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ const _ = require("lodash");
6
+ const lodash_1 = require("lodash");
7
+ const bitable_base_field_1 = require("./bitable-base-field");
8
+ const feishu_code_1 = require("./feishu-code");
9
+ class BitableRecordBase extends bitable_base_field_1.BitableFieldBase {
10
+ constructor(feishuBaseInstance, bitableUrl) {
11
+ super(feishuBaseInstance, bitableUrl);
12
+ this.logger = new common_1.Logger(BitableRecordBase.name);
13
+ this.larkClient = feishuBaseInstance.larkClient;
14
+ }
15
+ async getBitablePath(bitableUrl) {
16
+ return await this.getPath(bitableUrl || this.bitableUrl);
17
+ }
18
+ async setBitablePath(path) {
19
+ if (path) {
20
+ if ((0, lodash_1.isString)(path)) {
21
+ this.bitablePath = await this.getBitablePath(path);
22
+ }
23
+ else {
24
+ this.bitablePath = path;
25
+ }
26
+ }
27
+ if (!this.bitablePath) {
28
+ throw new Error('bitablePath 未设置');
29
+ }
30
+ return this.bitablePath;
31
+ }
32
+ async getRecordById(record_id, bitableUrl, user_id_type = 'union_id') {
33
+ const bitablePath = await this.getBitablePath(bitableUrl);
34
+ const recordRes = await this.larkClient.bitable.appTableRecord.get({
35
+ params: {
36
+ user_id_type,
37
+ with_shared_url: true,
38
+ display_formula_ref: true,
39
+ },
40
+ path: Object.assign(Object.assign({}, bitablePath), { record_id }),
41
+ });
42
+ if (recordRes.code === feishu_code_1.CODE_SUCCESS) {
43
+ return recordRes.data.record;
44
+ }
45
+ else {
46
+ }
47
+ return null;
48
+ }
49
+ async batchGetRecord(record_ids, bitableUrl, user_id_type = 'union_id') {
50
+ const bitablePath = await this.getBitablePath(bitableUrl);
51
+ const recordRes = await this.larkClient.bitable.appTableRecord.batchGet({
52
+ data: {
53
+ record_ids,
54
+ user_id_type,
55
+ with_shared_url: true,
56
+ },
57
+ path: Object.assign({}, bitablePath),
58
+ });
59
+ if (recordRes.code === feishu_code_1.CODE_SUCCESS) {
60
+ return recordRes.data.records;
61
+ }
62
+ else {
63
+ }
64
+ return null;
65
+ }
66
+ async recordUpdate(record_id, fields, bitableUrl) {
67
+ const bitablePath = await this.getBitablePath(bitableUrl);
68
+ try {
69
+ const res = await this.larkClient.bitable.appTableRecord.update({
70
+ data: {
71
+ fields,
72
+ },
73
+ params: {
74
+ user_id_type: 'open_id',
75
+ },
76
+ path: Object.assign(Object.assign({}, bitablePath), { record_id }),
77
+ });
78
+ if (res.code === feishu_code_1.CODE_SUCCESS) {
79
+ return res.data.record;
80
+ }
81
+ else {
82
+ }
83
+ return null;
84
+ }
85
+ catch (error) {
86
+ this.logger.error('BitableRecordBase_recordUpdate 程序执行报错', error);
87
+ return null;
88
+ }
89
+ }
90
+ async search(payloadData, payloadParams, path) {
91
+ const { larkClient } = this;
92
+ const res = await larkClient.bitable.appTableRecord.search({
93
+ data: payloadData,
94
+ params: payloadParams,
95
+ path,
96
+ });
97
+ if (res.code !== feishu_code_1.CODE_SUCCESS) {
98
+ }
99
+ return res;
100
+ }
101
+ async searchAllRecord(payloadData, payloadParams, path) {
102
+ var _a;
103
+ let items = [];
104
+ const res = await this.search(payloadData, payloadParams, path);
105
+ if (res.code !== feishu_code_1.CODE_SUCCESS) {
106
+ return items;
107
+ }
108
+ else {
109
+ items = res.data.items;
110
+ }
111
+ this.logger.debug(`searchAllRecord ${payloadParams.page_token} code: ${res === null || res === void 0 ? void 0 : res.code} has_more: ${(_a = res === null || res === void 0 ? void 0 : res.data) === null || _a === void 0 ? void 0 : _a.has_more}`);
112
+ if (res.data.has_more) {
113
+ const nextItems = await this.searchAllRecord(payloadData, Object.assign(Object.assign({}, payloadParams), { page_token: res.data.page_token }), path);
114
+ return items.concat(nextItems);
115
+ }
116
+ return items;
117
+ }
118
+ async createRecord(fields) {
119
+ const path = this.bitablePath;
120
+ this.logger.log('createRecord', path);
121
+ let res = await this.larkClient.bitable.appTableRecord.create({
122
+ data: {
123
+ fields,
124
+ },
125
+ path,
126
+ });
127
+ if (res.code === feishu_code_1.FieldNameNotFound) {
128
+ this.logger.debug('BitableCreateFieldNotFound start');
129
+ this.logger.debug('BitableCreateFieldNotFound end');
130
+ setTimeout(async () => {
131
+ console.log('fields', fields, path);
132
+ res = await this.larkClient.bitable.appTableRecord.create({
133
+ data: {
134
+ fields,
135
+ },
136
+ path,
137
+ });
138
+ if (res.code !== feishu_code_1.CODE_SUCCESS) {
139
+ this.logger.error(`BitableRecordBase_createRecord 创建失败`, res, fields);
140
+ throw new Error(`BitableRecordBase_createRecord 创建失败`);
141
+ }
142
+ }, 6000);
143
+ }
144
+ return res;
145
+ }
146
+ fetchBatchBitTableParamsChunk(records, chunkSize = 500) {
147
+ return _.chunk(records, chunkSize);
148
+ }
149
+ async appTableRecordBatchDelete(records, bitablePath) {
150
+ const recordsChuck = this.fetchBatchBitTableParamsChunk(records);
151
+ const client = this.larkClient;
152
+ const opRes = {
153
+ fail: 0,
154
+ success: 0,
155
+ };
156
+ for (const recordChuck of recordsChuck) {
157
+ try {
158
+ const res = await client.bitable.appTableRecord.batchDelete({
159
+ data: {
160
+ records: recordChuck,
161
+ },
162
+ path: bitablePath,
163
+ });
164
+ if (res.code === feishu_code_1.CODE_SUCCESS) {
165
+ opRes.success = res.data.records.length + opRes.success;
166
+ }
167
+ else {
168
+ opRes.fail = res.data.records.length + opRes.fail;
169
+ }
170
+ }
171
+ catch (error) {
172
+ opRes.fail = recordChuck.length + opRes.fail;
173
+ this.logger.error('BitableRecordBase_appTableRecordBatchDelete 程序执行报错', error === null || error === void 0 ? void 0 : error.stack, error === null || error === void 0 ? void 0 : error.response);
174
+ }
175
+ }
176
+ return opRes;
177
+ }
178
+ async batchBitableControl(records, bitablePath, chunkSize = 500, user_id_type = 'open_id') {
179
+ try {
180
+ const updateList = records.filter((record) => record.record_id);
181
+ const addList = records.filter((record) => !record.record_id);
182
+ this.logger.debug('同步新增数据开始');
183
+ const addRes = await this.updateBitableRecords(addList, 'add', bitablePath, chunkSize, user_id_type);
184
+ this.logger.debug('同步新增数据结束');
185
+ this.logger.debug('同步编辑数据开始');
186
+ const updateRes = await this.updateBitableRecords(updateList, 'edit', bitablePath, chunkSize, user_id_type);
187
+ this.logger.debug('同步编辑数据结束');
188
+ return {
189
+ edit: updateRes,
190
+ add: addRes,
191
+ };
192
+ }
193
+ catch (error) {
194
+ throw new Error(error === null || error === void 0 ? void 0 : error.stack);
195
+ }
196
+ }
197
+ async updateBitableRecords(recordsList, opType, bitablePath, chunkSize = 500, user_id_type = 'open_id') {
198
+ const client = this.larkClient;
199
+ const chunkRecordList = await this.fetchBatchBitTableParamsChunk(recordsList, chunkSize);
200
+ const opTextMap = {
201
+ edit: '编辑',
202
+ add: '添加',
203
+ };
204
+ let successTotal = 0;
205
+ let failTotal = 0;
206
+ let idx = 0;
207
+ const chunkRecordListLen = chunkRecordList.length;
208
+ for (const [index, item] of chunkRecordList.entries()) {
209
+ this.logger.debug(`updateBitableRecords-${opType} 开始处理 ${index}/${chunkRecordListLen}`);
210
+ let appTableRecordFunc = client.bitable.appTableRecord.batchCreate;
211
+ if (opType === 'edit') {
212
+ appTableRecordFunc = client.bitable.appTableRecord.batchUpdate;
213
+ }
214
+ try {
215
+ const res = await appTableRecordFunc({
216
+ data: {
217
+ records: item,
218
+ },
219
+ params: {
220
+ user_id_type,
221
+ },
222
+ path: bitablePath,
223
+ });
224
+ if (res.code === feishu_code_1.CODE_SUCCESS) {
225
+ successTotal += res.data.records.length;
226
+ this.logger.debug(`${idx++}/${chunkRecordList.length} ${opTextMap[opType]}成功, ${res.data.records.length}`);
227
+ }
228
+ else {
229
+ if ([
230
+ feishu_code_1.CODE_WRITE_CONFLICT,
231
+ feishu_code_1.CODE_RPC_ERROR,
232
+ feishu_code_1.internalError,
233
+ ].includes(res.code)) {
234
+ this.logger.debug('异常数据重试', res.msg, res.code, item[0]);
235
+ return await this.updateBitableRecords(item, opType, bitablePath, chunkSize, user_id_type);
236
+ }
237
+ failTotal += item.length;
238
+ this.logger.error(`${opTextMap[opType]}失败`, item[0], res);
239
+ throw new Error(`${opTextMap[opType]}失败。code: ${res === null || res === void 0 ? void 0 : res.code} msg: ${res === null || res === void 0 ? void 0 : res.msg}`);
240
+ }
241
+ if ([
242
+ feishu_code_1.RecordExceedLimit,
243
+ feishu_code_1.NumberFieldConvFail,
244
+ feishu_code_1.FieldNameNotFound,
245
+ feishu_code_1.UserFieldConvFail,
246
+ feishu_code_1.TextFieldConvFail,
247
+ ].includes(res.code)) {
248
+ break;
249
+ }
250
+ }
251
+ catch (error) {
252
+ if (error.response) {
253
+ if ([feishu_code_1.DATA_NOT_READY, feishu_code_1.CODE_RPC_ERROR, feishu_code_1.internalError].includes(error.response.data.code)) {
254
+ return await this.updateBitableRecords(item, opType, bitablePath, chunkSize, user_id_type);
255
+ }
256
+ else {
257
+ failTotal = item.length;
258
+ }
259
+ }
260
+ else {
261
+ failTotal = item.length;
262
+ }
263
+ throw new Error(`${opTextMap[opType]}失败。code: ${error === null || error === void 0 ? void 0 : error.stack}}`);
264
+ }
265
+ }
266
+ return {
267
+ successTotal,
268
+ failTotal,
269
+ total: recordsList.length,
270
+ title: `${opTextMap[opType]}`,
271
+ };
272
+ }
273
+ }
274
+ exports.BitableRecordBase = BitableRecordBase;
275
+ BitableRecordBase.instance = new Map();
276
+ //# sourceMappingURL=bitable-base-record.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bitable-base-record.js","sourceRoot":"","sources":["../src/bitable-base-record.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { Client } from '@larksuiteoapi/node-sdk';
2
+ import { Logger } from '@nestjs/common';
3
+ import { FeishuBasePlus } from './feishu-base-plus';
4
+ import { TypeBitablePath } from './types';
5
+ export declare function getBitableParams(linkUrl: string): {
6
+ app_token: string;
7
+ table_id: string;
8
+ view_id: string;
9
+ };
10
+ export declare abstract class AbstractBaseBitable {
11
+ protected readonly feishuBaseInstance: FeishuBasePlus;
12
+ readonly larkClient: Client;
13
+ private readonly pathMap;
14
+ abstract readonly logger: Logger;
15
+ abstract bitableUrl: any;
16
+ constructor(feishuBaseInstance: FeishuBasePlus);
17
+ getPath(bitTableUrl: string): Promise<TypeBitablePath>;
18
+ }
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AbstractBaseBitable = void 0;
4
+ exports.getBitableParams = getBitableParams;
5
+ const querystring_1 = require("querystring");
6
+ const url = require("url");
7
+ const feishu_code_1 = require("./feishu-code");
8
+ function getBitableParams(linkUrl) {
9
+ const q = url.parse(linkUrl, true);
10
+ const pathNameArr = q.pathname.split('/');
11
+ const bitablePath = {
12
+ app_token: pathNameArr[pathNameArr.length - 1],
13
+ table_id: q.query.table,
14
+ view_id: q.query.view,
15
+ };
16
+ return bitablePath;
17
+ }
18
+ class AbstractBaseBitable {
19
+ constructor(feishuBaseInstance) {
20
+ this.pathMap = new Map();
21
+ this.feishuBaseInstance = feishuBaseInstance;
22
+ this.larkClient = feishuBaseInstance.larkClient;
23
+ }
24
+ async getPath(bitTableUrl) {
25
+ if (this.pathMap.get(bitTableUrl)) {
26
+ this.logger.debug('getBitablePath 命中缓存', bitTableUrl);
27
+ return this.pathMap.get(bitTableUrl);
28
+ }
29
+ const { pathname, query } = url.parse(bitTableUrl);
30
+ const reg = /\/\w*\//;
31
+ let appToken = pathname.replace(reg, '');
32
+ const tableId = (0, querystring_1.parse)(query).table;
33
+ const viewId = (0, querystring_1.parse)(query).view;
34
+ if (bitTableUrl.includes('wikcn') || bitTableUrl.includes('wiki')) {
35
+ const { larkClient } = this;
36
+ try {
37
+ const res = await larkClient.wiki.space.getNode({
38
+ params: {
39
+ token: appToken,
40
+ },
41
+ });
42
+ if (res.code === feishu_code_1.CODE_SUCCESS) {
43
+ appToken = res.data.node.obj_token;
44
+ }
45
+ else {
46
+ throw new Error(`${bitTableUrl} getNode失败 ${res.msg}`);
47
+ }
48
+ }
49
+ catch (error) {
50
+ this.logger.error(`getBitablePath: ${bitTableUrl} getNode 程序执行报错`, (error === null || error === void 0 ? void 0 : error.stack) || error);
51
+ throw Error(error);
52
+ }
53
+ }
54
+ else {
55
+ const bitablePath = getBitableParams(bitTableUrl);
56
+ appToken = bitablePath.app_token;
57
+ }
58
+ const res = {
59
+ app_token: appToken,
60
+ table_id: tableId,
61
+ view_id: viewId,
62
+ };
63
+ this.pathMap.set(bitTableUrl, res);
64
+ return res;
65
+ }
66
+ }
67
+ exports.AbstractBaseBitable = AbstractBaseBitable;
68
+ //# sourceMappingURL=bitable-base.abstract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bitable-base.abstract.js","sourceRoot":"","sources":["../src/bitable-base.abstract.ts"],"names":[],"mappings":"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"}