@hardlydifficult/chat 1.1.28 → 1.1.29

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 CHANGED
@@ -192,6 +192,48 @@ if (postedAt !== undefined) {
192
192
 
193
193
  `post()` is fire-and-forget. `edit()` handles the race where the edit arrives before the original post completes — it chains on the stored promise.
194
194
 
195
+ ### Message Batches
196
+
197
+ Group related posted messages so they can be retrieved and cleaned up together.
198
+
199
+ ```typescript
200
+ const batch = await channel.beginBatch({ key: "sprint-update" });
201
+
202
+ for (const member of members) {
203
+ const msg = await batch.post(summary(member));
204
+ await msg.reply(detail(member));
205
+ }
206
+
207
+ await batch.post(callouts);
208
+ await batch.finish();
209
+
210
+ const recent = await channel.getBatches({
211
+ key: "sprint-update",
212
+ author: "me",
213
+ limit: 5,
214
+ });
215
+
216
+ await recent[0].deleteAll({ cascadeReplies: true });
217
+ ```
218
+
219
+ For safer lifecycle handling, use `withBatch` (auto-finishes in `finally`):
220
+
221
+ ```typescript
222
+ await channel.withBatch({ key: "sprint-update" }, async (batch) => {
223
+ await batch.post("Part 1");
224
+ await batch.post("Part 2");
225
+ });
226
+ ```
227
+
228
+ `MessageBatch` includes:
229
+
230
+ - `id`, `key`, `author`, `createdAt`, `closedAt`, `isFinished`
231
+ - `messages` (tracked message refs)
232
+ - `post(content, options?)`
233
+ - `deleteAll(options?)`
234
+ - `keepLatest(n, options?)`
235
+ - `finish()`
236
+
195
237
  ### Threads
196
238
 
197
239
  Create a thread, post messages, and listen for replies. The `Thread` object is the primary interface — all threading internals are hidden.
@@ -0,0 +1,39 @@
1
+ import type { BatchQueryOptions, MessageAuthorFilter, Platform } from "./types.js";
2
+ export interface BatchMessageRefRecord {
3
+ id: string;
4
+ channelId: string;
5
+ platform: Platform;
6
+ postedAt: number;
7
+ }
8
+ export interface BatchRecord {
9
+ id: string;
10
+ key?: string;
11
+ author: MessageAuthorFilter;
12
+ channelId: string;
13
+ platform: Platform;
14
+ createdAt: number;
15
+ closedAt?: number;
16
+ messages: BatchMessageRefRecord[];
17
+ }
18
+ interface BeginBatchRecordOptions {
19
+ key?: string;
20
+ author?: MessageAuthorFilter;
21
+ channelId: string;
22
+ platform: Platform;
23
+ }
24
+ declare class InMemoryBatchStore {
25
+ private byChannel;
26
+ private byId;
27
+ beginBatch(options: BeginBatchRecordOptions): BatchRecord;
28
+ appendMessage(channelId: string, platform: Platform, batchId: string, message: BatchMessageRefRecord): BatchRecord | null;
29
+ finishBatch(channelId: string, platform: Platform, batchId: string): BatchRecord | null;
30
+ removeMessages(channelId: string, platform: Platform, batchId: string, messageIds: string[]): BatchRecord | null;
31
+ getBatch(channelId: string, platform: Platform, batchId: string): BatchRecord | null;
32
+ getBatches(channelId: string, platform: Platform, options?: BatchQueryOptions): BatchRecord[];
33
+ reset(): void;
34
+ }
35
+ export declare const batchStore: InMemoryBatchStore;
36
+ /** @internal Testing helper to isolate batch-store state between tests. */
37
+ export declare function resetBatchStore(): void;
38
+ export {};
39
+ //# sourceMappingURL=BatchStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BatchStore.d.ts","sourceRoot":"","sources":["../src/BatchStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,iBAAiB,EACjB,mBAAmB,EACnB,QAAQ,EACT,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,mBAAmB,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,qBAAqB,EAAE,CAAC;CACnC;AAED,UAAU,uBAAuB;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAaD,cAAM,kBAAkB;IACtB,OAAO,CAAC,SAAS,CAAoC;IACrD,OAAO,CAAC,IAAI,CAAkE;IAE9E,UAAU,CAAC,OAAO,EAAE,uBAAuB,GAAG,WAAW;IAoBzD,aAAa,CACX,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,qBAAqB,GAC7B,WAAW,GAAG,IAAI;IAcrB,WAAW,CACT,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,GACd,WAAW,GAAG,IAAI;IASrB,cAAc,CACZ,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAAE,GACnB,WAAW,GAAG,IAAI;IAerB,QAAQ,CACN,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,GACd,WAAW,GAAG,IAAI;IAQrB,UAAU,CACR,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,QAAQ,EAClB,OAAO,GAAE,iBAAsB,GAC9B,WAAW,EAAE;IAwBhB,KAAK,IAAI,IAAI;CAId;AAED,eAAO,MAAM,UAAU,oBAA2B,CAAC;AAEnD,2EAA2E;AAC3E,wBAAgB,eAAe,IAAI,IAAI,CAEtC"}
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.batchStore = void 0;
4
+ exports.resetBatchStore = resetBatchStore;
5
+ const node_crypto_1 = require("node:crypto");
6
+ function channelKey(channelId, platform) {
7
+ return `${platform}:${channelId}`;
8
+ }
9
+ function cloneRecord(record) {
10
+ return {
11
+ ...record,
12
+ messages: record.messages.map((message) => ({ ...message })),
13
+ };
14
+ }
15
+ class InMemoryBatchStore {
16
+ byChannel = new Map();
17
+ byId = new Map();
18
+ beginBatch(options) {
19
+ const key = channelKey(options.channelId, options.platform);
20
+ const createdAt = Date.now();
21
+ const record = {
22
+ id: (0, node_crypto_1.randomUUID)(),
23
+ key: options.key,
24
+ author: options.author ?? "me",
25
+ channelId: options.channelId,
26
+ platform: options.platform,
27
+ createdAt,
28
+ messages: [],
29
+ };
30
+ const list = this.byChannel.get(key) ?? [];
31
+ list.push(record);
32
+ this.byChannel.set(key, list);
33
+ this.byId.set(record.id, { channelKey: key, record });
34
+ return cloneRecord(record);
35
+ }
36
+ appendMessage(channelId, platform, batchId, message) {
37
+ const existing = this.byId.get(batchId);
38
+ if (existing?.channelKey !== channelKey(channelId, platform)) {
39
+ return null;
40
+ }
41
+ const duplicate = existing.record.messages.some((msg) => msg.id === message.id);
42
+ if (!duplicate) {
43
+ existing.record.messages.push({ ...message });
44
+ }
45
+ return cloneRecord(existing.record);
46
+ }
47
+ finishBatch(channelId, platform, batchId) {
48
+ const existing = this.byId.get(batchId);
49
+ if (existing?.channelKey !== channelKey(channelId, platform)) {
50
+ return null;
51
+ }
52
+ existing.record.closedAt ??= Date.now();
53
+ return cloneRecord(existing.record);
54
+ }
55
+ removeMessages(channelId, platform, batchId, messageIds) {
56
+ if (messageIds.length === 0) {
57
+ return this.getBatch(channelId, platform, batchId);
58
+ }
59
+ const existing = this.byId.get(batchId);
60
+ if (existing?.channelKey !== channelKey(channelId, platform)) {
61
+ return null;
62
+ }
63
+ const toRemove = new Set(messageIds);
64
+ existing.record.messages = existing.record.messages.filter((message) => !toRemove.has(message.id));
65
+ return cloneRecord(existing.record);
66
+ }
67
+ getBatch(channelId, platform, batchId) {
68
+ const existing = this.byId.get(batchId);
69
+ if (existing?.channelKey !== channelKey(channelId, platform)) {
70
+ return null;
71
+ }
72
+ return cloneRecord(existing.record);
73
+ }
74
+ getBatches(channelId, platform, options = {}) {
75
+ const list = this.byChannel.get(channelKey(channelId, platform)) ?? [];
76
+ const includeOpen = options.includeOpen ?? true;
77
+ const filtered = list.filter((record) => {
78
+ if (options.key !== undefined && record.key !== options.key) {
79
+ return false;
80
+ }
81
+ if (options.author !== undefined && record.author !== options.author) {
82
+ return false;
83
+ }
84
+ if (!includeOpen && record.closedAt === undefined) {
85
+ return false;
86
+ }
87
+ return true;
88
+ });
89
+ filtered.sort((a, b) => b.createdAt - a.createdAt);
90
+ const limited = options.limit !== undefined
91
+ ? filtered.slice(0, Math.max(0, options.limit))
92
+ : filtered;
93
+ return limited.map((record) => cloneRecord(record));
94
+ }
95
+ reset() {
96
+ this.byChannel.clear();
97
+ this.byId.clear();
98
+ }
99
+ }
100
+ exports.batchStore = new InMemoryBatchStore();
101
+ /** @internal Testing helper to isolate batch-store state between tests. */
102
+ function resetBatchStore() {
103
+ exports.batchStore.reset();
104
+ }
105
+ //# sourceMappingURL=BatchStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BatchStore.js","sourceRoot":"","sources":["../src/BatchStore.ts"],"names":[],"mappings":"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"}
package/dist/Channel.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { Message } from "./Message";
2
+ import type { MessageBatch } from "./MessageBatch.js";
2
3
  import { Thread } from "./Thread";
3
- import type { DeleteMessageOptions, DisconnectCallback, ErrorCallback, FileAttachment, Member, MessageCallback, MessageContent, MessageData, MessageQueryOptions, Platform, ReactionCallback, ThreadData } from "./types";
4
+ import type { BatchQueryOptions, BeginBatchOptions, DeleteMessageOptions, DisconnectCallback, ErrorCallback, FileAttachment, Member, MessageCallback, MessageContent, MessageData, MessageQueryOptions, Platform, ReactionCallback, ThreadData } from "./types";
4
5
  /**
5
6
  * Interface for platform-specific channel operations
6
7
  */
@@ -38,8 +39,8 @@ export declare class Channel {
38
39
  private operations;
39
40
  private messageReactionCallbacks;
40
41
  private unsubscribeFromPlatform;
41
- private typingRefCount;
42
- private typingInterval;
42
+ private readonly batchAdapter;
43
+ private readonly typingController;
43
44
  constructor(id: string, platform: Platform, operations: ChannelOperations);
44
45
  /**
45
46
  * Post a message to this channel
@@ -127,6 +128,24 @@ export declare class Channel {
127
128
  * @returns Message object that callers can interact with before dismissal
128
129
  */
129
130
  postDismissable(content: MessageContent, ownerId: string): Promise<Message>;
131
+ /**
132
+ * Begin a logical message batch for grouping related posts.
133
+ * Batches can later be queried with getBatches()/getBatch().
134
+ */
135
+ beginBatch(options?: BeginBatchOptions): Promise<MessageBatch>;
136
+ /**
137
+ * Execute a callback with an auto-finishing message batch.
138
+ * finish() is guaranteed in finally, even when callback throws.
139
+ */
140
+ withBatch<T>(optionsOrCallback: BeginBatchOptions | ((batch: MessageBatch) => Promise<T>), maybeCallback?: (batch: MessageBatch) => Promise<T>): Promise<T>;
141
+ /**
142
+ * Retrieve a batch by ID within this channel.
143
+ */
144
+ getBatch(id: string): Promise<MessageBatch | null>;
145
+ /**
146
+ * List batches in this channel, newest first.
147
+ */
148
+ getBatches(options?: BatchQueryOptions): Promise<MessageBatch[]>;
130
149
  /**
131
150
  * Bulk delete messages in this channel
132
151
  * @param count - Number of recent messages to delete
@@ -1 +1 @@
1
- {"version":3,"file":"Channel.d.ts","sourceRoot":"","sources":["../src/Channel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAA0B,MAAM,WAAW,CAAC;AAE5D,OAAO,EAAE,MAAM,EAAyB,MAAM,UAAU,CAAC;AACzD,OAAO,KAAK,EACV,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,MAAM,EACN,eAAe,EACf,cAAc,EACd,WAAW,EAEX,mBAAmB,EACnB,QAAQ,EACR,gBAAgB,EAChB,UAAU,EACX,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,WAAW,CACT,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,EACvB,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;QACzB,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB,GACA,OAAO,CAAC,WAAW,CAAC,CAAC;IACxB,aAAa,CACX,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,aAAa,CACX,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,WAAW,CACT,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,cAAc,CACZ,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxE,oBAAoB,CAClB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,gBAAgB,GACzB,MAAM,IAAI,CAAC;IACd,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,MAAM,IAAI,CAAC;IAC9E,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,WAAW,CACT,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,mBAAmB,CAAC,EAAE,MAAM,GAC3B,OAAO,CAAC,UAAU,CAAC,CAAC;IACvB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9D,WAAW,CACT,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC1B,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACrD,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACjD,YAAY,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,IAAI,CAAC;IACvD,OAAO,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,IAAI,CAAC;IAC7C,iBAAiB,CACf,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,eAAe,GACxB,MAAM,IAAI,CAAC;IACd,YAAY,CACV,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,EACvB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,cAAc,EAAE,CAAA;KAAE,GACrC,OAAO,CAAC,WAAW,CAAC,CAAC;CACzB;AAKD,gHAAgH;AAChH,qBAAa,OAAO;IAClB,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B,SAAgB,QAAQ,EAAE,QAAQ,CAAC;IAEnC,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,wBAAwB,CAA4C;IAC5E,OAAO,CAAC,uBAAuB,CAA6B;IAC5D,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,cAAc,CAA+C;gBAEzD,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,iBAAiB;IAYzE;;;;;OAKG;IACH,WAAW,CACT,OAAO,EAAE,cAAc,EACvB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,GAC7D,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;IAejC;;;;;;;OAOG;IACG,YAAY,CAChB,OAAO,EAAE,cAAc,EACvB,IAAI,EAAE,MAAM,EACZ,mBAAmB,CAAC,EAAE,MAAM,GAC3B,OAAO,CAAC,MAAM,CAAC;IAWlB;;;;;OAKG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAQpC;;OAEG;YACW,YAAY;IAe1B;;;OAGG;IACH,OAAO,CAAC,2BAA2B;IAmBnC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA2C/B;;OAEG;IACH,OAAO,CAAC,WAAW;IAcnB;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAgB9B;;;;OAIG;IACH,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI;IAqB3E;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC;;;;;OAKG;IACH,WAAW,IAAI,IAAI;IAgBnB;;;OAGG;IACH,SAAS,IAAI,IAAI;IAUjB;;;;;;OAMG;IACG,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IASrD;;;;;OAKG;IACG,eAAe,CACnB,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC;IAcnB;;;;OAIG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIhD;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAKrC;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIrC;;;OAGG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAKvD;;;OAGG;IACG,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAK3D;;;OAGG;IACG,WAAW,CAAC,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAyBxE;;OAEG;IACG,oBAAoB,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAI1D;;;OAGG;IACG,aAAa,CACjB,OAAO,GAAE,mBAAmB,GAAG;QAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,cAAc,CAAC,EAAE,OAAO,CAAC;KACrB,GACL,OAAO,CAAC,MAAM,CAAC;IAiBlB;;OAEG;IACH,UAAU,IAAI,IAAI;CAYnB"}
1
+ {"version":3,"file":"Channel.d.ts","sourceRoot":"","sources":["../src/Channel.ts"],"names":[],"mappings":"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"}
package/dist/Channel.js CHANGED
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Channel = void 0;
4
+ const ChannelBatchHelpers_js_1 = require("./ChannelBatchHelpers.js");
5
+ const ChannelRuntimeFeatures_js_1 = require("./ChannelRuntimeFeatures.js");
4
6
  const memberMatching_1 = require("./memberMatching");
5
7
  const Message_1 = require("./Message");
6
8
  const PendingMessage_1 = require("./PendingMessage");
7
9
  const Thread_1 = require("./Thread");
8
- /** Default interval (ms) for refreshing the typing indicator. Discord expires after ~10s. */
9
- const TYPING_REFRESH_MS = 8000;
10
10
  /** A platform-agnostic channel that provides messaging, reactions, typing indicators, and thread management. */
11
11
  class Channel {
12
12
  id;
@@ -14,12 +14,14 @@ class Channel {
14
14
  operations;
15
15
  messageReactionCallbacks = new Map();
16
16
  unsubscribeFromPlatform = null;
17
- typingRefCount = 0;
18
- typingInterval = null;
17
+ batchAdapter;
18
+ typingController;
19
19
  constructor(id, platform, operations) {
20
20
  this.id = id;
21
21
  this.platform = platform;
22
22
  this.operations = operations;
23
+ this.batchAdapter = (0, ChannelBatchHelpers_js_1.createChannelBatchAdapter)(this.id, this.platform, (content, options) => this.postMessage(content, options), (messageId, options) => this.operations.deleteMessage(messageId, this.id, options));
24
+ this.typingController = new ChannelRuntimeFeatures_js_1.TypingController(() => this.operations.sendTyping(this.id));
23
25
  // Subscribe to platform reactions and forward to message-specific callbacks
24
26
  this.unsubscribeFromPlatform = this.operations.subscribeToReactions(id, (event) => this.emitReaction(event));
25
27
  }
@@ -169,32 +171,14 @@ class Channel {
169
171
  * can overlap — the indicator stays active until the last one ends.
170
172
  */
171
173
  beginTyping() {
172
- this.typingRefCount++;
173
- if (this.typingRefCount === 1) {
174
- this.operations.sendTyping(this.id).catch(() => {
175
- // Ignore typing indicator failures
176
- });
177
- this.typingInterval = setInterval(() => {
178
- if (this.typingRefCount > 0) {
179
- this.operations.sendTyping(this.id).catch(() => {
180
- // Ignore typing indicator failures
181
- });
182
- }
183
- }, TYPING_REFRESH_MS);
184
- }
174
+ this.typingController.begin();
185
175
  }
186
176
  /**
187
177
  * Mark the end of one unit of work. When all outstanding beginTyping()
188
178
  * calls have been balanced by endTyping(), the refresh interval stops.
189
179
  */
190
180
  endTyping() {
191
- if (this.typingRefCount > 0) {
192
- this.typingRefCount--;
193
- }
194
- if (this.typingRefCount === 0 && this.typingInterval) {
195
- clearInterval(this.typingInterval);
196
- this.typingInterval = null;
197
- }
181
+ this.typingController.end();
198
182
  }
199
183
  /**
200
184
  * Show a typing indicator while executing a function.
@@ -204,13 +188,7 @@ class Channel {
204
188
  * @returns The return value of fn
205
189
  */
206
190
  async withTyping(fn) {
207
- this.beginTyping();
208
- try {
209
- return await fn();
210
- }
211
- finally {
212
- this.endTyping();
213
- }
191
+ return this.typingController.withTyping(fn);
214
192
  }
215
193
  /**
216
194
  * Post a message with a trash can reaction that the owner can click to dismiss.
@@ -219,17 +197,33 @@ class Channel {
219
197
  * @returns Message object that callers can interact with before dismissal
220
198
  */
221
199
  async postDismissable(content, ownerId) {
222
- const emoji = this.platform === "slack" ? ":wastebasket:" : "🗑️";
223
- const emojiMatch = this.platform === "slack" ? "wastebasket" : "🗑️";
224
- const msg = await this.postMessage(content);
225
- msg.addReactions([emoji]).onReaction(async (event) => {
226
- if (event.user.id !== ownerId || event.emoji !== emojiMatch) {
227
- return;
228
- }
229
- msg.offReaction();
230
- await msg.delete();
231
- });
232
- return msg;
200
+ return (0, ChannelRuntimeFeatures_js_1.postDismissableMessage)(this.platform, async (messageContent) => this.postMessage(messageContent), content, ownerId);
201
+ }
202
+ /**
203
+ * Begin a logical message batch for grouping related posts.
204
+ * Batches can later be queried with getBatches()/getBatch().
205
+ */
206
+ beginBatch(options = {}) {
207
+ return (0, ChannelBatchHelpers_js_1.beginChannelBatch)(this.batchAdapter, options);
208
+ }
209
+ /**
210
+ * Execute a callback with an auto-finishing message batch.
211
+ * finish() is guaranteed in finally, even when callback throws.
212
+ */
213
+ withBatch(optionsOrCallback, maybeCallback) {
214
+ return (0, ChannelBatchHelpers_js_1.withChannelBatchFromArgs)(this.batchAdapter, optionsOrCallback, maybeCallback);
215
+ }
216
+ /**
217
+ * Retrieve a batch by ID within this channel.
218
+ */
219
+ getBatch(id) {
220
+ return (0, ChannelBatchHelpers_js_1.getChannelBatch)(this.batchAdapter, id);
221
+ }
222
+ /**
223
+ * List batches in this channel, newest first.
224
+ */
225
+ getBatches(options = {}) {
226
+ return (0, ChannelBatchHelpers_js_1.getChannelBatches)(this.batchAdapter, options);
233
227
  }
234
228
  /**
235
229
  * Bulk delete messages in this channel
@@ -329,11 +323,7 @@ class Channel {
329
323
  this.unsubscribeFromPlatform = null;
330
324
  }
331
325
  this.messageReactionCallbacks.clear();
332
- if (this.typingInterval) {
333
- clearInterval(this.typingInterval);
334
- this.typingInterval = null;
335
- }
336
- this.typingRefCount = 0;
326
+ this.typingController.clear();
337
327
  }
338
328
  }
339
329
  exports.Channel = Channel;
@@ -1 +1 @@
1
- {"version":3,"file":"Channel.js","sourceRoot":"","sources":["../src/Channel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Channel.js","sourceRoot":"","sources":["../src/Channel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import type { Message } from "./Message.js";
2
+ import { MessageBatch } from "./MessageBatch.js";
3
+ import type { BatchQueryOptions, BeginBatchOptions, DeleteMessageOptions, FileAttachment, MessageContent, Platform } from "./types.js";
4
+ export interface ChannelBatchAdapter {
5
+ id: string;
6
+ platform: Platform;
7
+ postMessage(content: MessageContent, options?: {
8
+ files?: FileAttachment[];
9
+ linkPreviews?: boolean;
10
+ }): Message & PromiseLike<Message>;
11
+ deleteMessage(messageId: string, options?: DeleteMessageOptions): Promise<void>;
12
+ }
13
+ /**
14
+ *
15
+ */
16
+ export declare function createChannelBatchAdapter(id: string, platform: Platform, postMessage: (content: MessageContent, options?: {
17
+ files?: FileAttachment[];
18
+ linkPreviews?: boolean;
19
+ }) => Message & PromiseLike<Message>, deleteMessage: (messageId: string, options?: DeleteMessageOptions) => Promise<void>): ChannelBatchAdapter;
20
+ /**
21
+ *
22
+ */
23
+ export declare function beginChannelBatch(adapter: ChannelBatchAdapter, options?: BeginBatchOptions): Promise<MessageBatch>;
24
+ /**
25
+ *
26
+ */
27
+ export declare function getChannelBatch(adapter: ChannelBatchAdapter, id: string): Promise<MessageBatch | null>;
28
+ /**
29
+ *
30
+ */
31
+ export declare function getChannelBatches(adapter: ChannelBatchAdapter, options?: BatchQueryOptions): Promise<MessageBatch[]>;
32
+ export declare function withChannelBatch<T>(adapter: ChannelBatchAdapter, callback: (batch: MessageBatch) => Promise<T>): Promise<T>;
33
+ export declare function withChannelBatch<T>(adapter: ChannelBatchAdapter, options: BeginBatchOptions, callback: (batch: MessageBatch) => Promise<T>): Promise<T>;
34
+ /**
35
+ *
36
+ */
37
+ export declare function withChannelBatchFromArgs<T>(adapter: ChannelBatchAdapter, optionsOrCallback: BeginBatchOptions | ((batch: MessageBatch) => Promise<T>), maybeCallback?: (batch: MessageBatch) => Promise<T>): Promise<T>;
38
+ //# sourceMappingURL=ChannelBatchHelpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChannelBatchHelpers.d.ts","sourceRoot":"","sources":["../src/ChannelBatchHelpers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,QAAQ,EACT,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,CACT,OAAO,EAAE,cAAc,EACvB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,GAC7D,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAClC,aAAa,CACX,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,CACX,OAAO,EAAE,cAAc,EACvB,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,KAC3D,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,EACnC,aAAa,EAAE,CACb,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,oBAAoB,KAC3B,OAAO,CAAC,IAAI,CAAC,GACjB,mBAAmB,CAOrB;AAqCD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,mBAAmB,EAC5B,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,YAAY,CAAC,CAQvB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,mBAAmB,EAC5B,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAM9B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,mBAAmB,EAC5B,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,YAAY,EAAE,CAAC,CASzB;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,OAAO,EAAE,mBAAmB,EAC5B,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,GAC5C,OAAO,CAAC,CAAC,CAAC,CAAC;AACd,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,GAC5C,OAAO,CAAC,CAAC,CAAC,CAAC;AA0Bd;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EACxC,OAAO,EAAE,mBAAmB,EAC5B,iBAAiB,EAAE,iBAAiB,GAAG,CAAC,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,EAC5E,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,GAClD,OAAO,CAAC,CAAC,CAAC,CAQZ"}
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createChannelBatchAdapter = createChannelBatchAdapter;
4
+ exports.beginChannelBatch = beginChannelBatch;
5
+ exports.getChannelBatch = getChannelBatch;
6
+ exports.getChannelBatches = getChannelBatches;
7
+ exports.withChannelBatch = withChannelBatch;
8
+ exports.withChannelBatchFromArgs = withChannelBatchFromArgs;
9
+ const BatchStore_js_1 = require("./BatchStore.js");
10
+ const MessageBatch_js_1 = require("./MessageBatch.js");
11
+ /**
12
+ *
13
+ */
14
+ function createChannelBatchAdapter(id, platform, postMessage, deleteMessage) {
15
+ return {
16
+ id,
17
+ platform,
18
+ postMessage,
19
+ deleteMessage,
20
+ };
21
+ }
22
+ function buildBatch(adapter, batchId) {
23
+ const snapshot = BatchStore_js_1.batchStore.getBatch(adapter.id, adapter.platform, batchId);
24
+ if (snapshot === null) {
25
+ throw new Error(`Batch ${batchId} was not found for this channel`);
26
+ }
27
+ return new MessageBatch_js_1.MessageBatch(snapshot, {
28
+ postMessage: (content, options) => adapter.postMessage(content, options),
29
+ appendMessage: (id, message) => {
30
+ BatchStore_js_1.batchStore.appendMessage(adapter.id, adapter.platform, id, {
31
+ id: message.id,
32
+ channelId: message.channelId,
33
+ platform: message.platform,
34
+ postedAt: message.postedAt.getTime(),
35
+ });
36
+ },
37
+ removeMessages: (id, messageIds) => {
38
+ BatchStore_js_1.batchStore.removeMessages(adapter.id, adapter.platform, id, messageIds);
39
+ },
40
+ deleteMessage: (messageId, options) => adapter.deleteMessage(messageId, options),
41
+ finish: (id) => {
42
+ BatchStore_js_1.batchStore.finishBatch(adapter.id, adapter.platform, id);
43
+ return Promise.resolve();
44
+ },
45
+ getSnapshot: (id) => BatchStore_js_1.batchStore.getBatch(adapter.id, adapter.platform, id),
46
+ });
47
+ }
48
+ /**
49
+ *
50
+ */
51
+ function beginChannelBatch(adapter, options = {}) {
52
+ const snapshot = BatchStore_js_1.batchStore.beginBatch({
53
+ key: options.key,
54
+ author: options.author,
55
+ channelId: adapter.id,
56
+ platform: adapter.platform,
57
+ });
58
+ return Promise.resolve(buildBatch(adapter, snapshot.id));
59
+ }
60
+ /**
61
+ *
62
+ */
63
+ function getChannelBatch(adapter, id) {
64
+ const snapshot = BatchStore_js_1.batchStore.getBatch(adapter.id, adapter.platform, id);
65
+ if (snapshot === null) {
66
+ return Promise.resolve(null);
67
+ }
68
+ return Promise.resolve(buildBatch(adapter, snapshot.id));
69
+ }
70
+ /**
71
+ *
72
+ */
73
+ function getChannelBatches(adapter, options = {}) {
74
+ const snapshots = BatchStore_js_1.batchStore.getBatches(adapter.id, adapter.platform, options);
75
+ return Promise.resolve(snapshots.map((snapshot) => buildBatch(adapter, snapshot.id)));
76
+ }
77
+ /**
78
+ *
79
+ */
80
+ async function withChannelBatch(adapter, optionsOrCallback, maybeCallback) {
81
+ const callback = typeof optionsOrCallback === "function" ? optionsOrCallback : maybeCallback;
82
+ const options = typeof optionsOrCallback === "function" ? {} : optionsOrCallback;
83
+ if (callback === undefined) {
84
+ throw new Error("withBatch requires a callback");
85
+ }
86
+ const batch = await beginChannelBatch(adapter, options);
87
+ try {
88
+ return await callback(batch);
89
+ }
90
+ finally {
91
+ await batch.finish();
92
+ }
93
+ }
94
+ /**
95
+ *
96
+ */
97
+ function withChannelBatchFromArgs(adapter, optionsOrCallback, maybeCallback) {
98
+ if (typeof optionsOrCallback === "function") {
99
+ return withChannelBatch(adapter, optionsOrCallback);
100
+ }
101
+ if (maybeCallback === undefined) {
102
+ throw new Error("withBatch requires a callback");
103
+ }
104
+ return withChannelBatch(adapter, optionsOrCallback, maybeCallback);
105
+ }
106
+ //# sourceMappingURL=ChannelBatchHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChannelBatchHelpers.js","sourceRoot":"","sources":["../src/ChannelBatchHelpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { Message } from "./Message.js";
2
+ import type { MessageContent, Platform } from "./types.js";
3
+ /** Shared typing-indicator controller with ref-counted begin/end semantics. */
4
+ export declare class TypingController {
5
+ private refCount;
6
+ private interval;
7
+ private readonly sendTyping;
8
+ constructor(sendTyping: () => Promise<void>);
9
+ begin(): void;
10
+ end(): void;
11
+ withTyping<T>(fn: () => Promise<T>): Promise<T>;
12
+ clear(): void;
13
+ }
14
+ /** Post a dismissable message that can be deleted via trash reaction by owner. */
15
+ export declare function postDismissableMessage(platform: Platform, postMessage: (content: MessageContent) => Promise<Message>, content: MessageContent, ownerId: string): Promise<Message>;
16
+ //# sourceMappingURL=ChannelRuntimeFeatures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChannelRuntimeFeatures.d.ts","sourceRoot":"","sources":["../src/ChannelRuntimeFeatures.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAK3D,+EAA+E;AAC/E,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,QAAQ,CAA+C;IAC/D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;gBAErC,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC;IAI3C,KAAK,IAAI,IAAI;IAiBb,GAAG,IAAI,IAAI;IAUL,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IASrD,KAAK,IAAI,IAAI;CAOd;AAED,kFAAkF;AAClF,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,EAC1D,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC,CAYlB"}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TypingController = void 0;
4
+ exports.postDismissableMessage = postDismissableMessage;
5
+ /** Default interval (ms) for refreshing the typing indicator. Discord expires after ~10s. */
6
+ const TYPING_REFRESH_MS = 8000;
7
+ /** Shared typing-indicator controller with ref-counted begin/end semantics. */
8
+ class TypingController {
9
+ refCount = 0;
10
+ interval = null;
11
+ sendTyping;
12
+ constructor(sendTyping) {
13
+ this.sendTyping = sendTyping;
14
+ }
15
+ begin() {
16
+ this.refCount++;
17
+ if (this.refCount !== 1) {
18
+ return;
19
+ }
20
+ this.sendTyping().catch(() => {
21
+ // Ignore typing indicator failures.
22
+ });
23
+ this.interval = setInterval(() => {
24
+ if (this.refCount > 0) {
25
+ this.sendTyping().catch(() => {
26
+ // Ignore typing indicator failures.
27
+ });
28
+ }
29
+ }, TYPING_REFRESH_MS);
30
+ }
31
+ end() {
32
+ if (this.refCount > 0) {
33
+ this.refCount--;
34
+ }
35
+ if (this.refCount === 0 && this.interval !== null) {
36
+ clearInterval(this.interval);
37
+ this.interval = null;
38
+ }
39
+ }
40
+ async withTyping(fn) {
41
+ this.begin();
42
+ try {
43
+ return await fn();
44
+ }
45
+ finally {
46
+ this.end();
47
+ }
48
+ }
49
+ clear() {
50
+ this.refCount = 0;
51
+ if (this.interval !== null) {
52
+ clearInterval(this.interval);
53
+ this.interval = null;
54
+ }
55
+ }
56
+ }
57
+ exports.TypingController = TypingController;
58
+ /** Post a dismissable message that can be deleted via trash reaction by owner. */
59
+ async function postDismissableMessage(platform, postMessage, content, ownerId) {
60
+ const emoji = platform === "slack" ? ":wastebasket:" : "🗑️";
61
+ const emojiMatch = platform === "slack" ? "wastebasket" : "🗑️";
62
+ const message = await postMessage(content);
63
+ message.addReactions([emoji]).onReaction(async (event) => {
64
+ if (event.user.id !== ownerId || event.emoji !== emojiMatch) {
65
+ return;
66
+ }
67
+ message.offReaction();
68
+ await message.delete();
69
+ });
70
+ return message;
71
+ }
72
+ //# sourceMappingURL=ChannelRuntimeFeatures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChannelRuntimeFeatures.js","sourceRoot":"","sources":["../src/ChannelRuntimeFeatures.ts"],"names":[],"mappings":";;;AA8DA,wDAiBC;AA5ED,6FAA6F;AAC7F,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAE/B,+EAA+E;AAC/E,MAAa,gBAAgB;IACnB,QAAQ,GAAG,CAAC,CAAC;IACb,QAAQ,GAA0C,IAAI,CAAC;IAC9C,UAAU,CAAsB;IAEjD,YAAY,UAA+B;QACzC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;YAC3B,oCAAoC;QACtC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;YAC/B,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;gBACtB,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;oBAC3B,oCAAoC;gBACtC,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC,EAAE,iBAAiB,CAAC,CAAC;IACxB,CAAC;IAED,GAAG;QACD,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAClD,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAI,EAAoB;QACtC,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,EAAE,CAAC;QACpB,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,CAAC;IACH,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC3B,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,CAAC;IACH,CAAC;CACF;AApDD,4CAoDC;AAED,kFAAkF;AAC3E,KAAK,UAAU,sBAAsB,CAC1C,QAAkB,EAClB,WAA0D,EAC1D,OAAuB,EACvB,OAAe;IAEf,MAAM,KAAK,GAAG,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC;IAC7D,MAAM,UAAU,GAAG,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC;IAChE,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;IAC3C,OAAO,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACvD,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,OAAO,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YAC5D,OAAO;QACT,CAAC;QACD,OAAO,CAAC,WAAW,EAAE,CAAC;QACtB,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,62 @@
1
+ import type { BatchRecord } from "./BatchStore.js";
2
+ import type { Message } from "./Message.js";
3
+ import type { BatchDeleteSummary, BatchKeepLatestSummary, BatchMessageRef, DeleteMessageOptions, FileAttachment, MessageContent, Platform } from "./types.js";
4
+ interface MessageBatchOperations {
5
+ postMessage(content: MessageContent, options?: {
6
+ files?: FileAttachment[];
7
+ linkPreviews?: boolean;
8
+ }): Message & PromiseLike<Message>;
9
+ appendMessage(batchId: string, message: BatchMessageRef): void;
10
+ removeMessages(batchId: string, messageIds: string[]): void;
11
+ deleteMessage(messageId: string, options?: DeleteMessageOptions): Promise<void>;
12
+ finish(batchId: string): Promise<void>;
13
+ getSnapshot(batchId: string): BatchRecord | null;
14
+ }
15
+ /**
16
+ * Represents a logical batch/group of posted messages in a channel.
17
+ */
18
+ export declare class MessageBatch {
19
+ readonly id: string;
20
+ readonly key?: string;
21
+ readonly author: string;
22
+ readonly channelId: string;
23
+ readonly platform: Platform;
24
+ readonly createdAt: Date;
25
+ private readonly operations;
26
+ constructor(snapshot: BatchRecord, operations: MessageBatchOperations);
27
+ private get snapshot();
28
+ /**
29
+ * Whether this batch has been explicitly finished.
30
+ */
31
+ get isFinished(): boolean;
32
+ /**
33
+ * Timestamp when finish() was called, or null for open batches.
34
+ */
35
+ get closedAt(): Date | null;
36
+ /**
37
+ * Message references posted through this batch.
38
+ */
39
+ get messages(): BatchMessageRef[];
40
+ /**
41
+ * Post a message and associate it with this batch.
42
+ */
43
+ post(content: MessageContent, options?: {
44
+ files?: FileAttachment[];
45
+ linkPreviews?: boolean;
46
+ }): Message & PromiseLike<Message>;
47
+ /**
48
+ * Mark this batch as complete.
49
+ */
50
+ finish(): Promise<void>;
51
+ /**
52
+ * Delete all tracked messages in this batch.
53
+ */
54
+ deleteAll(options?: DeleteMessageOptions): Promise<BatchDeleteSummary>;
55
+ /**
56
+ * Keep only the newest N tracked messages and delete the rest.
57
+ */
58
+ keepLatest(n: number, options?: DeleteMessageOptions): Promise<BatchKeepLatestSummary>;
59
+ private deleteRefs;
60
+ }
61
+ export {};
62
+ //# sourceMappingURL=MessageBatch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageBatch.d.ts","sourceRoot":"","sources":["../src/MessageBatch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EACV,kBAAkB,EAClB,sBAAsB,EACtB,eAAe,EACf,oBAAoB,EACpB,cAAc,EACd,cAAc,EAEd,QAAQ,EACT,MAAM,YAAY,CAAC;AAEpB,UAAU,sBAAsB;IAC9B,WAAW,CACT,OAAO,EAAE,cAAc,EACvB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,GAC7D,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAClC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IAC/D,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC5D,aAAa,CACX,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC;CAClD;AAyBD;;GAEG;AACH,qBAAa,YAAY;IACvB,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B,SAAgB,GAAG,CAAC,EAAE,MAAM,CAAC;IAC7B,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,SAAS,EAAE,MAAM,CAAC;IAClC,SAAgB,QAAQ,EAAE,QAAQ,CAAC;IACnC,SAAgB,SAAS,EAAE,IAAI,CAAC;IAEhC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyB;gBAExC,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,sBAAsB;IAUrE,OAAO,KAAK,QAAQ,GAEnB;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,OAAO,CAExB;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,IAAI,GAAG,IAAI,CAG1B;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,eAAe,EAAE,CAMhC;IAED;;OAEG;IACH,IAAI,CACF,OAAO,EAAE,cAAc,EACvB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,GAC7D,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;IAgBjC;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B;;OAEG;IACG,SAAS,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAI5E;;OAEG;IACG,UAAU,CACd,CAAC,EAAE,MAAM,EACT,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,sBAAsB,CAAC;YAkBpB,UAAU;CAmBzB"}
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MessageBatch = void 0;
4
+ function toPublicMessageRef(data) {
5
+ return {
6
+ id: data.id,
7
+ channelId: data.channelId,
8
+ platform: data.platform,
9
+ postedAt: new Date(),
10
+ };
11
+ }
12
+ function fromRecordMessage(message) {
13
+ return {
14
+ id: message.id,
15
+ channelId: message.channelId,
16
+ platform: message.platform,
17
+ postedAt: new Date(message.postedAt),
18
+ };
19
+ }
20
+ /**
21
+ * Represents a logical batch/group of posted messages in a channel.
22
+ */
23
+ class MessageBatch {
24
+ id;
25
+ key;
26
+ author;
27
+ channelId;
28
+ platform;
29
+ createdAt;
30
+ operations;
31
+ constructor(snapshot, operations) {
32
+ this.id = snapshot.id;
33
+ this.key = snapshot.key;
34
+ this.author = snapshot.author;
35
+ this.channelId = snapshot.channelId;
36
+ this.platform = snapshot.platform;
37
+ this.createdAt = new Date(snapshot.createdAt);
38
+ this.operations = operations;
39
+ }
40
+ get snapshot() {
41
+ return this.operations.getSnapshot(this.id);
42
+ }
43
+ /**
44
+ * Whether this batch has been explicitly finished.
45
+ */
46
+ get isFinished() {
47
+ return this.snapshot?.closedAt !== undefined;
48
+ }
49
+ /**
50
+ * Timestamp when finish() was called, or null for open batches.
51
+ */
52
+ get closedAt() {
53
+ const closedAt = this.snapshot?.closedAt;
54
+ return closedAt !== undefined ? new Date(closedAt) : null;
55
+ }
56
+ /**
57
+ * Message references posted through this batch.
58
+ */
59
+ get messages() {
60
+ const { snapshot } = this;
61
+ if (snapshot === null) {
62
+ return [];
63
+ }
64
+ return snapshot.messages.map((message) => fromRecordMessage(message));
65
+ }
66
+ /**
67
+ * Post a message and associate it with this batch.
68
+ */
69
+ post(content, options) {
70
+ const pending = this.operations.postMessage(content, options);
71
+ void Promise.resolve(pending)
72
+ .then((message) => {
73
+ if (message.id === "") {
74
+ // Slack file uploads can return empty message IDs; skip unaddressable refs.
75
+ return;
76
+ }
77
+ this.operations.appendMessage(this.id, toPublicMessageRef(message));
78
+ })
79
+ .catch(() => {
80
+ // Failures are surfaced to caller when awaiting the returned pending message.
81
+ });
82
+ return pending;
83
+ }
84
+ /**
85
+ * Mark this batch as complete.
86
+ */
87
+ async finish() {
88
+ await this.operations.finish(this.id);
89
+ }
90
+ /**
91
+ * Delete all tracked messages in this batch.
92
+ */
93
+ async deleteAll(options) {
94
+ return this.deleteRefs(this.messages, options);
95
+ }
96
+ /**
97
+ * Keep only the newest N tracked messages and delete the rest.
98
+ */
99
+ async keepLatest(n, options) {
100
+ const keep = Math.max(0, Math.floor(n));
101
+ const newestFirst = [...this.messages].sort((a, b) => b.postedAt.getTime() - a.postedAt.getTime());
102
+ const keepIds = new Set(newestFirst.slice(0, keep).map((message) => message.id));
103
+ const toDelete = this.messages.filter((message) => !keepIds.has(message.id));
104
+ const result = await this.deleteRefs(toDelete, options);
105
+ return {
106
+ ...result,
107
+ kept: Math.min(keep, newestFirst.length),
108
+ };
109
+ }
110
+ async deleteRefs(refs, options) {
111
+ let deleted = 0;
112
+ let failed = 0;
113
+ const deletedIds = [];
114
+ for (const ref of refs) {
115
+ try {
116
+ await this.operations.deleteMessage(ref.id, options);
117
+ deleted += 1;
118
+ deletedIds.push(ref.id);
119
+ }
120
+ catch {
121
+ failed += 1;
122
+ }
123
+ }
124
+ this.operations.removeMessages(this.id, deletedIds);
125
+ return { deleted, failed };
126
+ }
127
+ }
128
+ exports.MessageBatch = MessageBatch;
129
+ //# sourceMappingURL=MessageBatch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageBatch.js","sourceRoot":"","sources":["../src/MessageBatch.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,9 @@
1
- export { type Attachment, type ClientIdentity, type User, type Member, type DiscordConfig, type SlackConfig, type ChatConfig, type Platform, type ReactionEvent, type ReactionCallback, type MessageEvent, type MessageContent, type MessageAuthorFilter, type MessageQueryOptions, type FileAttachment, type DeleteMessageOptions, type TimestampInput, type ThreadData, type DisconnectCallback, type ErrorCallback, } from "./types";
1
+ export { type Attachment, type ClientIdentity, type User, type Member, type DiscordConfig, type SlackConfig, type ChatConfig, type Platform, type ReactionEvent, type ReactionCallback, type MessageEvent, type MessageContent, type MessageAuthorFilter, type MessageQueryOptions, type BatchMessageRef, type BeginBatchOptions, type BatchQueryOptions, type BatchDeleteSummary, type BatchKeepLatestSummary, type FileAttachment, type DeleteMessageOptions, type TimestampInput, type ThreadData, type DisconnectCallback, type ErrorCallback, } from "./types";
2
2
  export { MESSAGE_LIMITS } from "./constants";
3
3
  export { ChatClient } from "./ChatClient";
4
4
  export { Channel } from "./Channel";
5
5
  export { Message } from "./Message";
6
+ export { MessageBatch } from "./MessageBatch";
6
7
  export { EditableStreamReply } from "./EditableStreamReply";
7
8
  export { StreamingReply } from "./StreamingReply";
8
9
  export { Thread } from "./Thread";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,IAAI,EACT,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,aAAa,GACnB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAG7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG1C,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAW/D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,IAAI,EACT,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,aAAa,GACnB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAG7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG1C,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAW/D"}
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SlackChatClient = exports.DiscordChatClient = exports.createMessageTracker = exports.Thread = exports.StreamingReply = exports.EditableStreamReply = exports.Message = exports.Channel = exports.ChatClient = exports.MESSAGE_LIMITS = void 0;
3
+ exports.SlackChatClient = exports.DiscordChatClient = exports.createMessageTracker = exports.Thread = exports.StreamingReply = exports.EditableStreamReply = exports.MessageBatch = exports.Message = exports.Channel = exports.ChatClient = exports.MESSAGE_LIMITS = void 0;
4
4
  exports.createChatClient = createChatClient;
5
5
  // Constants
6
6
  var constants_1 = require("./constants");
@@ -12,6 +12,8 @@ var Channel_1 = require("./Channel");
12
12
  Object.defineProperty(exports, "Channel", { enumerable: true, get: function () { return Channel_1.Channel; } });
13
13
  var Message_1 = require("./Message");
14
14
  Object.defineProperty(exports, "Message", { enumerable: true, get: function () { return Message_1.Message; } });
15
+ var MessageBatch_1 = require("./MessageBatch");
16
+ Object.defineProperty(exports, "MessageBatch", { enumerable: true, get: function () { return MessageBatch_1.MessageBatch; } });
15
17
  var EditableStreamReply_1 = require("./EditableStreamReply");
16
18
  Object.defineProperty(exports, "EditableStreamReply", { enumerable: true, get: function () { return EditableStreamReply_1.EditableStreamReply; } });
17
19
  var StreamingReply_1 = require("./StreamingReply");
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAkEA,4CAWC;AArDD,YAAY;AACZ,yCAA6C;AAApC,2GAAA,cAAc,OAAA;AAEvB,eAAe;AACf,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;AACnB,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAChB,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAChB,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAC5B,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AACvB,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;AACf,mDAA6E;AAApE,sHAAA,oBAAoB,OAAA;AAE7B,2BAA2B;AAC3B,qCAA8C;AAArC,4GAAA,iBAAiB,OAAA;AAC1B,iCAA0C;AAAjC,wGAAA,eAAe,OAAA;AAIxB,uCAA8C;AAC9C,mCAA0C;AAG1C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAgB,gBAAgB,CAAC,MAAkB;IACjD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,SAAS;YACZ,OAAO,IAAI,2BAAiB,CAAC,MAAM,CAAC,CAAC;QACvC,KAAK,OAAO;YACV,OAAO,IAAI,uBAAe,CAAC,MAAM,CAAC,CAAC;QACrC;YACE,MAAM,IAAI,KAAK,CACb,0BAA2B,MAA2B,CAAC,IAAI,EAAE,CAC9D,CAAC;IACN,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAwEA,4CAWC;AAtDD,YAAY;AACZ,yCAA6C;AAApC,2GAAA,cAAc,OAAA;AAEvB,eAAe;AACf,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;AACnB,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAChB,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAChB,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AACrB,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAC5B,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AACvB,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;AACf,mDAA6E;AAApE,sHAAA,oBAAoB,OAAA;AAE7B,2BAA2B;AAC3B,qCAA8C;AAArC,4GAAA,iBAAiB,OAAA;AAC1B,iCAA0C;AAAjC,wGAAA,eAAe,OAAA;AAIxB,uCAA8C;AAC9C,mCAA0C;AAG1C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAgB,gBAAgB,CAAC,MAAkB;IACjD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,SAAS;YACZ,OAAO,IAAI,2BAAiB,CAAC,MAAM,CAAC,CAAC;QACvC,KAAK,OAAO;YACV,OAAO,IAAI,uBAAe,CAAC,MAAM,CAAC,CAAC;QACrC;YACE,MAAM,IAAI,KAAK,CACb,0BAA2B,MAA2B,CAAC,IAAI,EAAE,CAC9D,CAAC;IACN,CAAC;AACH,CAAC"}
package/dist/types.d.ts CHANGED
@@ -175,4 +175,45 @@ export interface MessageQueryOptions {
175
175
  /** Only include messages before this timestamp */
176
176
  before?: TimestampInput;
177
177
  }
178
+ /** Message reference stored as part of a batch. */
179
+ export interface BatchMessageRef {
180
+ /** Message ID on the underlying platform. */
181
+ id: string;
182
+ /** Channel ID where the message was posted. */
183
+ channelId: string;
184
+ /** Origin platform. */
185
+ platform: Platform;
186
+ /** Posting timestamp captured by the batch API. */
187
+ postedAt: Date;
188
+ }
189
+ /** Options for creating a new batch. */
190
+ export interface BeginBatchOptions {
191
+ /** Optional grouping key (for example: "sprint-update"). */
192
+ key?: string;
193
+ /** Optional author label for retrieval filtering. Defaults to "me". */
194
+ author?: MessageAuthorFilter;
195
+ }
196
+ /** Query options for listing batches in a channel. */
197
+ export interface BatchQueryOptions {
198
+ /** Optional key filter. */
199
+ key?: string;
200
+ /** Optional author filter. */
201
+ author?: MessageAuthorFilter;
202
+ /** Maximum number of batches to return (newest first). */
203
+ limit?: number;
204
+ /** Include unfinished/open batches. Default: true. */
205
+ includeOpen?: boolean;
206
+ }
207
+ /** Summary returned by batch deletion helpers. */
208
+ export interface BatchDeleteSummary {
209
+ /** Number of successfully deleted messages. */
210
+ deleted: number;
211
+ /** Number of deletion attempts that failed. */
212
+ failed: number;
213
+ }
214
+ /** Summary returned by keepLatest(n). */
215
+ export interface BatchKeepLatestSummary extends BatchDeleteSummary {
216
+ /** Number of messages retained in the batch after pruning. */
217
+ kept: number;
218
+ }
178
219
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hardlydifficult/chat",
3
- "version": "1.1.28",
3
+ "version": "1.1.29",
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": "1.1.6",
22
+ "@hardlydifficult/document-generator": "1.1.7",
23
23
  "@types/node": "25.2.3",
24
24
  "typescript": "5.9.3",
25
25
  "vitest": "4.0.18"
26
26
  },
27
27
  "peerDependencies": {
28
- "@hardlydifficult/document-generator": "1.1.6"
28
+ "@hardlydifficult/document-generator": "1.1.7"
29
29
  }
30
30
  }