dsh-messager 0.3.4 → 0.3.6
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.en.md +34 -207
- package/README.md +25 -287
- package/lib/channels/dingtalk.d.ts +3 -5
- package/lib/channels/dingtalk.d.ts.map +1 -1
- package/lib/channels/dingtalk.js +3 -6
- package/lib/channels/dingtalk.js.map +1 -1
- package/lib/channels/discord.d.ts +2 -3
- package/lib/channels/discord.d.ts.map +1 -1
- package/lib/channels/discord.js +2 -3
- package/lib/channels/discord.js.map +1 -1
- package/lib/channels/feishu.d.ts +3 -14
- package/lib/channels/feishu.d.ts.map +1 -1
- package/lib/channels/feishu.js +6 -15
- package/lib/channels/feishu.js.map +1 -1
- package/lib/channels/telegram.d.ts.map +1 -1
- package/lib/channels/telegram.js +0 -1
- package/lib/channels/telegram.js.map +1 -1
- package/lib/channels/wecom.d.ts +1 -1
- package/lib/channels/wecom.d.ts.map +1 -1
- package/lib/channels/wecom.js +1 -2
- package/lib/channels/wecom.js.map +1 -1
- package/lib/client.js +188 -35
- package/lib/client.js.map +1 -1
- package/lib/config-route.d.ts +18 -7
- package/lib/config-route.d.ts.map +1 -1
- package/lib/config-route.js +59 -16
- package/lib/config-route.js.map +1 -1
- package/lib/config-shared.d.ts +1 -1
- package/lib/config-shared.d.ts.map +1 -1
- package/lib/config-shared.js +1 -1
- package/lib/config-shared.js.map +1 -1
- package/lib/config.d.ts +0 -6
- package/lib/config.d.ts.map +1 -1
- package/lib/config.js +0 -1
- package/lib/config.js.map +1 -1
- package/lib/environment.d.ts +68 -0
- package/lib/environment.d.ts.map +1 -0
- package/lib/environment.js +87 -0
- package/lib/environment.js.map +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +69 -14
- package/lib/index.js.map +1 -1
- package/lib/templates.d.ts +1 -3
- package/lib/templates.d.ts.map +1 -1
- package/lib/templates.js +1 -3
- package/lib/templates.js.map +1 -1
- package/lib/types/client/card-controller.d.ts +51 -1
- package/lib/types/client/card-controller.d.ts.map +1 -1
- package/lib/types/client/desktop.d.ts +30 -0
- package/lib/types/client/desktop.d.ts.map +1 -0
- package/lib/types/client/diff.d.ts +20 -2
- package/lib/types/client/diff.d.ts.map +1 -1
- package/lib/types/client/index.d.ts.map +1 -1
- package/lib/types/client/locales.d.ts +10 -2
- package/lib/types/client/locales.d.ts.map +1 -1
- package/lib/types/client/section.d.ts.map +1 -1
- package/lib/types/client/settings-form.d.ts +8 -1
- package/lib/types/client/settings-form.d.ts.map +1 -1
- package/lib/types/config-shared.d.ts +1 -1
- package/lib/types/config-shared.d.ts.map +1 -1
- package/lib/types/config.d.ts +0 -6
- package/lib/types/config.d.ts.map +1 -1
- package/package.json +62 -62
package/lib/channels/dingtalk.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* 钉钉自定义机器人通道(webhook):actionCard 卡片(标题 +
|
|
2
|
+
* 钉钉自定义机器人通道(webhook):actionCard 卡片(标题 + 正文),host 端投递。
|
|
3
3
|
*
|
|
4
4
|
* 可选加签(机器人「安全设置-加签」):
|
|
5
5
|
* string_to_sign = `${timestamp}\n${secret}`
|
|
@@ -9,17 +9,14 @@
|
|
|
9
9
|
* 注意:actionCard 的 title 限 20 字符,超出会被平台拒绝,需截断。
|
|
10
10
|
*/
|
|
11
11
|
import { createHmac } from 'node:crypto';
|
|
12
|
-
/** 构建钉钉 actionCard 载荷(纯函数;title 限 20
|
|
12
|
+
/** 构建钉钉 actionCard 载荷(纯函数;title 限 20 字符;无正文时正文退化为标题)。 */
|
|
13
13
|
export function buildDingtalkPayload(payload) {
|
|
14
|
-
const link = `[打开 DSH](${payload.url})`;
|
|
15
14
|
return {
|
|
16
15
|
msgtype: 'actionCard',
|
|
17
16
|
actionCard: {
|
|
18
17
|
title: payload.title.slice(0, 20),
|
|
19
|
-
text: payload.body === '' ?
|
|
18
|
+
text: payload.body === '' ? payload.title : payload.body,
|
|
20
19
|
btnOrientation: '0',
|
|
21
|
-
singleTitle: '打开 DSH',
|
|
22
|
-
singleURL: payload.url,
|
|
23
20
|
},
|
|
24
21
|
};
|
|
25
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dingtalk.js","sourceRoot":"","sources":["../../src/channels/dingtalk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"dingtalk.js","sourceRoot":"","sources":["../../src/channels/dingtalk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAoBxC,yDAAyD;AACzD,MAAM,UAAU,oBAAoB,CAAC,OAA4B;IAC/D,OAAO;QACL,OAAO,EAAE,YAAY;QACrB,UAAU,EAAE;YACV,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;YACjC,IAAI,EAAE,OAAO,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI;YACxD,cAAc,EAAE,GAAG;SACpB;KACF,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,UAAkB,EAAE,MAAc,EAAE,SAAiB;IACnF,MAAM,YAAY,GAAG,GAAG,SAAS,KAAK,MAAM,EAAE,CAAA;IAC9C,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC/E,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAA;IACxC,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;IACtD,OAAO,GAAG,UAAU,GAAG,SAAS,aAAa,SAAS,SAAS,OAAO,EAAE,CAAA;AAC1E,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAA+B;IACnE,OAAO;QACL,EAAE,EAAE,UAAU;QACd,KAAK,CAAC,IAAI,CAAC,OAA4B;YACrC,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,KAAK,SAAS;gBACtC,CAAC,CAAC,OAAO,CAAC,UAAU;gBACpB,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;YAC9F,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;gBACnD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;aAC/C,CAAC,CAAA;YACF,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;YAClF,MAAM,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAsD,CAAA;YAClH,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;gBACjD,MAAM,IAAI,KAAK,CAAC,sCAAsC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YACjH,CAAC;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Discord 通道(webhook):embed
|
|
2
|
+
* Discord 通道(webhook):embed 卡片(标题/正文 + kind 颜色),host 端投递。
|
|
3
3
|
*
|
|
4
4
|
* 成功判定:任意 2xx(Discord 通常返回 204 No Content,无 body 可解析,
|
|
5
5
|
* 因此与飞书/企微/钉钉的 errcode 判定不同,不解析响应 JSON)。
|
|
@@ -18,11 +18,10 @@ export interface DiscordEmbedPayload {
|
|
|
18
18
|
embeds: Array<{
|
|
19
19
|
title: string;
|
|
20
20
|
description?: string;
|
|
21
|
-
url: string;
|
|
22
21
|
color: number;
|
|
23
22
|
}>;
|
|
24
23
|
}
|
|
25
|
-
/** 构建 Discord embed 载荷(纯函数;title ≤ 256、description ≤ 4096
|
|
24
|
+
/** 构建 Discord embed 载荷(纯函数;title ≤ 256、description ≤ 4096;不含链接)。 */
|
|
26
25
|
export declare function buildDiscordPayload(payload: NotificationPayload): DiscordEmbedPayload;
|
|
27
26
|
export declare function createDiscordChannel(options: DiscordChannelOptions): NotifyChannel;
|
|
28
27
|
//# sourceMappingURL=discord.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discord.d.ts","sourceRoot":"","sources":["../../src/channels/discord.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAEtE,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,8DAA8D;AAC9D,wBAAgB,YAAY,CAAC,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,GAAG,MAAM,CAMtE;AAED,qCAAqC;AACrC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,KAAK,CAAC;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,
|
|
1
|
+
{"version":3,"file":"discord.d.ts","sourceRoot":"","sources":["../../src/channels/discord.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAEtE,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,8DAA8D;AAC9D,wBAAgB,YAAY,CAAC,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,GAAG,MAAM,CAMtE;AAED,qCAAqC;AACrC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,KAAK,CAAC;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,KAAK,EAAE,MAAM,CAAA;KACd,CAAC,CAAA;CACH;AAED,oEAAoE;AACpE,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,GAAG,mBAAmB,CASrF;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,aAAa,CAclF"}
|
package/lib/channels/discord.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Discord 通道(webhook):embed
|
|
2
|
+
* Discord 通道(webhook):embed 卡片(标题/正文 + kind 颜色),host 端投递。
|
|
3
3
|
*
|
|
4
4
|
* 成功判定:任意 2xx(Discord 通常返回 204 No Content,无 body 可解析,
|
|
5
5
|
* 因此与飞书/企微/钉钉的 errcode 判定不同,不解析响应 JSON)。
|
|
@@ -13,14 +13,13 @@ export function embedColorOf(kind) {
|
|
|
13
13
|
case 'error': return 0xE74C3C;
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
|
-
/** 构建 Discord embed 载荷(纯函数;title ≤ 256、description ≤ 4096
|
|
16
|
+
/** 构建 Discord embed 载荷(纯函数;title ≤ 256、description ≤ 4096;不含链接)。 */
|
|
17
17
|
export function buildDiscordPayload(payload) {
|
|
18
18
|
return {
|
|
19
19
|
username: 'DSH',
|
|
20
20
|
embeds: [{
|
|
21
21
|
title: payload.title.slice(0, 256),
|
|
22
22
|
...(payload.body === '' ? {} : { description: payload.body.slice(0, 4096) }),
|
|
23
|
-
url: payload.url,
|
|
24
23
|
color: embedColorOf(payload.kind),
|
|
25
24
|
}],
|
|
26
25
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discord.js","sourceRoot":"","sources":["../../src/channels/discord.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,8DAA8D;AAC9D,MAAM,UAAU,YAAY,CAAC,IAAiC;IAC5D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,aAAa,CAAC,CAAC,OAAO,QAAQ,CAAA;QACnC,KAAK,WAAW,CAAC,CAAC,OAAO,QAAQ,CAAA;QACjC,KAAK,OAAO,CAAC,CAAC,OAAO,QAAQ,CAAA;IAC/B,CAAC;AACH,CAAC;
|
|
1
|
+
{"version":3,"file":"discord.js","sourceRoot":"","sources":["../../src/channels/discord.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,8DAA8D;AAC9D,MAAM,UAAU,YAAY,CAAC,IAAiC;IAC5D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,aAAa,CAAC,CAAC,OAAO,QAAQ,CAAA;QACnC,KAAK,WAAW,CAAC,CAAC,OAAO,QAAQ,CAAA;QACjC,KAAK,OAAO,CAAC,CAAC,OAAO,QAAQ,CAAA;IAC/B,CAAC;AACH,CAAC;AAYD,oEAAoE;AACpE,MAAM,UAAU,mBAAmB,CAAC,OAA4B;IAC9D,OAAO;QACL,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,CAAC;gBACP,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;gBAClC,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;gBAC5E,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC;aAClC,CAAC;KACH,CAAA;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAA8B;IACjE,OAAO;QACL,EAAE,EAAE,SAAS;QACb,KAAK,CAAC,IAAI,CAAC,OAA4B;YACrC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE;gBAC/C,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;gBAClD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;aAC/C,CAAC,CAAA;YACF,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;YACjF,gCAAgC;QAClC,CAAC;KACF,CAAA;AACH,CAAC"}
|
package/lib/channels/feishu.d.ts
CHANGED
|
@@ -21,27 +21,16 @@ export interface FeishuCardPayload {
|
|
|
21
21
|
};
|
|
22
22
|
template: 'green' | 'orange' | 'red';
|
|
23
23
|
};
|
|
24
|
-
elements:
|
|
24
|
+
elements: Array<{
|
|
25
25
|
tag: 'div';
|
|
26
26
|
text: {
|
|
27
27
|
tag: 'lark_md';
|
|
28
28
|
content: string;
|
|
29
29
|
};
|
|
30
|
-
}
|
|
31
|
-
tag: 'action';
|
|
32
|
-
actions: Array<{
|
|
33
|
-
tag: 'button';
|
|
34
|
-
text: {
|
|
35
|
-
tag: 'plain_text';
|
|
36
|
-
content: string;
|
|
37
|
-
};
|
|
38
|
-
url: string;
|
|
39
|
-
type: 'primary';
|
|
40
|
-
}>;
|
|
41
|
-
})[];
|
|
30
|
+
}>;
|
|
42
31
|
};
|
|
43
32
|
}
|
|
44
|
-
/**
|
|
33
|
+
/** 构建飞书卡片(纯函数;不含任何跳转链接)。 */
|
|
45
34
|
export declare function buildCardPayload(payload: NotificationPayload): FeishuCardPayload;
|
|
46
35
|
/**
|
|
47
36
|
* 按飞书签名规范签名:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feishu.d.ts","sourceRoot":"","sources":["../../src/channels/feishu.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAEtE,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAA;IAClB,2BAA2B;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB;AAWD,gCAAgC;AAChC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,aAAa,CAAA;IACvB,IAAI,EAAE;QACJ,MAAM,EAAE;YAAE,KAAK,EAAE;gBAAE,GAAG,EAAE,YAAY,CAAC;gBAAC,OAAO,EAAE,MAAM,CAAA;aAAE,CAAC;YAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAA;SAAE,CAAA;QAC/F,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"feishu.d.ts","sourceRoot":"","sources":["../../src/channels/feishu.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAEtE,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAA;IAClB,2BAA2B;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB;AAWD,gCAAgC;AAChC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,aAAa,CAAA;IACvB,IAAI,EAAE;QACJ,MAAM,EAAE;YAAE,KAAK,EAAE;gBAAE,GAAG,EAAE,YAAY,CAAC;gBAAC,OAAO,EAAE,MAAM,CAAA;aAAE,CAAC;YAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAA;SAAE,CAAA;QAC/F,QAAQ,EAAE,KAAK,CAAC;YAAE,GAAG,EAAE,KAAK,CAAC;YAAC,IAAI,EAAE;gBAAE,GAAG,EAAE,SAAS,CAAC;gBAAC,OAAO,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,CAAC,CAAA;KAC3E,CAAA;CACF;AAED,4BAA4B;AAC5B,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,mBAAmB,GAAG,iBAAiB,CAehF;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAChD,OAAO,EAAE,CAAC,EACV,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,CAAC,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAIzC;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAuBhF"}
|
package/lib/channels/feishu.js
CHANGED
|
@@ -12,7 +12,7 @@ function cardTemplateOf(kind) {
|
|
|
12
12
|
case 'error': return 'red';
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
|
-
/**
|
|
15
|
+
/** 构建飞书卡片(纯函数;不含任何跳转链接)。 */
|
|
16
16
|
export function buildCardPayload(payload) {
|
|
17
17
|
return {
|
|
18
18
|
msg_type: 'interactive',
|
|
@@ -21,20 +21,11 @@ export function buildCardPayload(payload) {
|
|
|
21
21
|
title: { tag: 'plain_text', content: payload.title },
|
|
22
22
|
template: cardTemplateOf(payload.kind),
|
|
23
23
|
},
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
:
|
|
28
|
-
|
|
29
|
-
tag: 'action',
|
|
30
|
-
actions: [{
|
|
31
|
-
tag: 'button',
|
|
32
|
-
text: { tag: 'plain_text', content: '打开 DSH' },
|
|
33
|
-
url: payload.url,
|
|
34
|
-
type: 'primary',
|
|
35
|
-
}],
|
|
36
|
-
},
|
|
37
|
-
],
|
|
24
|
+
// minimal 级别没有正文:正文退化为标题,保证卡片始终有正文元素
|
|
25
|
+
elements: [{
|
|
26
|
+
tag: 'div',
|
|
27
|
+
text: { tag: 'lark_md', content: payload.body === '' ? payload.title : payload.body },
|
|
28
|
+
}],
|
|
38
29
|
},
|
|
39
30
|
};
|
|
40
31
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feishu.js","sourceRoot":"","sources":["../../src/channels/feishu.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAUxC,mDAAmD;AACnD,SAAS,cAAc,CAAC,IAAiC;IACvD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,aAAa,CAAC,CAAC,OAAO,QAAQ,CAAA;QACnC,KAAK,WAAW,CAAC,CAAC,OAAO,OAAO,CAAA;QAChC,KAAK,OAAO,CAAC,CAAC,OAAO,KAAK,CAAA;IAC5B,CAAC;AACH,CAAC;
|
|
1
|
+
{"version":3,"file":"feishu.js","sourceRoot":"","sources":["../../src/channels/feishu.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telegram.d.ts","sourceRoot":"","sources":["../../src/channels/telegram.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAEtE,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAA;IAChB,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,eAAO,MAAM,iBAAiB,6BAA6B,CAAA;AAE3D,8BAA8B;AAC9B,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAO/C;AAED,sBAAsB;AACtB,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,oBAAoB,EAAE;QAAE,WAAW,EAAE,OAAO,CAAA;KAAE,CAAA;CAC/C;AAED,6CAA6C;AAC7C,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,GAAG,mBAAmB,
|
|
1
|
+
{"version":3,"file":"telegram.d.ts","sourceRoot":"","sources":["../../src/channels/telegram.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAEtE,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAA;IAChB,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,eAAO,MAAM,iBAAiB,6BAA6B,CAAA;AAE3D,8BAA8B;AAC9B,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAO/C;AAED,sBAAsB;AACtB,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,oBAAoB,EAAE;QAAE,WAAW,EAAE,OAAO,CAAA;KAAE,CAAA;CAC/C;AAED,6CAA6C;AAC7C,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,GAAG,mBAAmB,CAStG;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,aAAa,CAkBpF"}
|
package/lib/channels/telegram.js
CHANGED
|
@@ -21,7 +21,6 @@ export function buildTelegramPayload(payload, chatId) {
|
|
|
21
21
|
const lines = [`<b>${escapeHtml(payload.title)}</b>`];
|
|
22
22
|
if (payload.body !== '')
|
|
23
23
|
lines.push(escapeHtml(payload.body));
|
|
24
|
-
lines.push(`<a href="${escapeHtml(payload.url)}">打开 DSH</a>`);
|
|
25
24
|
return {
|
|
26
25
|
chat_id: chatId,
|
|
27
26
|
text: lines.join('\n').slice(0, 4096),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telegram.js","sourceRoot":"","sources":["../../src/channels/telegram.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAWH,MAAM,CAAC,MAAM,iBAAiB,GAAG,0BAA0B,CAAA;AAE3D,8BAA8B;AAC9B,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,IAAI;SACR,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC;SACxB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;SACvB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;SACvB,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC;SACzB,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;AAC7B,CAAC;AAUD,6CAA6C;AAC7C,MAAM,UAAU,oBAAoB,CAAC,OAA4B,EAAE,MAAc;IAC/E,MAAM,KAAK,GAAG,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACrD,IAAI,OAAO,CAAC,IAAI,KAAK,EAAE;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IAC7D,
|
|
1
|
+
{"version":3,"file":"telegram.js","sourceRoot":"","sources":["../../src/channels/telegram.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAWH,MAAM,CAAC,MAAM,iBAAiB,GAAG,0BAA0B,CAAA;AAE3D,8BAA8B;AAC9B,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,IAAI;SACR,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC;SACxB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;SACvB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;SACvB,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC;SACzB,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;AAC7B,CAAC;AAUD,6CAA6C;AAC7C,MAAM,UAAU,oBAAoB,CAAC,OAA4B,EAAE,MAAc;IAC/E,MAAM,KAAK,GAAG,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACrD,IAAI,OAAO,CAAC,IAAI,KAAK,EAAE;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IAC7D,OAAO;QACL,OAAO,EAAE,MAAM;QACf,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;QACrC,UAAU,EAAE,MAAM;QAClB,oBAAoB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;KAC5C,CAAA;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAA+B;IACnE,OAAO;QACL,EAAE,EAAE,UAAU;QACd,KAAK,CAAC,IAAI,CAAC,OAA4B;YACrC,MAAM,QAAQ,GAAG,GAAG,iBAAiB,OAAO,OAAO,CAAC,QAAQ,cAAc,CAAA;YAC1E,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;gBACrC,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;gBACnE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;aAC/C,CAAC,CAAA;YACF,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;YAC9E,MAAM,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAuD,CAAA;YACnH,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;gBAC/C,MAAM,IAAI,KAAK,CAAC,sBAAsB,MAAM,CAAC,WAAW,IAAI,eAAe,EAAE,CAAC,CAAA;YAChF,CAAC;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
|
package/lib/channels/wecom.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 企业微信群机器人通道(webhook):POST markdown 消息,host 端投递。
|
|
3
3
|
*
|
|
4
|
-
* 消息:msgtype=markdown,content 为「加粗标题 +
|
|
4
|
+
* 消息:msgtype=markdown,content 为「加粗标题 + 正文」。
|
|
5
5
|
* 可选加签(机器人「安全设置-加签」):
|
|
6
6
|
* string_to_sign = `${timestamp}\n${secret}`
|
|
7
7
|
* sign = base64(HmacSHA256(string_to_sign, key=secret)) // 无需 URL 编码
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wecom.d.ts","sourceRoot":"","sources":["../../src/channels/wecom.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAEtE,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAA;IAClB,uCAAuC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,0BAA0B;AAC1B,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,UAAU,CAAA;IACnB,QAAQ,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAC9B;AAED,mDAAmD;AACnD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,GAAG,oBAAoB,
|
|
1
|
+
{"version":3,"file":"wecom.d.ts","sourceRoot":"","sources":["../../src/channels/wecom.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAEtE,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAA;IAClB,uCAAuC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,0BAA0B;AAC1B,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,UAAU,CAAA;IACnB,QAAQ,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAC9B;AAED,mDAAmD;AACnD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,GAAG,oBAAoB,CAIpF;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAK1F;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,aAAa,CAoB9E"}
|
package/lib/channels/wecom.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 企业微信群机器人通道(webhook):POST markdown 消息,host 端投递。
|
|
3
3
|
*
|
|
4
|
-
* 消息:msgtype=markdown,content 为「加粗标题 +
|
|
4
|
+
* 消息:msgtype=markdown,content 为「加粗标题 + 正文」。
|
|
5
5
|
* 可选加签(机器人「安全设置-加签」):
|
|
6
6
|
* string_to_sign = `${timestamp}\n${secret}`
|
|
7
7
|
* sign = base64(HmacSHA256(string_to_sign, key=secret)) // 无需 URL 编码
|
|
@@ -14,7 +14,6 @@ export function buildWecomPayload(payload) {
|
|
|
14
14
|
const lines = [`**${payload.title}**`];
|
|
15
15
|
if (payload.body !== '')
|
|
16
16
|
lines.push(payload.body);
|
|
17
|
-
lines.push(`[打开 DSH](${payload.url})`);
|
|
18
17
|
return { msgtype: 'markdown', markdown: { content: lines.join('\n').slice(0, 4000) } };
|
|
19
18
|
}
|
|
20
19
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wecom.js","sourceRoot":"","sources":["../../src/channels/wecom.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAgBxC,mDAAmD;AACnD,MAAM,UAAU,iBAAiB,CAAC,OAA4B;IAC5D,MAAM,KAAK,GAAG,CAAC,KAAK,OAAO,CAAC,KAAK,IAAI,CAAC,CAAA;IACtC,IAAI,OAAO,CAAC,IAAI,KAAK,EAAE;QAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IACjD,
|
|
1
|
+
{"version":3,"file":"wecom.js","sourceRoot":"","sources":["../../src/channels/wecom.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAgBxC,mDAAmD;AACnD,MAAM,UAAU,iBAAiB,CAAC,OAA4B;IAC5D,MAAM,KAAK,GAAG,CAAC,KAAK,OAAO,CAAC,KAAK,IAAI,CAAC,CAAA;IACtC,IAAI,OAAO,CAAC,IAAI,KAAK,EAAE;QAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IACjD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAA;AACxF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,UAAkB,EAAE,MAAc,EAAE,SAAiB;IAChF,MAAM,YAAY,GAAG,GAAG,SAAS,KAAK,MAAM,EAAE,CAAA;IAC9C,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC/E,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;IACtD,OAAO,GAAG,UAAU,GAAG,SAAS,aAAa,SAAS,SAAS,IAAI,EAAE,CAAA;AACvE,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAA4B;IAC7D,OAAO;QACL,EAAE,EAAE,OAAO;QACX,KAAK,CAAC,IAAI,CAAC,OAA4B;YACrC,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,KAAK,SAAS;gBACtC,CAAC,CAAC,OAAO,CAAC,UAAU;gBACpB,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;YAC3F,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;gBAChD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;aAC/C,CAAC,CAAA;YACF,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;YAC/E,MAAM,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAsD,CAAA;YAClH,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;gBACjD,MAAM,IAAI,KAAK,CAAC,mCAAmC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YAC9G,CAAC;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
|