@luka-cat-mimi/n8n-nodes-feishu 0.5.10 → 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.
- package/README.md +27 -2
- package/dist/credentials/FeishuNodeCredentialsApi.credentials.js +56 -9
- package/dist/credentials/FeishuNodeCredentialsApi.credentials.js.map +1 -1
- package/dist/credentials/FeishuNodeOauth2Api.credentials.js +89 -9
- package/dist/credentials/FeishuNodeOauth2Api.credentials.js.map +1 -1
- package/dist/nodes/FeishuNode/FeishuNode.node.js +11 -0
- package/dist/nodes/FeishuNode/FeishuNode.node.js.map +1 -1
- package/dist/nodes/FeishuNode/FeishuNodeTrigger.node.d.ts +5 -0
- package/dist/nodes/FeishuNode/FeishuNodeTrigger.node.js +200 -0
- package/dist/nodes/FeishuNode/FeishuNodeTrigger.node.js.map +1 -0
- package/dist/nodes/FeishuNode/FeishuTrigger.node.json +19 -0
- package/dist/nodes/FeishuNode/RespondToFeishu.node.d.ts +5 -0
- package/dist/nodes/FeishuNode/RespondToFeishu.node.js +129 -0
- package/dist/nodes/FeishuNode/RespondToFeishu.node.js.map +1 -0
- package/dist/nodes/FeishuNode/resource/message/MessageEphemeralSendOperate.js +1 -1
- package/dist/nodes/FeishuNode/resource/message/MessageEphemeralSendOperate.js.map +1 -1
- package/dist/nodes/FeishuNode/resource/message/MessageEventDecryptOperate.js +2 -55
- package/dist/nodes/FeishuNode/resource/message/MessageEventDecryptOperate.js.map +1 -1
- package/dist/nodes/FeishuNode/resource/space/SpaceChunkUploadOperate.d.ts +3 -0
- package/dist/nodes/FeishuNode/resource/space/SpaceChunkUploadOperate.js +198 -0
- package/dist/nodes/FeishuNode/resource/space/SpaceChunkUploadOperate.js.map +1 -0
- package/dist/nodes/help/type/enums.d.ts +14 -0
- package/dist/nodes/help/type/enums.js +18 -0
- package/dist/nodes/help/type/enums.js.map +1 -1
- package/dist/nodes/help/utils/FeishuDecryptUtils.d.ts +1 -0
- package/dist/nodes/help/utils/FeishuDecryptUtils.js +61 -0
- package/dist/nodes/help/utils/FeishuDecryptUtils.js.map +1 -0
- package/dist/nodes/help/utils/FeishuResponseManager.d.ts +11 -0
- package/dist/nodes/help/utils/FeishuResponseManager.js +51 -0
- package/dist/nodes/help/utils/FeishuResponseManager.js.map +1 -0
- package/dist/nodes/help/utils/RequestUtils.js +3 -2
- package/dist/nodes/help/utils/RequestUtils.js.map +1 -1
- package/dist/nodes/help/utils/lark-sdk/consts.d.ts +4 -0
- package/dist/nodes/help/utils/lark-sdk/consts.js +8 -0
- package/dist/nodes/help/utils/lark-sdk/consts.js.map +1 -0
- package/dist/nodes/help/utils/lark-sdk/data-cache.d.ts +23 -0
- package/dist/nodes/help/utils/lark-sdk/data-cache.js +63 -0
- package/dist/nodes/help/utils/lark-sdk/data-cache.js.map +1 -0
- package/dist/nodes/help/utils/lark-sdk/enum.d.ts +37 -0
- package/dist/nodes/help/utils/lark-sdk/enum.js +47 -0
- package/dist/nodes/help/utils/lark-sdk/enum.js.map +1 -0
- package/dist/nodes/help/utils/lark-sdk/handler/cache.d.ts +16 -0
- package/dist/nodes/help/utils/lark-sdk/handler/cache.js +37 -0
- package/dist/nodes/help/utils/lark-sdk/handler/cache.js.map +1 -0
- package/dist/nodes/help/utils/lark-sdk/handler/event-handler.d.ts +26 -0
- package/dist/nodes/help/utils/lark-sdk/handler/event-handler.js +92 -0
- package/dist/nodes/help/utils/lark-sdk/handler/event-handler.js.map +1 -0
- package/dist/nodes/help/utils/lark-sdk/handler/events-template.d.ts +4 -0
- package/dist/nodes/help/utils/lark-sdk/handler/events-template.js +3 -0
- package/dist/nodes/help/utils/lark-sdk/handler/events-template.js.map +1 -0
- package/dist/nodes/help/utils/lark-sdk/handler/request-handle.d.ts +15 -0
- package/dist/nodes/help/utils/lark-sdk/handler/request-handle.js +77 -0
- package/dist/nodes/help/utils/lark-sdk/handler/request-handle.js.map +1 -0
- package/dist/nodes/help/utils/lark-sdk/interfaces.d.ts +8 -0
- package/dist/nodes/help/utils/lark-sdk/interfaces.js +3 -0
- package/dist/nodes/help/utils/lark-sdk/interfaces.js.map +1 -0
- package/dist/nodes/help/utils/lark-sdk/proto-buf/index.d.ts +3 -0
- package/dist/nodes/help/utils/lark-sdk/proto-buf/index.js +13 -0
- package/dist/nodes/help/utils/lark-sdk/proto-buf/index.js.map +1 -0
- package/dist/nodes/help/utils/lark-sdk/proto-buf/pbbp2.js +718 -0
- package/dist/nodes/help/utils/lark-sdk/utils/aes-cipher.d.ts +5 -0
- package/dist/nodes/help/utils/lark-sdk/utils/aes-cipher.js +23 -0
- package/dist/nodes/help/utils/lark-sdk/utils/aes-cipher.js.map +1 -0
- package/dist/nodes/help/utils/lark-sdk/ws-client/index.d.ts +43 -0
- package/dist/nodes/help/utils/lark-sdk/ws-client/index.js +364 -0
- package/dist/nodes/help/utils/lark-sdk/ws-client/index.js.map +1 -0
- package/dist/nodes/help/utils/lark-sdk/ws-client/ws-config.d.ts +33 -0
- package/dist/nodes/help/utils/lark-sdk/ws-client/ws-config.js +53 -0
- package/dist/nodes/help/utils/lark-sdk/ws-client/ws-config.js.map +1 -0
- package/dist/nodes/help/utils/outputs.d.ts +6 -0
- package/dist/nodes/help/utils/outputs.js +21 -0
- package/dist/nodes/help/utils/outputs.js.map +1 -0
- package/dist/nodes/help/utils/properties.d.ts +12 -0
- package/dist/nodes/help/utils/properties.js +156 -0
- package/dist/nodes/help/utils/properties.js.map +1 -0
- package/dist/package.json +10 -3
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +10 -3
|
@@ -6,7 +6,7 @@ class RequestUtils {
|
|
|
6
6
|
let additionalCredentialOptions = {};
|
|
7
7
|
if (authentication === "feishuNodeCredentialsApi") {
|
|
8
8
|
const credentials = await this.getCredentials(authentication);
|
|
9
|
-
options.baseURL =
|
|
9
|
+
options.baseURL = credentials.baseURL;
|
|
10
10
|
additionalCredentialOptions = {
|
|
11
11
|
credentialsDecrypted: {
|
|
12
12
|
data: {
|
|
@@ -17,7 +17,8 @@ class RequestUtils {
|
|
|
17
17
|
};
|
|
18
18
|
}
|
|
19
19
|
else if (authentication === "feishuNodeOauth2Api") {
|
|
20
|
-
|
|
20
|
+
const credentials = await this.getCredentials(authentication);
|
|
21
|
+
options.baseURL = credentials.baseURL;
|
|
21
22
|
let oauth2 = {
|
|
22
23
|
keepBearer: true
|
|
23
24
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RequestUtils.js","sourceRoot":"","sources":["../../../../nodes/help/utils/RequestUtils.ts"],"names":[],"mappings":";;AAOA,MAAM,YAAY;IACjB,MAAM,CAAC,KAAK,CAAC,aAAa,CAEzB,OAAwB,EACxB,gBAAgB,GAAG,KAAK;QAExB,IAAI,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,CAAW,CAAC;QAE1E,IAAI,2BAA2B,GAAG,EAAkC,CAAA;QAEpE,IAAI,cAAc,+BAAqC,EAAE,CAAC;YACzD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;YAE9D,OAAO,CAAC,OAAO,GAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"RequestUtils.js","sourceRoot":"","sources":["../../../../nodes/help/utils/RequestUtils.ts"],"names":[],"mappings":";;AAOA,MAAM,YAAY;IACjB,MAAM,CAAC,KAAK,CAAC,aAAa,CAEzB,OAAwB,EACxB,gBAAgB,GAAG,KAAK;QAExB,IAAI,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,CAAW,CAAC;QAE1E,IAAI,2BAA2B,GAAG,EAAkC,CAAA;QAEpE,IAAI,cAAc,+BAAqC,EAAE,CAAC;YACzD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;YAE9D,OAAO,CAAC,OAAO,GAAG,WAAW,CAAC,OAAiB,CAAC;YAEhD,2BAA2B,GAAG;gBAE7B,oBAAoB,EAAE;oBACrB,IAAI,EAAE;wBACL,GAAG,WAAW;wBACd,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW;qBAC5D;iBACD;aACD,CAAC;QACH,CAAC;aAAM,IAAI,cAAc,0BAAgC,EAAE,CAAC;YAC3D,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;YAC9D,OAAO,CAAC,OAAO,GAAG,WAAW,CAAC,OAAiB,CAAC;YAChD,IAAI,MAAM,GAAG;gBACZ,UAAU,EAAE,IAAI;aACE,CAAA;YAEnB,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa;iBAC/B,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;QAC9C,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,yBAAyB;aAC3C,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,2BAA2B,CAAC,CAAA;IACnE,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAO,CAA0B,OAAwB;QACrE,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QAEpD,OAAO,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YACnE,MAAM,cAAc,GAAG,CAAC,IAAS,EAAE,EAAE;;gBACpC,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;oBAClC,MAAM,IAAI,KAAK,CACd,kBAAkB,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAC3E,CAAC;gBACH,CAAC;gBACD,OAAO,MAAA,IAAI,CAAC,IAAI,mCAAI,IAAI,CAAC;YAC1B,CAAC,CAAC;YAGF,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACzC,OAAO,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;oBACzE,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;gBAC7B,CAAC,CAAC,CAAC;YACJ,CAAC;YAED,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACJ,CAAC;CACD;AAED,kBAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ANY_EVENT = exports.CAppTicketHandle = exports.CAppTicket = exports.CEventType = void 0;
|
|
4
|
+
exports.CEventType = Symbol('event-type');
|
|
5
|
+
exports.CAppTicket = Symbol('app-ticket');
|
|
6
|
+
exports.CAppTicketHandle = 'app_ticket';
|
|
7
|
+
exports.ANY_EVENT = 'any_event';
|
|
8
|
+
//# sourceMappingURL=consts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../../../../../nodes/help/utils/lark-sdk/consts.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAClC,QAAA,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAClC,QAAA,gBAAgB,GAAG,YAAY,CAAC;AAChC,QAAA,SAAS,GAAG,WAAW,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Logger } from 'n8n-workflow';
|
|
2
|
+
export declare class DataCache {
|
|
3
|
+
cache: Map<string, {
|
|
4
|
+
buffer: Uint8Array[];
|
|
5
|
+
trace_id: string;
|
|
6
|
+
message_id: string;
|
|
7
|
+
create_time: number;
|
|
8
|
+
}>;
|
|
9
|
+
logger?: Logger;
|
|
10
|
+
constructor(params: {
|
|
11
|
+
logger?: Logger;
|
|
12
|
+
});
|
|
13
|
+
mergeData(params: {
|
|
14
|
+
message_id: string;
|
|
15
|
+
sum: number;
|
|
16
|
+
seq: number;
|
|
17
|
+
trace_id: string;
|
|
18
|
+
data: Uint8Array;
|
|
19
|
+
}): any;
|
|
20
|
+
private deleteCache;
|
|
21
|
+
private clearAtInterval;
|
|
22
|
+
clear(): void;
|
|
23
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DataCache = void 0;
|
|
4
|
+
class DataCache {
|
|
5
|
+
constructor(params) {
|
|
6
|
+
this.cache = new Map();
|
|
7
|
+
this.logger = params.logger;
|
|
8
|
+
this.clearAtInterval();
|
|
9
|
+
}
|
|
10
|
+
mergeData(params) {
|
|
11
|
+
const { message_id, sum, seq, trace_id, data } = params;
|
|
12
|
+
const cache = this.cache.get(message_id);
|
|
13
|
+
if (!cache) {
|
|
14
|
+
const buffer = new Array(sum).fill(undefined);
|
|
15
|
+
buffer[seq] = data;
|
|
16
|
+
this.cache.set(message_id, {
|
|
17
|
+
buffer,
|
|
18
|
+
trace_id,
|
|
19
|
+
message_id,
|
|
20
|
+
create_time: Date.now(),
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
cache.buffer[seq] = data;
|
|
25
|
+
}
|
|
26
|
+
const mergedCache = this.cache.get(message_id);
|
|
27
|
+
if (mergedCache === null || mergedCache === void 0 ? void 0 : mergedCache.buffer.every((item) => !!item)) {
|
|
28
|
+
const mergedBuffer = mergedCache.buffer.reduce((acc, cur) => {
|
|
29
|
+
const combined = new Uint8Array(acc.byteLength + cur.byteLength);
|
|
30
|
+
combined.set(acc, 0);
|
|
31
|
+
combined.set(cur, acc.length);
|
|
32
|
+
return combined;
|
|
33
|
+
}, new Uint8Array([]));
|
|
34
|
+
const string = new TextDecoder('utf-8').decode(mergedBuffer);
|
|
35
|
+
const data = JSON.parse(string);
|
|
36
|
+
this.deleteCache(message_id);
|
|
37
|
+
return data;
|
|
38
|
+
}
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
deleteCache(message_id) {
|
|
42
|
+
this.cache.delete(message_id);
|
|
43
|
+
}
|
|
44
|
+
clearAtInterval() {
|
|
45
|
+
const clearIntervalMs = 10000;
|
|
46
|
+
setInterval(() => {
|
|
47
|
+
const now = Date.now();
|
|
48
|
+
this.cache.forEach((value, key) => {
|
|
49
|
+
var _a;
|
|
50
|
+
const { create_time, trace_id, message_id } = value;
|
|
51
|
+
if (now - create_time > clearIntervalMs) {
|
|
52
|
+
(_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug(`${message_id} event data is deleted as expired, trace_id: ${trace_id}`);
|
|
53
|
+
this.deleteCache(key);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
}, clearIntervalMs);
|
|
57
|
+
}
|
|
58
|
+
clear() {
|
|
59
|
+
this.cache.clear();
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.DataCache = DataCache;
|
|
63
|
+
//# sourceMappingURL=data-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-cache.js","sourceRoot":"","sources":["../../../../../nodes/help/utils/lark-sdk/data-cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export declare enum ErrorCode {
|
|
2
|
+
ok = 0,
|
|
3
|
+
system_busy = 1,
|
|
4
|
+
forbidden = 403,
|
|
5
|
+
auth_failed = 514,
|
|
6
|
+
internal_error = 1000040343,
|
|
7
|
+
exceed_conn_limit = 1000040350
|
|
8
|
+
}
|
|
9
|
+
export declare enum FrameType {
|
|
10
|
+
control = 0,
|
|
11
|
+
data = 1
|
|
12
|
+
}
|
|
13
|
+
export declare enum HeaderKey {
|
|
14
|
+
type = "type",
|
|
15
|
+
message_id = "message_id",
|
|
16
|
+
sum = "sum",
|
|
17
|
+
seq = "seq",
|
|
18
|
+
trace_id = "trace_id",
|
|
19
|
+
biz_rt = "biz_rt",
|
|
20
|
+
handshake_status = "handshake-status",
|
|
21
|
+
handshake_msg = "handshake-msg",
|
|
22
|
+
handshake_autherrcode = "handshake-autherrcode"
|
|
23
|
+
}
|
|
24
|
+
export declare enum MessageType {
|
|
25
|
+
event = "event",
|
|
26
|
+
card = "card",
|
|
27
|
+
ping = "ping",
|
|
28
|
+
pong = "pong"
|
|
29
|
+
}
|
|
30
|
+
export declare enum HttpStatusCode {
|
|
31
|
+
ok = 200,
|
|
32
|
+
internal_server_error = 500
|
|
33
|
+
}
|
|
34
|
+
export declare enum Domain {
|
|
35
|
+
Feishu = 0,
|
|
36
|
+
Lark = 1
|
|
37
|
+
}
|
|
@@ -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 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../../nodes/help/utils/lark-sdk/interfaces.ts"],"names":[],"mappings":""}
|
|
@@ -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"}
|