@hardlydifficult/chat 1.0.1 → 1.0.2
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 +134 -45
- package/dist/Channel.d.ts +24 -13
- package/dist/Channel.d.ts.map +1 -1
- package/dist/Channel.js +99 -46
- package/dist/Channel.js.map +1 -1
- package/dist/ChatClient.d.ts +2 -2
- package/dist/ChatClient.d.ts.map +1 -1
- package/dist/ChatClient.js +5 -1
- package/dist/ChatClient.js.map +1 -1
- package/dist/Message.d.ts +91 -6
- package/dist/Message.d.ts.map +1 -1
- package/dist/Message.js +138 -9
- package/dist/Message.js.map +1 -1
- package/dist/discord/DiscordChatClient.d.ts +19 -3
- package/dist/discord/DiscordChatClient.d.ts.map +1 -1
- package/dist/discord/DiscordChatClient.js +79 -15
- package/dist/discord/DiscordChatClient.js.map +1 -1
- package/dist/discord/index.d.ts +1 -1
- package/dist/discord/index.d.ts.map +1 -1
- package/dist/discord/index.js +5 -1
- package/dist/discord/index.js.map +1 -1
- package/dist/index.d.ts +8 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -10
- package/dist/index.js.map +1 -1
- package/dist/outputters/discord.d.ts +19 -0
- package/dist/outputters/discord.d.ts.map +1 -0
- package/dist/outputters/discord.js +64 -0
- package/dist/outputters/discord.js.map +1 -0
- package/dist/outputters/index.d.ts +4 -0
- package/dist/outputters/index.d.ts.map +1 -0
- package/dist/outputters/index.js +8 -0
- package/dist/outputters/index.js.map +1 -0
- package/dist/outputters/slack.d.ts +24 -0
- package/dist/outputters/slack.d.ts.map +1 -0
- package/dist/outputters/slack.js +149 -0
- package/dist/outputters/slack.js.map +1 -0
- package/dist/slack/SlackChatClient.d.ts +12 -2
- package/dist/slack/SlackChatClient.d.ts.map +1 -1
- package/dist/slack/SlackChatClient.js +54 -8
- package/dist/slack/SlackChatClient.js.map +1 -1
- package/dist/slack/index.d.ts +1 -1
- package/dist/slack/index.d.ts.map +1 -1
- package/dist/slack/index.js +5 -1
- package/dist/slack/index.js.map +1 -1
- package/dist/types.d.ts +12 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +5 -1
- package/dist/types.js.map +1 -1
- package/dist/utils.d.ts +7 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +10 -0
- package/dist/utils.js.map +1 -0
- package/package.json +5 -2
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAkDA,4CASC;AA3DD,sBAAsB;AACtB,iCAYiB;AADf,4FAAA,GAAG,OAAA;AAGL,eAAe;AACf,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;AACnB,qCAA4D;AAAnD,kGAAA,OAAO,OAAA;AAChB,qCAA0E;AAAjE,kGAAA,OAAO,OAAA;AAAE,uGAAA,YAAY,OAAA;AAE9B,2BAA2B;AAC3B,yCAAoD;AAA3C,0GAAA,iBAAiB,OAAA;AAC1B,uCAAgD;AAAvC,wGAAA,eAAe,OAAA;AAKxB,2CAAoD;AACpD,yCAAgD;AAEhD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAgB,gBAAgB,CAAC,MAAkB;IACjD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,SAAS;YACZ,OAAO,IAAI,yBAAiB,CAAC,MAAM,CAAC,CAAC;QACvC,KAAK,OAAO;YACV,OAAO,IAAI,uBAAe,CAAC,MAAM,CAAC,CAAC;QACrC;YACE,MAAM,IAAI,KAAK,CAAC,0BAA2B,MAA2B,CAAC,IAAI,EAAE,CAAC,CAAC;IACnF,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Block } from '@hardlydifficult/document-generator';
|
|
2
|
+
export interface DiscordEmbedField {
|
|
3
|
+
name: string;
|
|
4
|
+
value: string;
|
|
5
|
+
inline?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export interface DiscordEmbed {
|
|
8
|
+
title?: string;
|
|
9
|
+
description?: string;
|
|
10
|
+
fields?: DiscordEmbedField[];
|
|
11
|
+
image?: {
|
|
12
|
+
url: string;
|
|
13
|
+
};
|
|
14
|
+
footer?: {
|
|
15
|
+
text: string;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export declare function toDiscordEmbed(blocks: Block[]): DiscordEmbed;
|
|
19
|
+
//# sourceMappingURL=discord.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discord.d.ts","sourceRoot":"","sources":["../../src/outputters/discord.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAEjE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACxB,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3B;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,YAAY,CAkE5D"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toDiscordEmbed = toDiscordEmbed;
|
|
4
|
+
function toDiscordEmbed(blocks) {
|
|
5
|
+
const embed = {};
|
|
6
|
+
const descriptionParts = [];
|
|
7
|
+
let titleSet = false;
|
|
8
|
+
let footerSet = false;
|
|
9
|
+
for (const block of blocks) {
|
|
10
|
+
switch (block.type) {
|
|
11
|
+
case 'header':
|
|
12
|
+
if (!titleSet) {
|
|
13
|
+
embed.title = block.text;
|
|
14
|
+
titleSet = true;
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
// Subsequent headers go into description
|
|
18
|
+
descriptionParts.push(`**${block.text}**`);
|
|
19
|
+
}
|
|
20
|
+
break;
|
|
21
|
+
case 'text':
|
|
22
|
+
descriptionParts.push(block.content);
|
|
23
|
+
break;
|
|
24
|
+
case 'list': {
|
|
25
|
+
const listItems = block.items.map((item) => `• ${item}`).join('\n');
|
|
26
|
+
descriptionParts.push(listItems);
|
|
27
|
+
break;
|
|
28
|
+
}
|
|
29
|
+
case 'divider':
|
|
30
|
+
descriptionParts.push('───────────');
|
|
31
|
+
break;
|
|
32
|
+
case 'context':
|
|
33
|
+
if (!footerSet) {
|
|
34
|
+
embed.footer = { text: block.text };
|
|
35
|
+
footerSet = true;
|
|
36
|
+
}
|
|
37
|
+
else if (embed.footer) {
|
|
38
|
+
// If footer already set, append to existing footer
|
|
39
|
+
embed.footer = { text: `${embed.footer.text} | ${block.text}` };
|
|
40
|
+
}
|
|
41
|
+
break;
|
|
42
|
+
case 'link':
|
|
43
|
+
descriptionParts.push(`[${block.text}](${block.url})`);
|
|
44
|
+
break;
|
|
45
|
+
case 'code':
|
|
46
|
+
if (block.multiline) {
|
|
47
|
+
descriptionParts.push(`\`\`\`\n${block.content}\n\`\`\``);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
descriptionParts.push(`\`${block.content}\``);
|
|
51
|
+
}
|
|
52
|
+
break;
|
|
53
|
+
case 'image':
|
|
54
|
+
embed.image = { url: block.url };
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
// Join description parts with double newlines for spacing
|
|
59
|
+
if (descriptionParts.length > 0) {
|
|
60
|
+
embed.description = descriptionParts.join('\n\n');
|
|
61
|
+
}
|
|
62
|
+
return embed;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=discord.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discord.js","sourceRoot":"","sources":["../../src/outputters/discord.ts"],"names":[],"mappings":";;AAgBA,wCAkEC;AAlED,SAAgB,cAAc,CAAC,MAAe;IAC5C,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,MAAM,gBAAgB,GAAa,EAAE,CAAC;IACtC,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,QAAQ;gBACX,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;oBACzB,QAAQ,GAAG,IAAI,CAAC;gBAClB,CAAC;qBAAM,CAAC;oBACN,yCAAyC;oBACzC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;gBAC7C,CAAC;gBACD,MAAM;YAER,KAAK,MAAM;gBACT,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACrC,MAAM;YAER,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpE,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACjC,MAAM;YACR,CAAC;YAED,KAAK,SAAS;gBACZ,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACrC,MAAM;YAER,KAAK,SAAS;gBACZ,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,KAAK,CAAC,MAAM,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;oBACpC,SAAS,GAAG,IAAI,CAAC;gBACnB,CAAC;qBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;oBACxB,mDAAmD;oBACnD,KAAK,CAAC,MAAM,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;gBAClE,CAAC;gBACD,MAAM;YAER,KAAK,MAAM;gBACT,gBAAgB,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;gBACvD,MAAM;YAER,KAAK,MAAM;gBACT,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;oBACpB,gBAAgB,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;gBAC5D,CAAC;qBAAM,CAAC;oBACN,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;gBAChD,CAAC;gBACD,MAAM;YAER,KAAK,OAAO;gBACV,KAAK,CAAC,KAAK,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;gBACjC,MAAM;QACV,CAAC;IACH,CAAC;IAED,0DAA0D;IAC1D,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,KAAK,CAAC,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/outputters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toSlackBlocks = exports.toDiscordEmbed = void 0;
|
|
4
|
+
var discord_1 = require("./discord");
|
|
5
|
+
Object.defineProperty(exports, "toDiscordEmbed", { enumerable: true, get: function () { return discord_1.toDiscordEmbed; } });
|
|
6
|
+
var slack_1 = require("./slack");
|
|
7
|
+
Object.defineProperty(exports, "toSlackBlocks", { enumerable: true, get: function () { return slack_1.toSlackBlocks; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/outputters/index.ts"],"names":[],"mappings":";;;AAAA,qCAA2C;AAAlC,yGAAA,cAAc,OAAA;AACvB,iCAAwC;AAA/B,sGAAA,aAAa,OAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Block } from '@hardlydifficult/document-generator';
|
|
2
|
+
/**
|
|
3
|
+
* Slack Block Kit text object
|
|
4
|
+
*/
|
|
5
|
+
export interface SlackTextObject {
|
|
6
|
+
type: 'plain_text' | 'mrkdwn';
|
|
7
|
+
text: string;
|
|
8
|
+
emoji?: boolean;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Slack Block Kit block
|
|
12
|
+
*/
|
|
13
|
+
export interface SlackBlock {
|
|
14
|
+
type: string;
|
|
15
|
+
text?: SlackTextObject;
|
|
16
|
+
elements?: SlackTextObject[];
|
|
17
|
+
image_url?: string;
|
|
18
|
+
alt_text?: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Converts Document blocks to Slack Block Kit format
|
|
22
|
+
*/
|
|
23
|
+
export declare function toSlackBlocks(blocks: Block[]): SlackBlock[];
|
|
24
|
+
//# sourceMappingURL=slack.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slack.d.ts","sourceRoot":"","sources":["../../src/outputters/slack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAGjE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,YAAY,GAAG,QAAQ,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAqCD;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU,EAAE,CA0H3D"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toSlackBlocks = toSlackBlocks;
|
|
4
|
+
const document_generator_1 = require("@hardlydifficult/document-generator");
|
|
5
|
+
/**
|
|
6
|
+
* Chunks text into smaller pieces, splitting at newlines when possible
|
|
7
|
+
* to preserve readability. Each chunk will be at most maxLen characters.
|
|
8
|
+
*/
|
|
9
|
+
function chunkText(text, maxLen = 2900) {
|
|
10
|
+
if (text.length <= maxLen) {
|
|
11
|
+
return [text];
|
|
12
|
+
}
|
|
13
|
+
const chunks = [];
|
|
14
|
+
let remaining = text;
|
|
15
|
+
while (remaining.length > maxLen) {
|
|
16
|
+
// Try to find a newline near the maxLen boundary
|
|
17
|
+
const searchStart = Math.max(0, maxLen - 500); // Look back up to 500 chars
|
|
18
|
+
const newlineIndex = remaining.lastIndexOf('\n', maxLen);
|
|
19
|
+
if (newlineIndex > searchStart) {
|
|
20
|
+
// Split at newline
|
|
21
|
+
chunks.push(remaining.slice(0, newlineIndex));
|
|
22
|
+
remaining = remaining.slice(newlineIndex + 1);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
// No good newline found, split at maxLen
|
|
26
|
+
chunks.push(remaining.slice(0, maxLen));
|
|
27
|
+
remaining = remaining.slice(maxLen);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
if (remaining.length > 0) {
|
|
31
|
+
chunks.push(remaining);
|
|
32
|
+
}
|
|
33
|
+
return chunks;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Converts Document blocks to Slack Block Kit format
|
|
37
|
+
*/
|
|
38
|
+
function toSlackBlocks(blocks) {
|
|
39
|
+
const slackBlocks = [];
|
|
40
|
+
for (const block of blocks) {
|
|
41
|
+
switch (block.type) {
|
|
42
|
+
case 'header': {
|
|
43
|
+
slackBlocks.push({
|
|
44
|
+
type: 'header',
|
|
45
|
+
text: {
|
|
46
|
+
type: 'plain_text',
|
|
47
|
+
text: block.text,
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
case 'text': {
|
|
53
|
+
// Convert markdown to Slack format
|
|
54
|
+
const slackText = (0, document_generator_1.convertMarkdown)(block.content, 'slack');
|
|
55
|
+
// Chunk if necessary
|
|
56
|
+
const chunks = chunkText(slackText);
|
|
57
|
+
for (const chunk of chunks) {
|
|
58
|
+
slackBlocks.push({
|
|
59
|
+
type: 'section',
|
|
60
|
+
text: {
|
|
61
|
+
type: 'mrkdwn',
|
|
62
|
+
text: chunk,
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
case 'list': {
|
|
69
|
+
// Convert list items to Slack markdown format
|
|
70
|
+
const listText = block.items.map((item) => `• ${item}`).join('\n');
|
|
71
|
+
const slackText = (0, document_generator_1.convertMarkdown)(listText, 'slack');
|
|
72
|
+
// Chunk if necessary
|
|
73
|
+
const chunks = chunkText(slackText);
|
|
74
|
+
for (const chunk of chunks) {
|
|
75
|
+
slackBlocks.push({
|
|
76
|
+
type: 'section',
|
|
77
|
+
text: {
|
|
78
|
+
type: 'mrkdwn',
|
|
79
|
+
text: chunk,
|
|
80
|
+
},
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
case 'divider': {
|
|
86
|
+
slackBlocks.push({
|
|
87
|
+
type: 'divider',
|
|
88
|
+
});
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
91
|
+
case 'context': {
|
|
92
|
+
const slackText = (0, document_generator_1.convertMarkdown)(block.text, 'slack');
|
|
93
|
+
slackBlocks.push({
|
|
94
|
+
type: 'context',
|
|
95
|
+
elements: [
|
|
96
|
+
{
|
|
97
|
+
type: 'mrkdwn',
|
|
98
|
+
text: slackText,
|
|
99
|
+
},
|
|
100
|
+
],
|
|
101
|
+
});
|
|
102
|
+
break;
|
|
103
|
+
}
|
|
104
|
+
case 'link': {
|
|
105
|
+
// Slack link format: <url|text>
|
|
106
|
+
const slackText = (0, document_generator_1.convertMarkdown)(block.text, 'slack');
|
|
107
|
+
slackBlocks.push({
|
|
108
|
+
type: 'section',
|
|
109
|
+
text: {
|
|
110
|
+
type: 'mrkdwn',
|
|
111
|
+
text: `<${block.url}|${slackText}>`,
|
|
112
|
+
},
|
|
113
|
+
});
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
case 'code': {
|
|
117
|
+
// Format code block with backticks
|
|
118
|
+
let codeText;
|
|
119
|
+
if (block.multiline) {
|
|
120
|
+
codeText = `\`\`\`\n${block.content}\n\`\`\``;
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
codeText = `\`${block.content}\``;
|
|
124
|
+
}
|
|
125
|
+
slackBlocks.push({
|
|
126
|
+
type: 'section',
|
|
127
|
+
text: {
|
|
128
|
+
type: 'mrkdwn',
|
|
129
|
+
text: codeText,
|
|
130
|
+
},
|
|
131
|
+
});
|
|
132
|
+
break;
|
|
133
|
+
}
|
|
134
|
+
case 'image': {
|
|
135
|
+
slackBlocks.push({
|
|
136
|
+
type: 'image',
|
|
137
|
+
image_url: block.url,
|
|
138
|
+
alt_text: block.alt !== undefined && block.alt !== '' ? block.alt : 'image',
|
|
139
|
+
});
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
142
|
+
default:
|
|
143
|
+
// Unknown block type, skip
|
|
144
|
+
break;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return slackBlocks;
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=slack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slack.js","sourceRoot":"","sources":["../../src/outputters/slack.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ChatClient } from '../ChatClient.js';
|
|
2
2
|
import { Channel, type ChannelOperations } from '../Channel.js';
|
|
3
|
-
import type { SlackConfig, MessageData, ReactionCallback } from '../types.js';
|
|
3
|
+
import type { SlackConfig, MessageData, ReactionCallback, MessageContent } from '../types.js';
|
|
4
4
|
/**
|
|
5
5
|
* Slack chat client implementation using @slack/bolt
|
|
6
6
|
*/
|
|
@@ -19,7 +19,17 @@ export declare class SlackChatClient extends ChatClient implements ChannelOperat
|
|
|
19
19
|
/**
|
|
20
20
|
* Post a message to a Slack channel
|
|
21
21
|
*/
|
|
22
|
-
postMessage(channelId: string,
|
|
22
|
+
postMessage(channelId: string, content: MessageContent, options?: {
|
|
23
|
+
threadTs?: string;
|
|
24
|
+
}): Promise<MessageData>;
|
|
25
|
+
/**
|
|
26
|
+
* Update a message in a Slack channel
|
|
27
|
+
*/
|
|
28
|
+
updateMessage(messageId: string, channelId: string, content: MessageContent): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Delete a message from a Slack channel
|
|
31
|
+
*/
|
|
32
|
+
deleteMessage(messageId: string, channelId: string): Promise<void>;
|
|
23
33
|
/**
|
|
24
34
|
* Add a reaction to a message
|
|
25
35
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SlackChatClient.d.ts","sourceRoot":"","sources":["../../src/slack/SlackChatClient.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"SlackChatClient.d.ts","sourceRoot":"","sources":["../../src/slack/SlackChatClient.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,gBAAgB,EAGhB,cAAc,EACf,MAAM,aAAa,CAAC;AAIrB;;GAEG;AACH,qBAAa,eAAgB,SAAQ,UAAW,YAAW,iBAAiB;IAC1E,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,iBAAiB,CAA4C;gBAEzD,MAAM,EAAE,WAAW;IAyC/B;;OAEG;IACG,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKlD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC;;OAEG;IACG,WAAW,CACf,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,EACvB,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9B,OAAO,CAAC,WAAW,CAAC;IA4BvB;;OAEG;IACG,aAAa,CACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,CAAC;IAmBhB;;OAEG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOxE;;OAEG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWrF;;OAEG;IACH,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,GAAG,MAAM,IAAI;CAmBhF"}
|
|
@@ -1,17 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SlackChatClient = void 0;
|
|
4
|
+
const bolt_1 = require("@slack/bolt");
|
|
5
|
+
const ChatClient_js_1 = require("../ChatClient.js");
|
|
6
|
+
const Channel_js_1 = require("../Channel.js");
|
|
7
|
+
const slack_js_1 = require("../outputters/slack.js");
|
|
8
|
+
const utils_js_1 = require("../utils.js");
|
|
4
9
|
/**
|
|
5
10
|
* Slack chat client implementation using @slack/bolt
|
|
6
11
|
*/
|
|
7
|
-
|
|
12
|
+
class SlackChatClient extends ChatClient_js_1.ChatClient {
|
|
8
13
|
app;
|
|
9
14
|
reactionCallbacks = new Map();
|
|
10
15
|
constructor(config) {
|
|
11
16
|
super(config);
|
|
12
17
|
const token = config.token ?? process.env.SLACK_BOT_TOKEN;
|
|
13
18
|
const appToken = config.appToken ?? process.env.SLACK_APP_TOKEN;
|
|
14
|
-
this.app = new App({
|
|
19
|
+
this.app = new bolt_1.App({
|
|
15
20
|
token,
|
|
16
21
|
appToken,
|
|
17
22
|
socketMode: config.socketMode ?? true,
|
|
@@ -46,7 +51,7 @@ export class SlackChatClient extends ChatClient {
|
|
|
46
51
|
*/
|
|
47
52
|
async connect(channelId) {
|
|
48
53
|
await this.app.start();
|
|
49
|
-
return new Channel(channelId, 'slack', this);
|
|
54
|
+
return new Channel_js_1.Channel(channelId, 'slack', this);
|
|
50
55
|
}
|
|
51
56
|
/**
|
|
52
57
|
* Disconnect from Slack
|
|
@@ -58,10 +63,21 @@ export class SlackChatClient extends ChatClient {
|
|
|
58
63
|
/**
|
|
59
64
|
* Post a message to a Slack channel
|
|
60
65
|
*/
|
|
61
|
-
async postMessage(channelId,
|
|
66
|
+
async postMessage(channelId, content, options) {
|
|
67
|
+
let text;
|
|
68
|
+
let blocks;
|
|
69
|
+
if ((0, utils_js_1.isDocument)(content)) {
|
|
70
|
+
blocks = (0, slack_js_1.toSlackBlocks)(content.getBlocks());
|
|
71
|
+
text = content.toPlainText().trim() || 'Message'; // fallback text for accessibility
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
text = content;
|
|
75
|
+
}
|
|
62
76
|
const result = await this.app.client.chat.postMessage({
|
|
63
77
|
channel: channelId,
|
|
64
|
-
text
|
|
78
|
+
text,
|
|
79
|
+
blocks,
|
|
80
|
+
thread_ts: options?.threadTs,
|
|
65
81
|
});
|
|
66
82
|
if (result.ts === undefined) {
|
|
67
83
|
throw new Error('Slack API did not return a message timestamp');
|
|
@@ -72,6 +88,35 @@ export class SlackChatClient extends ChatClient {
|
|
|
72
88
|
platform: 'slack',
|
|
73
89
|
};
|
|
74
90
|
}
|
|
91
|
+
/**
|
|
92
|
+
* Update a message in a Slack channel
|
|
93
|
+
*/
|
|
94
|
+
async updateMessage(messageId, channelId, content) {
|
|
95
|
+
let text;
|
|
96
|
+
let blocks;
|
|
97
|
+
if ((0, utils_js_1.isDocument)(content)) {
|
|
98
|
+
blocks = (0, slack_js_1.toSlackBlocks)(content.getBlocks());
|
|
99
|
+
text = content.toPlainText().trim() || 'Message';
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
text = content;
|
|
103
|
+
}
|
|
104
|
+
await this.app.client.chat.update({
|
|
105
|
+
channel: channelId,
|
|
106
|
+
ts: messageId,
|
|
107
|
+
text,
|
|
108
|
+
blocks,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Delete a message from a Slack channel
|
|
113
|
+
*/
|
|
114
|
+
async deleteMessage(messageId, channelId) {
|
|
115
|
+
await this.app.client.chat.delete({
|
|
116
|
+
channel: channelId,
|
|
117
|
+
ts: messageId,
|
|
118
|
+
});
|
|
119
|
+
}
|
|
75
120
|
/**
|
|
76
121
|
* Add a reaction to a message
|
|
77
122
|
*/
|
|
@@ -106,4 +151,5 @@ export class SlackChatClient extends ChatClient {
|
|
|
106
151
|
};
|
|
107
152
|
}
|
|
108
153
|
}
|
|
154
|
+
exports.SlackChatClient = SlackChatClient;
|
|
109
155
|
//# sourceMappingURL=SlackChatClient.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SlackChatClient.js","sourceRoot":"","sources":["../../src/slack/SlackChatClient.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"SlackChatClient.js","sourceRoot":"","sources":["../../src/slack/SlackChatClient.ts"],"names":[],"mappings":"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"}
|
package/dist/slack/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { SlackChatClient } from './SlackChatClient
|
|
1
|
+
export { SlackChatClient } from './SlackChatClient';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/slack/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/slack/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/slack/index.js
CHANGED
|
@@ -1,2 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SlackChatClient = void 0;
|
|
4
|
+
var SlackChatClient_1 = require("./SlackChatClient");
|
|
5
|
+
Object.defineProperty(exports, "SlackChatClient", { enumerable: true, get: function () { return SlackChatClient_1.SlackChatClient; } });
|
|
2
6
|
//# sourceMappingURL=index.js.map
|
package/dist/slack/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/slack/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/slack/index.ts"],"names":[],"mappings":";;;AAAA,qDAAoD;AAA3C,kHAAA,eAAe,OAAA"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { Document } from '@hardlydifficult/document-generator';
|
|
2
|
+
export { doc, type Document } from '@hardlydifficult/document-generator';
|
|
1
3
|
/**
|
|
2
4
|
* Configuration for Discord client
|
|
3
5
|
*/
|
|
@@ -54,4 +56,14 @@ export interface MessageData {
|
|
|
54
56
|
channelId: string;
|
|
55
57
|
platform: Platform;
|
|
56
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* Message content can be string or Document
|
|
61
|
+
*/
|
|
62
|
+
export type MessageContent = string | Document;
|
|
63
|
+
/**
|
|
64
|
+
* Options for posting messages with thread support
|
|
65
|
+
*/
|
|
66
|
+
export interface PostMessageOptions {
|
|
67
|
+
threadTs?: string;
|
|
68
|
+
}
|
|
57
69
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG,WAAW,CAAC;AAErD;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,IAAI,EAAE,IAAI,CAAC;IACX,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE9E;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
|
package/dist/types.js
CHANGED
|
@@ -1,2 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.doc = void 0;
|
|
4
|
+
var document_generator_1 = require("@hardlydifficult/document-generator");
|
|
5
|
+
Object.defineProperty(exports, "doc", { enumerable: true, get: function () { return document_generator_1.doc; } });
|
|
2
6
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAGA,0EAAyE;AAAhE,yGAAA,GAAG,OAAA"}
|
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { MessageContent } from './types';
|
|
2
|
+
import type { Document } from '@hardlydifficult/document-generator';
|
|
3
|
+
/**
|
|
4
|
+
* Type guard to check if content is a Document
|
|
5
|
+
*/
|
|
6
|
+
export declare function isDocument(content: MessageContent): content is Document;
|
|
7
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAEpE;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,IAAI,QAAQ,CAEvE"}
|
package/dist/utils.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isDocument = isDocument;
|
|
4
|
+
/**
|
|
5
|
+
* Type guard to check if content is a Document
|
|
6
|
+
*/
|
|
7
|
+
function isDocument(content) {
|
|
8
|
+
return typeof content !== 'string' && 'getBlocks' in content;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;AAMA,gCAEC;AALD;;GAEG;AACH,SAAgB,UAAU,CAAC,OAAuB;IAChD,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,WAAW,IAAI,OAAO,CAAC;AAC/D,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hardlydifficult/chat",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"type": "module",
|
|
3
|
+
"version": "1.0.2",
|
|
5
4
|
"main": "./dist/index.js",
|
|
6
5
|
"types": "./dist/index.d.ts",
|
|
7
6
|
"files": [
|
|
@@ -20,8 +19,12 @@
|
|
|
20
19
|
"discord.js": "14.25.1"
|
|
21
20
|
},
|
|
22
21
|
"devDependencies": {
|
|
22
|
+
"@hardlydifficult/document-generator": "file:../documentGenerator",
|
|
23
23
|
"@types/node": "20.19.31",
|
|
24
24
|
"typescript": "5.8.3",
|
|
25
25
|
"vitest": "1.6.1"
|
|
26
|
+
},
|
|
27
|
+
"peerDependencies": {
|
|
28
|
+
"@hardlydifficult/document-generator": ">=1.0.0"
|
|
26
29
|
}
|
|
27
30
|
}
|