aurival 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/events.d.ts CHANGED
@@ -1,9 +1,14 @@
1
1
  /**
2
- * Plain data a command handler receives (CONTRACT-V1 §3, §3.1).
2
+ * Plain data a handler receives (CONTRACT-V1 §3, §3.1).
3
3
  *
4
- * `Event` is the raw wire frame; `Context` is what `bot.ts` hands to a handler,
5
- * built from one. `Context` holds an `HttpClient` for `reply()` and nothing else
6
- * network-shaped — never the seed, a token, or the `Auth` object (SDK-33).
4
+ * `Event` is the raw wire frame; a context is what `bot.ts` hands to a
5
+ * handler, built from one. There is one context class per event family
6
+ * (BA-R68): `Context` for commands, `MemberContext`, `BotContext`,
7
+ * `ReactionContext`, and `EventContext` for a type this SDK does not name.
8
+ * Each carries only the fields its family delivers, so an editor can tell a
9
+ * developer what `ctx` holds without them opening the docs. Every context
10
+ * holds an `HttpClient` for its actions and nothing else network-shaped —
11
+ * never the seed, a token, or the `Auth` object (SDK-33).
7
12
  */
8
13
  import type { HttpClient } from './http.js';
9
14
  export interface User {
@@ -29,6 +34,14 @@ export interface Command {
29
34
  name: string;
30
35
  description: string;
31
36
  }
37
+ /**
38
+ * A message. Events carry one under `invoking_message` (with `sent_at` and a
39
+ * full `sender`); the REST side returns the stored entity (with `created_at`
40
+ * and `sender` as a bare `usr_…` id) — `reply()`, `send()` and `edit()` all
41
+ * decode that into this same shape, so `sent.id` is what you hand back to
42
+ * `edit()`, `delete()` and `react()`. A `sender` known only by id has empty
43
+ * `handle` and `name`.
44
+ */
32
45
  export interface Message {
33
46
  id: string;
34
47
  text: string;
@@ -94,88 +107,178 @@ export interface MemberPage {
94
107
  hasMore: boolean;
95
108
  nextCursor: string | null;
96
109
  }
97
- export interface ContextInit {
98
- command: string;
99
- arguments: string;
110
+ /** `member.joined` / `member.left` — group chats only, human members only. */
111
+ export type MemberEventType = 'member.joined' | 'member.left';
112
+ /** `bot.added` / `bot.removed` — this bot, in that chat, with who did it. */
113
+ export type BotEventType = 'bot.added' | 'bot.removed';
114
+ /** `reaction.added` — on one of this bot's own messages. There is no `reaction.removed`. */
115
+ export type ReactionEventType = 'reaction.added';
116
+ /** Every event type `bot.on()` names. `command.invoked` goes through `bot.command()`. */
117
+ export type EventType = MemberEventType | BotEventType | ReactionEventType;
118
+ interface BaseInit {
100
119
  chat: Chat;
101
- sender: User | null;
102
- /** Populated only for `member.joined` / `member.left`. */
103
- user: User | null;
104
- /** Populated only for `bot.added` / `bot.removed`. */
105
- actor: User | null;
106
- /** Populated only for `reaction.added`. */
107
- emoji: string | null;
108
120
  event: Event;
109
- message: Message | null;
110
121
  http: HttpClient;
111
122
  }
112
123
  /**
113
- * What a handler receives. Built by `bot.ts`'s dispatch closure from one
114
- * `Event` — `Socket` never constructs one. ONE class for every event type
115
- * (R6): `chat`/`sender`/`user`/`actor`/`message`/`emoji` are each populated
116
- * only for the event types that carry them —
117
- *
118
- * - `command.invoked`: `chat`, `sender`, `message`
119
- * - `member.joined` / `member.left`: `chat`, `user`
120
- * - `bot.added` / `bot.removed`: `chat`, `actor`
121
- * - `reaction.added`: `chat`, `sender`, `message`, `emoji`
122
- *
123
- * — everything else on a given `Context` is `null`. An unhandled or future
124
- * event type never throws building one: every field is read defensively off
125
- * `event.data` and falls back to `null`.
124
+ * What every context shares: the chat the event happened in, the raw event,
125
+ * and the actions. Subclasses add the fields their family delivers. The
126
+ * actions live here so `ctx.reply()` reads the same in every handler; a
127
+ * subclass that knows which message to quote says so through `quotes()`.
126
128
  */
127
- export declare class Context {
129
+ export declare class BaseContext {
128
130
  #private;
129
- readonly command: string;
130
- readonly arguments: string;
131
131
  readonly chat: Chat;
132
- readonly sender: User | null;
133
- readonly user: User | null;
134
- readonly actor: User | null;
135
- readonly emoji: string | null;
136
132
  readonly event: Event;
137
- readonly message: Message | null;
138
- constructor(init: ContextInit);
139
- /** Build straight from a `command.invoked` event's raw `data`. */
140
- static fromEvent(event: Event, http: HttpClient): Context;
133
+ constructor(init: BaseInit);
134
+ /** The message id `reply()` quotes, or `null` to send the reply free-standing. */
135
+ protected quotes(): string | null;
141
136
  /**
142
- * Build from any non-`command.invoked` event `bot.on(type, fn)` registered
143
- * for — `member.joined`/`member.left`, `bot.added`/`bot.removed`,
144
- * `reaction.added`, or a type this SDK does not yet know the shape of.
137
+ * Send a message to this chat, quoting the message this event is about
138
+ * when there is one (BA-R27). Returns the stored message, so `sent.id` is
139
+ * ready for `edit()`, `delete()` and `react()`.
145
140
  *
146
- * For a KNOWN type, the field set is pinned by CONTRACT-V1 §3.1: only the
147
- * fields that type actually carries are read off `data`, and every other
148
- * field is forced `null` even if the payload happens to carry a stray one
149
- * (a `member.joined` frame with a stray `sender` must not populate
150
- * `ctx.sender` — matches python). For a type this SDK does not recognize,
151
- * every field is read defensively and opportunistically — there is no
152
- * contract to pin it to, so whatever the frame happens to carry is
153
- * surfaced rather than discarded. `chat` itself falls back to an empty one
154
- * rather than throwing, for both cases.
141
+ * A fresh `Idempotency-Key` per call, reused across that call's retries by
142
+ * `HttpClient.request` itself. When the event carried no message id the
143
+ * `reply_to` field is omitted and the reply floats free.
155
144
  */
156
- static fromGenericEvent(event: Event, http: HttpClient): Context;
145
+ reply(text: string): Promise<Message>;
157
146
  /**
158
- * `POST /v1/messages`, quoting the message that invoked the command
159
- * (BA-R27, reversing SDK-30). One method, no flag. When the event carried no
160
- * message id the field is omitted and the reply floats free.
161
- *
162
- * A fresh `Idempotency-Key` per call, reused across that call's retries by
163
- * `HttpClient.request` itself.
147
+ * Send a message to any chat this bot is in — this one or another.
148
+ * `mentions` names who `@handle` tokens in `text` point at: pass
149
+ * `mention(user)`, a `User`, or `{ user: 'usr_…' }`. Returns the stored
150
+ * message.
151
+ */
152
+ send(chat: Chat | string, text: string, options?: {
153
+ mentions?: MentionLike[];
154
+ }): Promise<Message>;
155
+ /**
156
+ * Show or clear "is thinking…" in this chat. `POST /v1/chats/{chat}/typing`
157
+ * with `{"is_typing": bool}`. Command handlers get this automatically
158
+ * (auto-typing); reach for `withTyping()` when you want it yourself.
164
159
  */
165
- reply(text: string): Promise<Record<string, unknown>>;
166
- /** `POST /v1/chats/{chat}/typing` — `is_typing` only, no `state` spelling. */
167
160
  typing(isTyping: boolean): Promise<void>;
168
- /** Sends `true` on entry, `false` on exit — ALWAYS, including on throw. */
161
+ /** Runs `fn` with the indicator on: `true` on entry, `false` on exit — ALWAYS, including on throw. */
169
162
  withTyping<T>(fn: () => Promise<T>): Promise<T>;
170
- edit(message: Message | string, text: string): Promise<Record<string, unknown>>;
163
+ /**
164
+ * Change the text of one of this bot's own messages. Pass what `reply()`
165
+ * or `send()` returned, or its id. Someone else's message is
166
+ * `MessageNotYours`. Returns the updated message.
167
+ */
168
+ edit(message: Message | string, text: string): Promise<Message>;
169
+ /** Delete one of this bot's own messages. Someone else's is `MessageNotYours`. */
171
170
  delete(message: Message | string): Promise<void>;
171
+ /**
172
+ * Put a reaction on a message, one emoji at a time. Reacting twice with the
173
+ * same emoji is a no-op; a string longer than one emoji is
174
+ * `ReactionEmojiTooLong`.
175
+ */
172
176
  react(message: Message | string, emoji: string): Promise<void>;
177
+ /** Take a reaction off. Removing one that is not there is a no-op. */
173
178
  unreact(message: Message | string, emoji: string): Promise<void>;
174
- send(chat: Chat | string, text: string, options?: {
175
- mentions?: MentionLike[];
176
- }): Promise<Record<string, unknown>>;
179
+ /**
180
+ * One page of who is in a chat, bots included — this chat by default.
181
+ * Check `hasMore` and pass `nextCursor` back as `cursor` for the next page;
182
+ * `ctx.chat.member_count` is the total without a call.
183
+ */
177
184
  members(chat?: Chat | string, options?: {
178
185
  cursor?: string;
179
186
  }): Promise<MemberPage>;
180
187
  }
188
+ export interface ContextInit extends BaseInit {
189
+ command: string;
190
+ arguments: string;
191
+ sender: User;
192
+ message: Message;
193
+ }
194
+ /**
195
+ * What a `bot.command()` handler receives. Built by `bot.ts`'s dispatch
196
+ * closure from one `command.invoked` event — `Socket` never constructs one.
197
+ * `sender` and `message` are always set: the server never emits a command
198
+ * without both.
199
+ */
200
+ export declare class Context extends BaseContext {
201
+ /** The command name as the server matched it, without the slash. */
202
+ readonly command: string;
203
+ /** Everything after the command name, untrimmed of its inner spaces. `''` when there was nothing. */
204
+ readonly arguments: string;
205
+ /** Who typed the command. */
206
+ readonly sender: User;
207
+ /** The message that carried the command. `reply()` quotes it. */
208
+ readonly message: Message;
209
+ constructor(init: ContextInit);
210
+ protected quotes(): string | null;
211
+ /** Build straight from a `command.invoked` event's raw `data`. */
212
+ static fromEvent(event: Event, http: HttpClient): Context;
213
+ }
214
+ export interface MemberContextInit extends BaseInit {
215
+ user: User;
216
+ }
217
+ /** `member.joined` / `member.left`: someone came into, or left, a group chat this bot is in. */
218
+ export declare class MemberContext extends BaseContext {
219
+ /** Who joined or left. Never the bot itself — that is `bot.added` / `bot.removed`. */
220
+ readonly user: User;
221
+ constructor(init: MemberContextInit);
222
+ static fromEvent(event: Event, http: HttpClient): MemberContext;
223
+ }
224
+ export interface BotContextInit extends BaseInit {
225
+ actor: User;
226
+ }
227
+ /** `bot.added` / `bot.removed`: this bot was put into, or taken out of, a chat. */
228
+ export declare class BotContext extends BaseContext {
229
+ /** The person who added or removed the bot. */
230
+ readonly actor: User;
231
+ constructor(init: BotContextInit);
232
+ static fromEvent(event: Event, http: HttpClient): BotContext;
233
+ }
234
+ export interface ReactionContextInit extends BaseInit {
235
+ sender: User;
236
+ message: Message;
237
+ emoji: string;
238
+ }
239
+ /** `reaction.added`: someone reacted to one of this bot's own messages. */
240
+ export declare class ReactionContext extends BaseContext {
241
+ /** Who reacted. */
242
+ readonly sender: User;
243
+ /** The bot's message they reacted to — id only; the text is not re-sent. `reply()` quotes it. */
244
+ readonly message: Message;
245
+ /** The emoji, as one string. */
246
+ readonly emoji: string;
247
+ constructor(init: ReactionContextInit);
248
+ protected quotes(): string | null;
249
+ static fromEvent(event: Event, http: HttpClient): ReactionContext;
250
+ }
251
+ export interface EventContextInit extends BaseInit {
252
+ sender: User | null;
253
+ user: User | null;
254
+ actor: User | null;
255
+ message: Message | null;
256
+ emoji: string | null;
257
+ }
258
+ /**
259
+ * An event type this SDK does not name yet. Nothing is pinned, so every
260
+ * field is read off the frame if it is there and `null` if it is not —
261
+ * whatever the wire carries is surfaced rather than discarded, and building
262
+ * one never throws.
263
+ */
264
+ export declare class EventContext extends BaseContext {
265
+ readonly sender: User | null;
266
+ readonly user: User | null;
267
+ readonly actor: User | null;
268
+ readonly message: Message | null;
269
+ readonly emoji: string | null;
270
+ constructor(init: EventContextInit);
271
+ protected quotes(): string | null;
272
+ static fromEvent(event: Event, http: HttpClient): EventContext;
273
+ }
274
+ /** Any context a handler can receive. What `bot.onError()` sees beside the error. */
275
+ export type AnyContext = Context | MemberContext | BotContext | ReactionContext | EventContext;
276
+ /**
277
+ * The context class for an event, by its type. `command.invoked` gets
278
+ * `Context`; the three named families get theirs; anything else gets
279
+ * `EventContext`. The dispatch side of BA-R68 — `bot.ts` calls this and
280
+ * hands the result to every handler registered for the type.
281
+ */
282
+ export declare function contextFor(event: Event, http: HttpClient): AnyContext;
283
+ export {};
181
284
  //# sourceMappingURL=events.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}