@hardlydifficult/chat 1.1.3 → 1.1.5

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 (41) hide show
  1. package/README.md +112 -118
  2. package/dist/Channel.d.ts +34 -8
  3. package/dist/Channel.d.ts.map +1 -1
  4. package/dist/Channel.js +52 -22
  5. package/dist/Channel.js.map +1 -1
  6. package/dist/ChatClient.d.ts +2 -2
  7. package/dist/ChatClient.d.ts.map +1 -1
  8. package/dist/Message.d.ts +21 -14
  9. package/dist/Message.d.ts.map +1 -1
  10. package/dist/Message.js +33 -18
  11. package/dist/Message.js.map +1 -1
  12. package/dist/discord/DiscordChatClient.d.ts +62 -3
  13. package/dist/discord/DiscordChatClient.d.ts.map +1 -1
  14. package/dist/discord/DiscordChatClient.js +220 -22
  15. package/dist/discord/DiscordChatClient.js.map +1 -1
  16. package/dist/discord/index.d.ts +1 -1
  17. package/dist/index.d.ts +8 -8
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +10 -10
  20. package/dist/index.js.map +1 -1
  21. package/dist/outputters/discord.d.ts +1 -1
  22. package/dist/outputters/discord.d.ts.map +1 -1
  23. package/dist/outputters/discord.js +14 -11
  24. package/dist/outputters/discord.js.map +1 -1
  25. package/dist/outputters/index.d.ts +3 -3
  26. package/dist/outputters/slack.d.ts +2 -2
  27. package/dist/outputters/slack.d.ts.map +1 -1
  28. package/dist/outputters/slack.js +29 -29
  29. package/dist/outputters/slack.js.map +1 -1
  30. package/dist/slack/SlackChatClient.d.ts +36 -5
  31. package/dist/slack/SlackChatClient.d.ts.map +1 -1
  32. package/dist/slack/SlackChatClient.js +206 -13
  33. package/dist/slack/SlackChatClient.js.map +1 -1
  34. package/dist/slack/index.d.ts +1 -1
  35. package/dist/types.d.ts +67 -10
  36. package/dist/types.d.ts.map +1 -1
  37. package/dist/utils.d.ts +2 -2
  38. package/dist/utils.d.ts.map +1 -1
  39. package/dist/utils.js +1 -1
  40. package/dist/utils.js.map +1 -1
  41. package/package.json +3 -3
@@ -2,8 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SlackChatClient = void 0;
4
4
  const bolt_1 = require("@slack/bolt");
5
- const ChatClient_js_1 = require("../ChatClient.js");
6
5
  const Channel_js_1 = require("../Channel.js");
6
+ const ChatClient_js_1 = require("../ChatClient.js");
7
7
  const slack_js_1 = require("../outputters/slack.js");
8
8
  const utils_js_1 = require("../utils.js");
9
9
  /**
@@ -12,6 +12,9 @@ const utils_js_1 = require("../utils.js");
12
12
  class SlackChatClient extends ChatClient_js_1.ChatClient {
13
13
  app;
14
14
  reactionCallbacks = new Map();
15
+ messageCallbacks = new Map();
16
+ disconnectCallbacks = new Set();
17
+ errorCallbacks = new Set();
15
18
  constructor(config) {
16
19
  super(config);
17
20
  const token = config.token ?? process.env.SLACK_BOT_TOKEN;
@@ -21,8 +24,20 @@ class SlackChatClient extends ChatClient_js_1.ChatClient {
21
24
  appToken,
22
25
  socketMode: config.socketMode ?? true,
23
26
  });
27
+ // Forward @slack/bolt errors to registered error callbacks
28
+ this.app.error(async (error) => {
29
+ const wrappedError = error instanceof Error ? error : new Error(String(error));
30
+ for (const callback of this.errorCallbacks) {
31
+ try {
32
+ await callback(wrappedError);
33
+ }
34
+ catch (err) {
35
+ console.error("Error callback error:", err);
36
+ }
37
+ }
38
+ });
24
39
  // Set up global reaction event listener
25
- this.app.event('reaction_added', async ({ event }) => {
40
+ this.app.event("reaction_added", async ({ event }) => {
26
41
  const channelId = event.item.channel;
27
42
  const callbacks = this.reactionCallbacks.get(channelId);
28
43
  if (!callbacks || callbacks.size === 0) {
@@ -33,7 +48,7 @@ class SlackChatClient extends ChatClient_js_1.ChatClient {
33
48
  emoji: event.reaction,
34
49
  user,
35
50
  messageId: event.item.ts,
36
- channelId: channelId,
51
+ channelId,
37
52
  timestamp: new Date(parseFloat(event.event_ts) * 1000),
38
53
  };
39
54
  for (const callback of callbacks) {
@@ -41,7 +56,41 @@ class SlackChatClient extends ChatClient_js_1.ChatClient {
41
56
  await Promise.resolve(callback(reactionEvent));
42
57
  }
43
58
  catch (err) {
44
- console.error('Reaction callback error:', err);
59
+ console.error("Reaction callback error:", err);
60
+ }
61
+ }
62
+ });
63
+ // Set up global message event listener
64
+ this.app.event("message", async ({ event, context }) => {
65
+ const channelId = event.channel;
66
+ const callbacks = this.messageCallbacks.get(channelId);
67
+ if (!callbacks || callbacks.size === 0) {
68
+ return;
69
+ }
70
+ // Skip bot's own messages
71
+ if (context.botId !== undefined &&
72
+ context.botId !== "" &&
73
+ "bot_id" in event &&
74
+ event.bot_id === context.botId) {
75
+ return;
76
+ }
77
+ const user = {
78
+ id: "user" in event ? (event.user ?? "") : "",
79
+ username: undefined,
80
+ };
81
+ const messageEvent = {
82
+ id: "ts" in event ? event.ts : "",
83
+ content: "text" in event ? (event.text ?? "") : "",
84
+ author: user,
85
+ channelId,
86
+ timestamp: "ts" in event ? new Date(parseFloat(event.ts) * 1000) : new Date(),
87
+ };
88
+ for (const callback of callbacks) {
89
+ try {
90
+ await Promise.resolve(callback(messageEvent));
91
+ }
92
+ catch (err) {
93
+ console.error("Message callback error:", err);
45
94
  }
46
95
  }
47
96
  });
@@ -51,7 +100,7 @@ class SlackChatClient extends ChatClient_js_1.ChatClient {
51
100
  */
52
101
  async connect(channelId) {
53
102
  await this.app.start();
54
- return new Channel_js_1.Channel(channelId, 'slack', this);
103
+ return new Channel_js_1.Channel(channelId, "slack", this);
55
104
  }
56
105
  /**
57
106
  * Disconnect from Slack
@@ -59,6 +108,9 @@ class SlackChatClient extends ChatClient_js_1.ChatClient {
59
108
  async disconnect() {
60
109
  await this.app.stop();
61
110
  this.reactionCallbacks.clear();
111
+ this.messageCallbacks.clear();
112
+ this.disconnectCallbacks.clear();
113
+ this.errorCallbacks.clear();
62
114
  }
63
115
  /**
64
116
  * Post a message to a Slack channel
@@ -68,26 +120,57 @@ class SlackChatClient extends ChatClient_js_1.ChatClient {
68
120
  let blocks;
69
121
  if ((0, utils_js_1.isDocument)(content)) {
70
122
  blocks = (0, slack_js_1.toSlackBlocks)(content.getBlocks());
71
- text = content.toPlainText().trim() || 'Message'; // fallback text for accessibility
123
+ text = content.toPlainText().trim() || "Message"; // fallback text for accessibility
72
124
  }
73
125
  else {
74
126
  text = content;
75
127
  }
128
+ // If files are provided, upload them and attach to the message
129
+ if (options?.files && options.files.length > 0) {
130
+ for (let i = 0; i < options.files.length; i++) {
131
+ const file = options.files[i];
132
+ await this.app.client.filesUploadV2({
133
+ channel_id: channelId,
134
+ filename: file.name,
135
+ // Only attach the text as initial_comment on the first file to avoid duplicates
136
+ ...(i === 0 ? { initial_comment: text } : {}),
137
+ thread_ts: options.threadTs,
138
+ // String content uses the content field; binary uses the file field
139
+ ...(typeof file.content === "string"
140
+ ? { content: file.content }
141
+ : { file: file.content }),
142
+ });
143
+ }
144
+ // Post the text message separately if there are also blocks (rich document)
145
+ if (blocks) {
146
+ const result = await this.app.client.chat.postMessage({
147
+ channel: channelId,
148
+ text,
149
+ blocks,
150
+ thread_ts: options.threadTs,
151
+ });
152
+ if (result.ts === undefined) {
153
+ throw new Error("Slack API did not return a message timestamp");
154
+ }
155
+ return { id: result.ts, channelId, platform: "slack" };
156
+ }
157
+ // File uploads create messages implicitly; the Slack API doesn't reliably
158
+ // return a message timestamp from filesUploadV2, so return empty ID.
159
+ return { id: "", channelId, platform: "slack" };
160
+ }
76
161
  const result = await this.app.client.chat.postMessage({
77
162
  channel: channelId,
78
163
  text,
79
164
  blocks,
80
165
  thread_ts: options?.threadTs,
81
- unfurl_links: options?.unfurlLinks,
82
- unfurl_media: options?.unfurlMedia,
83
166
  });
84
167
  if (result.ts === undefined) {
85
- throw new Error('Slack API did not return a message timestamp');
168
+ throw new Error("Slack API did not return a message timestamp");
86
169
  }
87
170
  return {
88
171
  id: result.ts,
89
- channelId: channelId,
90
- platform: 'slack',
172
+ channelId,
173
+ platform: "slack",
91
174
  };
92
175
  }
93
176
  /**
@@ -98,7 +181,7 @@ class SlackChatClient extends ChatClient_js_1.ChatClient {
98
181
  let blocks;
99
182
  if ((0, utils_js_1.isDocument)(content)) {
100
183
  blocks = (0, slack_js_1.toSlackBlocks)(content.getBlocks());
101
- text = content.toPlainText().trim() || 'Message';
184
+ text = content.toPlainText().trim() || "Message";
102
185
  }
103
186
  else {
104
187
  text = content;
@@ -124,7 +207,7 @@ class SlackChatClient extends ChatClient_js_1.ChatClient {
124
207
  */
125
208
  async addReaction(messageId, channelId, emoji) {
126
209
  // Strip colons from emoji name (e.g., ":thumbsup:" -> "thumbsup")
127
- const emojiName = emoji.replace(/^:|:$/g, '');
210
+ const emojiName = emoji.replace(/^:|:$/g, "");
128
211
  await this.app.client.reactions.add({
129
212
  channel: channelId,
130
213
  timestamp: messageId,
@@ -152,6 +235,116 @@ class SlackChatClient extends ChatClient_js_1.ChatClient {
152
235
  }
153
236
  };
154
237
  }
238
+ /**
239
+ * Subscribe to incoming message events on a channel
240
+ */
241
+ subscribeToMessages(channelId, callback) {
242
+ let callbacks = this.messageCallbacks.get(channelId);
243
+ if (!callbacks) {
244
+ callbacks = new Set();
245
+ this.messageCallbacks.set(channelId, callbacks);
246
+ }
247
+ callbacks.add(callback);
248
+ return () => {
249
+ const channelCallbacks = this.messageCallbacks.get(channelId);
250
+ if (channelCallbacks) {
251
+ channelCallbacks.delete(callback);
252
+ if (channelCallbacks.size === 0) {
253
+ this.messageCallbacks.delete(channelId);
254
+ }
255
+ }
256
+ };
257
+ }
258
+ /**
259
+ * Send a typing indicator (not directly supported in Slack bot API - no-op)
260
+ */
261
+ async sendTyping(_channelId) {
262
+ // Slack does not support bot typing indicators via the API
263
+ }
264
+ /**
265
+ * Create a thread from a message in Slack
266
+ * Slack threads are implicit - posting a reply creates the thread
267
+ */
268
+ startThread(messageId, channelId, _name, _options) {
269
+ // In Slack, threads are created by replying to a message.
270
+ // Return the message timestamp as the thread ID
271
+ return Promise.resolve({
272
+ id: messageId,
273
+ channelId,
274
+ platform: "slack",
275
+ });
276
+ }
277
+ /**
278
+ * Bulk delete messages in a Slack channel
279
+ */
280
+ async bulkDelete(channelId, count) {
281
+ // Slack doesn't have a bulkDelete API; delete messages one by one
282
+ const history = await this.app.client.conversations.history({
283
+ channel: channelId,
284
+ limit: count,
285
+ });
286
+ let deleted = 0;
287
+ if (history.messages) {
288
+ for (const msg of history.messages) {
289
+ if (msg.ts !== undefined && msg.ts !== "") {
290
+ try {
291
+ await this.app.client.chat.delete({
292
+ channel: channelId,
293
+ ts: msg.ts,
294
+ });
295
+ deleted++;
296
+ }
297
+ catch {
298
+ // Some messages may not be deletable (e.g., others' messages without admin)
299
+ }
300
+ }
301
+ }
302
+ }
303
+ return deleted;
304
+ }
305
+ /**
306
+ * Get all threads in a Slack channel
307
+ */
308
+ async getThreads(channelId) {
309
+ const threads = [];
310
+ const history = await this.app.client.conversations.history({
311
+ channel: channelId,
312
+ limit: 200,
313
+ });
314
+ if (history.messages) {
315
+ for (const msg of history.messages) {
316
+ if (msg.reply_count !== undefined &&
317
+ msg.reply_count > 0 &&
318
+ msg.ts !== undefined &&
319
+ msg.ts !== "") {
320
+ threads.push({
321
+ id: msg.ts,
322
+ channelId,
323
+ platform: "slack",
324
+ });
325
+ }
326
+ }
327
+ }
328
+ return threads;
329
+ }
330
+ /**
331
+ * Register a callback for disconnect events
332
+ */
333
+ onDisconnect(callback) {
334
+ this.disconnectCallbacks.add(callback);
335
+ return () => {
336
+ this.disconnectCallbacks.delete(callback);
337
+ };
338
+ }
339
+ /**
340
+ * Register a callback for error events
341
+ */
342
+ onError(callback) {
343
+ this.errorCallbacks.add(callback);
344
+ return () => {
345
+ this.errorCallbacks.delete(callback);
346
+ };
347
+ }
155
348
  }
156
349
  exports.SlackChatClient = SlackChatClient;
157
350
  //# sourceMappingURL=SlackChatClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SlackChatClient.js","sourceRoot":"","sources":["../../src/slack/SlackChatClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SlackChatClient.js","sourceRoot":"","sources":["../../src/slack/SlackChatClient.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export { SlackChatClient } from './SlackChatClient';
1
+ export { SlackChatClient } from "./SlackChatClient";
2
2
  //# sourceMappingURL=index.d.ts.map
package/dist/types.d.ts CHANGED
@@ -1,17 +1,19 @@
1
- import type { Document } from '@hardlydifficult/document-generator';
1
+ import type { Document } from "@hardlydifficult/document-generator";
2
2
  /**
3
3
  * Configuration for Discord client
4
4
  */
5
5
  export interface DiscordConfig {
6
- type: 'discord';
6
+ type: "discord";
7
7
  token?: string;
8
8
  guildId?: string;
9
+ /** Additional gateway intents to register */
10
+ intents?: DiscordGatewayIntents;
9
11
  }
10
12
  /**
11
13
  * Configuration for Slack client
12
14
  */
13
15
  export interface SlackConfig {
14
- type: 'slack';
16
+ type: "slack";
15
17
  token?: string;
16
18
  appToken?: string;
17
19
  socketMode?: boolean;
@@ -20,7 +22,7 @@ export type ChatConfig = DiscordConfig | SlackConfig;
20
22
  /**
21
23
  * Platform identifier
22
24
  */
23
- export type Platform = 'discord' | 'slack';
25
+ export type Platform = "discord" | "slack";
24
26
  /**
25
27
  * User who performed an action (e.g., added a reaction)
26
28
  */
@@ -47,6 +49,50 @@ export interface ReactionEvent {
47
49
  * Callback function type for reaction events
48
50
  */
49
51
  export type ReactionCallback = (event: ReactionEvent) => void | Promise<void>;
52
+ /**
53
+ * Data provided to incoming message callbacks
54
+ */
55
+ export interface MessageEvent {
56
+ /** ID of the message */
57
+ id: string;
58
+ /** Text content of the message */
59
+ content: string;
60
+ /** User who sent the message */
61
+ author: User;
62
+ /** ID of the channel the message was posted in */
63
+ channelId: string;
64
+ /** Timestamp of the message */
65
+ timestamp: Date;
66
+ }
67
+ /**
68
+ * Callback function type for incoming message events
69
+ */
70
+ export type MessageCallback = (event: MessageEvent) => void | Promise<void>;
71
+ /**
72
+ * File attachment for message posting
73
+ */
74
+ export interface FileAttachment {
75
+ /** File content as a Buffer or string */
76
+ content: Buffer | string;
77
+ /** Filename including extension */
78
+ name: string;
79
+ }
80
+ /**
81
+ * Data returned when a thread is created
82
+ */
83
+ export interface ThreadData {
84
+ /** ID of the created thread */
85
+ id: string;
86
+ /** ID of the parent channel */
87
+ channelId: string;
88
+ /** Platform identifier */
89
+ platform: Platform;
90
+ }
91
+ /**
92
+ * Connection event types for resilience callbacks
93
+ */
94
+ export type DisconnectCallback = (reason: string) => void | Promise<void>;
95
+ export type ErrorCallback = (error: Error) => void | Promise<void>;
50
96
  /**
51
97
  * Internal message data passed between classes
52
98
  */
@@ -60,14 +106,25 @@ export interface MessageData {
60
106
  */
61
107
  export type MessageContent = string | Document;
62
108
  /**
63
- * Options for posting messages
109
+ * Options for posting messages with thread support and file attachments
64
110
  */
65
111
  export interface PostMessageOptions {
66
- /** Thread timestamp for replies */
67
112
  threadTs?: string;
68
- /** Disable URL previews (Slack only) */
69
- unfurlLinks?: boolean;
70
- /** Disable media previews (Slack only) */
71
- unfurlMedia?: boolean;
113
+ files?: FileAttachment[];
114
+ }
115
+ /**
116
+ * Options for creating a thread from a message
117
+ */
118
+ export interface StartThreadOptions {
119
+ /** Auto-archive duration in minutes (60, 1440, 4320, 10080) */
120
+ autoArchiveDuration?: number;
121
+ }
122
+ /**
123
+ * Configuration for Discord client
124
+ * Additional gateway intents can be specified
125
+ */
126
+ export interface DiscordGatewayIntents {
127
+ /** Include MessageContent intent for reading message content from other bots/users */
128
+ messageContent?: boolean;
72
129
  }
73
130
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAEpE;;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,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,0CAA0C;IAC1C,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/utils.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import type { MessageContent } from './types';
2
- import type { Document } from '@hardlydifficult/document-generator';
1
+ import type { Document } from "@hardlydifficult/document-generator";
2
+ import type { MessageContent } from "./types";
3
3
  /**
4
4
  * Type guard to check if content is a Document
5
5
  */
@@ -1 +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"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAEpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,IAAI,QAAQ,CAEvE"}
package/dist/utils.js CHANGED
@@ -5,6 +5,6 @@ exports.isDocument = isDocument;
5
5
  * Type guard to check if content is a Document
6
6
  */
7
7
  function isDocument(content) {
8
- return typeof content !== 'string' && 'getBlocks' in content;
8
+ return typeof content !== "string" && "getBlocks" in content;
9
9
  }
10
10
  //# sourceMappingURL=utils.js.map
package/dist/utils.js.map CHANGED
@@ -1 +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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;AAOA,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,6 +1,6 @@
1
1
  {
2
2
  "name": "@hardlydifficult/chat",
3
- "version": "1.1.3",
3
+ "version": "1.1.5",
4
4
  "main": "./dist/index.js",
5
5
  "types": "./dist/index.d.ts",
6
6
  "files": [
@@ -19,12 +19,12 @@
19
19
  "discord.js": "14.25.1"
20
20
  },
21
21
  "devDependencies": {
22
- "@hardlydifficult/document-generator": "file:../documentGenerator",
22
+ "@hardlydifficult/document-generator": "1.1.2",
23
23
  "@types/node": "20.19.31",
24
24
  "typescript": "5.8.3",
25
25
  "vitest": "1.6.1"
26
26
  },
27
27
  "peerDependencies": {
28
- "@hardlydifficult/document-generator": ">=1.1.0"
28
+ "@hardlydifficult/document-generator": "1.1.2"
29
29
  }
30
30
  }