@luka-cat-mimi/n8n-nodes-feishu 0.5.11 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/README.md +24 -0
  2. package/dist/credentials/FeishuNodeCredentialsApi.credentials.js +56 -9
  3. package/dist/credentials/FeishuNodeCredentialsApi.credentials.js.map +1 -1
  4. package/dist/credentials/FeishuNodeOauth2Api.credentials.js +89 -9
  5. package/dist/credentials/FeishuNodeOauth2Api.credentials.js.map +1 -1
  6. package/dist/nodes/FeishuNode/FeishuNode.node.js +11 -0
  7. package/dist/nodes/FeishuNode/FeishuNode.node.js.map +1 -1
  8. package/dist/nodes/FeishuNode/FeishuNodeTrigger.node.d.ts +5 -0
  9. package/dist/nodes/FeishuNode/FeishuNodeTrigger.node.js +200 -0
  10. package/dist/nodes/FeishuNode/FeishuNodeTrigger.node.js.map +1 -0
  11. package/dist/nodes/FeishuNode/FeishuTrigger.node.json +19 -0
  12. package/dist/nodes/FeishuNode/RespondToFeishu.node.d.ts +5 -0
  13. package/dist/nodes/FeishuNode/RespondToFeishu.node.js +129 -0
  14. package/dist/nodes/FeishuNode/RespondToFeishu.node.js.map +1 -0
  15. package/dist/nodes/FeishuNode/resource/message/MessageEphemeralSendOperate.js +1 -1
  16. package/dist/nodes/FeishuNode/resource/message/MessageEphemeralSendOperate.js.map +1 -1
  17. package/dist/nodes/FeishuNode/resource/message/MessageEventDecryptOperate.js +2 -55
  18. package/dist/nodes/FeishuNode/resource/message/MessageEventDecryptOperate.js.map +1 -1
  19. package/dist/nodes/help/type/enums.d.ts +14 -0
  20. package/dist/nodes/help/type/enums.js +18 -0
  21. package/dist/nodes/help/type/enums.js.map +1 -1
  22. package/dist/nodes/help/utils/FeishuDecryptUtils.d.ts +1 -0
  23. package/dist/nodes/help/utils/FeishuDecryptUtils.js +61 -0
  24. package/dist/nodes/help/utils/FeishuDecryptUtils.js.map +1 -0
  25. package/dist/nodes/help/utils/FeishuResponseManager.d.ts +11 -0
  26. package/dist/nodes/help/utils/FeishuResponseManager.js +51 -0
  27. package/dist/nodes/help/utils/FeishuResponseManager.js.map +1 -0
  28. package/dist/nodes/help/utils/RequestUtils.js +3 -2
  29. package/dist/nodes/help/utils/RequestUtils.js.map +1 -1
  30. package/dist/nodes/help/utils/lark-sdk/consts.d.ts +4 -0
  31. package/dist/nodes/help/utils/lark-sdk/consts.js +8 -0
  32. package/dist/nodes/help/utils/lark-sdk/consts.js.map +1 -0
  33. package/dist/nodes/help/utils/lark-sdk/data-cache.d.ts +23 -0
  34. package/dist/nodes/help/utils/lark-sdk/data-cache.js +63 -0
  35. package/dist/nodes/help/utils/lark-sdk/data-cache.js.map +1 -0
  36. package/dist/nodes/help/utils/lark-sdk/enum.d.ts +37 -0
  37. package/dist/nodes/help/utils/lark-sdk/enum.js +47 -0
  38. package/dist/nodes/help/utils/lark-sdk/enum.js.map +1 -0
  39. package/dist/nodes/help/utils/lark-sdk/handler/cache.d.ts +16 -0
  40. package/dist/nodes/help/utils/lark-sdk/handler/cache.js +37 -0
  41. package/dist/nodes/help/utils/lark-sdk/handler/cache.js.map +1 -0
  42. package/dist/nodes/help/utils/lark-sdk/handler/event-handler.d.ts +26 -0
  43. package/dist/nodes/help/utils/lark-sdk/handler/event-handler.js +92 -0
  44. package/dist/nodes/help/utils/lark-sdk/handler/event-handler.js.map +1 -0
  45. package/dist/nodes/help/utils/lark-sdk/handler/events-template.d.ts +4 -0
  46. package/dist/nodes/help/utils/lark-sdk/handler/events-template.js +3 -0
  47. package/dist/nodes/help/utils/lark-sdk/handler/events-template.js.map +1 -0
  48. package/dist/nodes/help/utils/lark-sdk/handler/request-handle.d.ts +15 -0
  49. package/dist/nodes/help/utils/lark-sdk/handler/request-handle.js +77 -0
  50. package/dist/nodes/help/utils/lark-sdk/handler/request-handle.js.map +1 -0
  51. package/dist/nodes/help/utils/lark-sdk/interfaces.d.ts +8 -0
  52. package/dist/nodes/help/utils/lark-sdk/interfaces.js +3 -0
  53. package/dist/nodes/help/utils/lark-sdk/interfaces.js.map +1 -0
  54. package/dist/nodes/help/utils/lark-sdk/proto-buf/index.d.ts +3 -0
  55. package/dist/nodes/help/utils/lark-sdk/proto-buf/index.js +13 -0
  56. package/dist/nodes/help/utils/lark-sdk/proto-buf/index.js.map +1 -0
  57. package/dist/nodes/help/utils/lark-sdk/proto-buf/pbbp2.js +718 -0
  58. package/dist/nodes/help/utils/lark-sdk/utils/aes-cipher.d.ts +5 -0
  59. package/dist/nodes/help/utils/lark-sdk/utils/aes-cipher.js +23 -0
  60. package/dist/nodes/help/utils/lark-sdk/utils/aes-cipher.js.map +1 -0
  61. package/dist/nodes/help/utils/lark-sdk/ws-client/index.d.ts +43 -0
  62. package/dist/nodes/help/utils/lark-sdk/ws-client/index.js +364 -0
  63. package/dist/nodes/help/utils/lark-sdk/ws-client/index.js.map +1 -0
  64. package/dist/nodes/help/utils/lark-sdk/ws-client/ws-config.d.ts +33 -0
  65. package/dist/nodes/help/utils/lark-sdk/ws-client/ws-config.js +53 -0
  66. package/dist/nodes/help/utils/lark-sdk/ws-client/ws-config.js.map +1 -0
  67. package/dist/nodes/help/utils/outputs.d.ts +6 -0
  68. package/dist/nodes/help/utils/outputs.js +21 -0
  69. package/dist/nodes/help/utils/outputs.js.map +1 -0
  70. package/dist/nodes/help/utils/properties.d.ts +12 -0
  71. package/dist/nodes/help/utils/properties.js +156 -0
  72. package/dist/nodes/help/utils/properties.js.map +1 -0
  73. package/dist/package.json +10 -3
  74. package/dist/tsconfig.tsbuildinfo +1 -1
  75. package/package.json +10 -3
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Domain = exports.HttpStatusCode = exports.MessageType = exports.HeaderKey = exports.FrameType = exports.ErrorCode = void 0;
4
+ var ErrorCode;
5
+ (function (ErrorCode) {
6
+ ErrorCode[ErrorCode["ok"] = 0] = "ok";
7
+ ErrorCode[ErrorCode["system_busy"] = 1] = "system_busy";
8
+ ErrorCode[ErrorCode["forbidden"] = 403] = "forbidden";
9
+ ErrorCode[ErrorCode["auth_failed"] = 514] = "auth_failed";
10
+ ErrorCode[ErrorCode["internal_error"] = 1000040343] = "internal_error";
11
+ ErrorCode[ErrorCode["exceed_conn_limit"] = 1000040350] = "exceed_conn_limit";
12
+ })(ErrorCode || (exports.ErrorCode = ErrorCode = {}));
13
+ var FrameType;
14
+ (function (FrameType) {
15
+ FrameType[FrameType["control"] = 0] = "control";
16
+ FrameType[FrameType["data"] = 1] = "data";
17
+ })(FrameType || (exports.FrameType = FrameType = {}));
18
+ var HeaderKey;
19
+ (function (HeaderKey) {
20
+ HeaderKey["type"] = "type";
21
+ HeaderKey["message_id"] = "message_id";
22
+ HeaderKey["sum"] = "sum";
23
+ HeaderKey["seq"] = "seq";
24
+ HeaderKey["trace_id"] = "trace_id";
25
+ HeaderKey["biz_rt"] = "biz_rt";
26
+ HeaderKey["handshake_status"] = "handshake-status";
27
+ HeaderKey["handshake_msg"] = "handshake-msg";
28
+ HeaderKey["handshake_autherrcode"] = "handshake-autherrcode";
29
+ })(HeaderKey || (exports.HeaderKey = HeaderKey = {}));
30
+ var MessageType;
31
+ (function (MessageType) {
32
+ MessageType["event"] = "event";
33
+ MessageType["card"] = "card";
34
+ MessageType["ping"] = "ping";
35
+ MessageType["pong"] = "pong";
36
+ })(MessageType || (exports.MessageType = MessageType = {}));
37
+ var HttpStatusCode;
38
+ (function (HttpStatusCode) {
39
+ HttpStatusCode[HttpStatusCode["ok"] = 200] = "ok";
40
+ HttpStatusCode[HttpStatusCode["internal_server_error"] = 500] = "internal_server_error";
41
+ })(HttpStatusCode || (exports.HttpStatusCode = HttpStatusCode = {}));
42
+ var Domain;
43
+ (function (Domain) {
44
+ Domain[Domain["Feishu"] = 0] = "Feishu";
45
+ Domain[Domain["Lark"] = 1] = "Lark";
46
+ })(Domain || (exports.Domain = Domain = {}));
47
+ //# sourceMappingURL=enum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enum.js","sourceRoot":"","sources":["../../../../../nodes/help/utils/lark-sdk/enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,SAOX;AAPD,WAAY,SAAS;IACpB,qCAAM,CAAA;IACN,uDAAe,CAAA;IACf,qDAAe,CAAA;IACf,yDAAiB,CAAA;IACjB,sEAA2B,CAAA;IAC3B,4EAA8B,CAAA;AAC/B,CAAC,EAPW,SAAS,yBAAT,SAAS,QAOpB;AAED,IAAY,SAGX;AAHD,WAAY,SAAS;IACpB,+CAAW,CAAA;IACX,yCAAQ,CAAA;AACT,CAAC,EAHW,SAAS,yBAAT,SAAS,QAGpB;AAED,IAAY,SAUX;AAVD,WAAY,SAAS;IACpB,0BAAa,CAAA;IACb,sCAAyB,CAAA;IACzB,wBAAW,CAAA;IACX,wBAAW,CAAA;IACX,kCAAqB,CAAA;IACrB,8BAAiB,CAAA;IACjB,kDAAqC,CAAA;IACrC,4CAA+B,CAAA;IAC/B,4DAA+C,CAAA;AAChD,CAAC,EAVW,SAAS,yBAAT,SAAS,QAUpB;AAED,IAAY,WAKX;AALD,WAAY,WAAW;IACtB,8BAAe,CAAA;IACf,4BAAa,CAAA;IACb,4BAAa,CAAA;IACb,4BAAa,CAAA;AACd,CAAC,EALW,WAAW,2BAAX,WAAW,QAKtB;AAED,IAAY,cAKX;AALD,WAAY,cAAc;IAEzB,iDAAQ,CAAA;IAER,uFAA2B,CAAA;AAC5B,CAAC,EALW,cAAc,8BAAd,cAAc,QAKzB;AAED,IAAY,MAGX;AAHD,WAAY,MAAM;IACjB,uCAAM,CAAA;IACN,mCAAI,CAAA;AACL,CAAC,EAHW,MAAM,sBAAN,MAAM,QAGjB"}
@@ -0,0 +1,16 @@
1
+ import { Cache } from '../interfaces';
2
+ export declare class DefaultCache implements Cache {
3
+ values: Map<string | symbol, {
4
+ value: any;
5
+ expiredTime?: number;
6
+ }>;
7
+ constructor();
8
+ private getCacheKey;
9
+ get(key: string | symbol, options?: {
10
+ namespace?: string;
11
+ }): Promise<any>;
12
+ set(key: string | symbol, value: string, expiredTime?: number, options?: {
13
+ namespace?: string;
14
+ }): Promise<boolean>;
15
+ }
16
+ export declare const internalCache: DefaultCache;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.internalCache = exports.DefaultCache = void 0;
4
+ class DefaultCache {
5
+ constructor() {
6
+ this.values = new Map();
7
+ }
8
+ getCacheKey(key, namespace) {
9
+ if (namespace) {
10
+ return `${namespace}/${key.toString()}`;
11
+ }
12
+ return key;
13
+ }
14
+ async get(key, options) {
15
+ const cacheKey = this.getCacheKey(key, options === null || options === void 0 ? void 0 : options.namespace);
16
+ const data = this.values.get(cacheKey);
17
+ if (data) {
18
+ const { value, expiredTime } = data;
19
+ if (!expiredTime || expiredTime - new Date().getTime() > 0) {
20
+ return value;
21
+ }
22
+ this.values.delete(cacheKey);
23
+ }
24
+ return undefined;
25
+ }
26
+ async set(key, value, expiredTime, options) {
27
+ const cacheKey = this.getCacheKey(key, options === null || options === void 0 ? void 0 : options.namespace);
28
+ this.values.set(cacheKey, {
29
+ value,
30
+ expiredTime,
31
+ });
32
+ return true;
33
+ }
34
+ }
35
+ exports.DefaultCache = DefaultCache;
36
+ exports.internalCache = new DefaultCache();
37
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../../../../nodes/help/utils/lark-sdk/handler/cache.ts"],"names":[],"mappings":";;;AAEA,MAAa,YAAY;IASxB;QACC,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;IACzB,CAAC;IAGO,WAAW,CAAC,GAAoB,EAAE,SAAkB;QAC3D,IAAI,SAAS,EAAE,CAAC;YACf,OAAO,GAAG,SAAS,IAAI,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC;QACzC,CAAC;QACD,OAAO,GAAG,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,GAAG,CACR,GAAoB,EACpB,OAEC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEvC,IAAI,IAAI,EAAE,CAAC;YACV,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;YACpC,IAAI,CAAC,WAAW,IAAI,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;gBAC5D,OAAO,KAAK,CAAC;YACd,CAAC;YAGD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;QAED,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,GAAG,CACR,GAAoB,EACpB,KAAa,EACb,WAAoB,EACpB,OAEC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE;YACzB,KAAK;YACL,WAAW;SACX,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACb,CAAC;CACD;AA1DD,oCA0DC;AAEY,QAAA,aAAa,GAAG,IAAI,YAAY,EAAE,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { Logger } from 'n8n-workflow';
2
+ import { Cache } from '../interfaces';
3
+ import { IHandles } from './events-template';
4
+ import RequestHandle from './request-handle';
5
+ type EventHandler = (data: any) => Promise<any> | any;
6
+ export declare class EventDispatcher {
7
+ verificationToken: string;
8
+ encryptKey: string;
9
+ requestHandle?: RequestHandle;
10
+ handles: Map<string, EventHandler>;
11
+ cache: Cache;
12
+ logger: Logger;
13
+ isAnyEvent: boolean;
14
+ constructor(params: {
15
+ logger: Logger;
16
+ isAnyEvent: boolean;
17
+ verificationToken?: string;
18
+ encryptKey?: string;
19
+ });
20
+ private registerAppTicketHandle;
21
+ register<T = object>(handles: IHandles & T): this;
22
+ invoke(data: any, params?: {
23
+ needCheck?: boolean;
24
+ }): Promise<any>;
25
+ }
26
+ export {};
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.EventDispatcher = void 0;
7
+ const cache_1 = require("./cache");
8
+ const request_handle_1 = __importDefault(require("./request-handle"));
9
+ const consts_1 = require("../consts");
10
+ class EventDispatcher {
11
+ constructor(params) {
12
+ this.verificationToken = '';
13
+ this.encryptKey = '';
14
+ this.handles = new Map();
15
+ const { encryptKey, verificationToken, logger } = params;
16
+ this.logger = logger;
17
+ this.isAnyEvent = params.isAnyEvent;
18
+ this.encryptKey = encryptKey || '';
19
+ this.verificationToken = verificationToken || '';
20
+ this.requestHandle = new request_handle_1.default({
21
+ logger: this.logger,
22
+ encryptKey,
23
+ verificationToken,
24
+ });
25
+ this.cache = cache_1.internalCache;
26
+ this.registerAppTicketHandle();
27
+ this.logger.info('event-dispatch is ready');
28
+ }
29
+ registerAppTicketHandle() {
30
+ this.register({
31
+ app_ticket: async (data) => {
32
+ const { app_ticket, app_id } = data;
33
+ if (app_ticket) {
34
+ await this.cache.set(consts_1.CAppTicket, app_ticket, undefined, {
35
+ namespace: app_id,
36
+ });
37
+ this.logger.debug('set app ticket');
38
+ }
39
+ else {
40
+ this.logger.warn('response not include app ticket');
41
+ }
42
+ },
43
+ });
44
+ }
45
+ register(handles) {
46
+ Object.keys(handles).forEach((key) => {
47
+ if (this.handles.has(key) && key !== consts_1.CAppTicketHandle) {
48
+ this.logger.debug(`this ${key} handle is registered`);
49
+ }
50
+ const handle = handles[key];
51
+ if (handle) {
52
+ this.handles.set(key, handle);
53
+ }
54
+ else {
55
+ this.logger.warn(`Handle for key ${key} is undefined and will not be registered`);
56
+ }
57
+ this.logger.debug(`register ${key} handle`);
58
+ });
59
+ return this;
60
+ }
61
+ async invoke(data, params) {
62
+ var _a, _b;
63
+ const needCheck = (params === null || params === void 0 ? void 0 : params.needCheck) !== false;
64
+ if (needCheck && !((_a = this.requestHandle) === null || _a === void 0 ? void 0 : _a.checkIsEventValidated(data))) {
65
+ this.logger.warn('event verification failed');
66
+ return undefined;
67
+ }
68
+ const targetData = (_b = this.requestHandle) === null || _b === void 0 ? void 0 : _b.parse(data);
69
+ this.logger.debug(`Event data: ${JSON.stringify(targetData)}`);
70
+ if (this.isAnyEvent) {
71
+ const handler = this.handles.get(consts_1.ANY_EVENT);
72
+ if (!handler) {
73
+ this.logger.warn(`no ${consts_1.ANY_EVENT} handle`);
74
+ return undefined;
75
+ }
76
+ const ret = await handler(targetData);
77
+ this.logger.info(`execute any_event handle`);
78
+ return ret;
79
+ }
80
+ const type = targetData[consts_1.CEventType];
81
+ const handler = this.handles.get(type);
82
+ if (handler) {
83
+ const ret = await handler(targetData);
84
+ this.logger.info(`execute ${type} handle`);
85
+ return ret;
86
+ }
87
+ this.logger.warn(`no ${type} handle`);
88
+ return undefined;
89
+ }
90
+ }
91
+ exports.EventDispatcher = EventDispatcher;
92
+ //# sourceMappingURL=event-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-handler.js","sourceRoot":"","sources":["../../../../../../nodes/help/utils/lark-sdk/handler/event-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { IDataObject } from 'n8n-workflow';
2
+ export interface IHandles {
3
+ [key: string]: ((data: IDataObject) => Promise<IDataObject | void> | IDataObject | void) | undefined;
4
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=events-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events-template.js","sourceRoot":"","sources":["../../../../../../nodes/help/utils/lark-sdk/handler/events-template.ts"],"names":[],"mappings":""}
@@ -0,0 +1,15 @@
1
+ import { Logger } from 'n8n-workflow';
2
+ import { AESCipher } from '../utils/aes-cipher';
3
+ export default class RequestHandle {
4
+ aesCipher?: AESCipher;
5
+ verificationToken?: string;
6
+ encryptKey?: string;
7
+ logger: Logger;
8
+ constructor(params: {
9
+ logger: Logger;
10
+ encryptKey?: string;
11
+ verificationToken?: string;
12
+ });
13
+ parse(data: any): any;
14
+ checkIsEventValidated(data: any): boolean;
15
+ }
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const crypto_1 = __importDefault(require("crypto"));
7
+ const aes_cipher_1 = require("../utils/aes-cipher");
8
+ const consts_1 = require("../consts");
9
+ class RequestHandle {
10
+ constructor(params) {
11
+ const { encryptKey, verificationToken, logger } = params;
12
+ this.verificationToken = verificationToken;
13
+ this.encryptKey = encryptKey;
14
+ this.logger = logger;
15
+ if (encryptKey) {
16
+ this.aesCipher = new aes_cipher_1.AESCipher(encryptKey);
17
+ }
18
+ }
19
+ parse(data) {
20
+ var _a, _b;
21
+ const targetData = (() => {
22
+ const { encrypt, ...rest } = data || {};
23
+ if (encrypt) {
24
+ if (!this.aesCipher) {
25
+ this.logger.error('parse encrypt data failed: aesCipher is not initialized');
26
+ return rest;
27
+ }
28
+ try {
29
+ const decrypted = this.aesCipher.decrypt(encrypt);
30
+ return {
31
+ ...JSON.parse(decrypted),
32
+ ...rest,
33
+ };
34
+ }
35
+ catch (e) {
36
+ this.logger.error(`parse encrypt data failed: ${e instanceof Error ? e.message : String(e)}`);
37
+ return rest;
38
+ }
39
+ }
40
+ return rest;
41
+ })();
42
+ if ('schema' in targetData) {
43
+ const { header, event, ...rest } = targetData;
44
+ return {
45
+ [consts_1.CEventType]: (_a = targetData === null || targetData === void 0 ? void 0 : targetData.header) === null || _a === void 0 ? void 0 : _a.event_type,
46
+ ...rest,
47
+ ...header,
48
+ ...event,
49
+ };
50
+ }
51
+ const { event, ...rest } = targetData;
52
+ return {
53
+ [consts_1.CEventType]: (_b = targetData === null || targetData === void 0 ? void 0 : targetData.event) === null || _b === void 0 ? void 0 : _b.type,
54
+ ...event,
55
+ ...rest,
56
+ };
57
+ }
58
+ checkIsEventValidated(data) {
59
+ if (!this.encryptKey) {
60
+ return true;
61
+ }
62
+ if (!(data === null || data === void 0 ? void 0 : data.headers)) {
63
+ this.logger.warn('event validation failed: missing headers');
64
+ return false;
65
+ }
66
+ const { 'x-lark-request-timestamp': timestamp, 'x-lark-request-nonce': nonce, 'x-lark-signature': signature, } = data.headers;
67
+ if (!timestamp || !nonce || !signature) {
68
+ this.logger.warn('event validation failed: missing required headers');
69
+ return false;
70
+ }
71
+ const content = timestamp + nonce + this.encryptKey + JSON.stringify(data);
72
+ const computedSignature = crypto_1.default.createHash('sha256').update(content).digest('hex');
73
+ return computedSignature === signature;
74
+ }
75
+ }
76
+ exports.default = RequestHandle;
77
+ //# sourceMappingURL=request-handle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-handle.js","sourceRoot":"","sources":["../../../../../../nodes/help/utils/lark-sdk/handler/request-handle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export interface Cache {
2
+ set: (key: string | symbol, value: any, expire?: number, options?: {
3
+ namespace?: string;
4
+ }) => Promise<boolean>;
5
+ get: (key: string | symbol, options?: {
6
+ namespace?: string;
7
+ }) => Promise<any>;
8
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../../nodes/help/utils/lark-sdk/interfaces.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import { pbbp2 } from './pbbp2';
2
+ export declare const decode: (buffer: Uint8Array) => pbbp2.Frame;
3
+ export declare const encode: (data: pbbp2.IFrame) => import("protobufjs").Writer;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.encode = exports.decode = void 0;
4
+ const pbbp2_1 = require("./pbbp2");
5
+ const decode = (buffer) => {
6
+ return pbbp2_1.pbbp2.Frame.decode(buffer);
7
+ };
8
+ exports.decode = decode;
9
+ const encode = (data) => {
10
+ return pbbp2_1.pbbp2.Frame.encode(data);
11
+ };
12
+ exports.encode = encode;
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../nodes/help/utils/lark-sdk/proto-buf/index.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAEzB,MAAM,MAAM,GAAG,CAAC,MAAkB,EAAE,EAAE;IAC5C,OAAO,aAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC,CAAC;AAFW,QAAA,MAAM,UAEjB;AAEK,MAAM,MAAM,GAAG,CAAC,IAAkB,EAAE,EAAE;IAC5C,OAAO,aAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC,CAAC;AAFW,QAAA,MAAM,UAEjB"}