@decaf-ts/integrations 0.12.0 → 0.14.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.
Files changed (156) hide show
  1. package/dist/integrations.cjs +1 -1
  2. package/lib/cjs/calendar/environment.cjs +48 -0
  3. package/lib/cjs/calendar/environment.cjs.map +1 -0
  4. package/lib/cjs/calendar/google-calendar/GoogleCalendarService.cjs +338 -0
  5. package/lib/cjs/calendar/google-calendar/GoogleCalendarService.cjs.map +1 -0
  6. package/lib/cjs/calendar/google-calendar/index.cjs +20 -0
  7. package/lib/cjs/calendar/google-calendar/index.cjs.map +1 -0
  8. package/lib/cjs/comms/discord/DiscordService.cjs +318 -0
  9. package/lib/cjs/comms/discord/DiscordService.cjs.map +1 -0
  10. package/lib/cjs/comms/discord/index.cjs +19 -0
  11. package/lib/cjs/comms/discord/index.cjs.map +1 -0
  12. package/lib/cjs/comms/environment.cjs +16 -0
  13. package/lib/cjs/comms/environment.cjs.map +1 -1
  14. package/lib/cjs/comms/index.cjs +3 -0
  15. package/lib/cjs/comms/index.cjs.map +1 -1
  16. package/lib/cjs/comms/outlook/MicrosoftOutlookService.cjs +325 -0
  17. package/lib/cjs/comms/outlook/MicrosoftOutlookService.cjs.map +1 -0
  18. package/lib/cjs/comms/outlook/index.cjs +19 -0
  19. package/lib/cjs/comms/outlook/index.cjs.map +1 -0
  20. package/lib/cjs/comms/whatsapp/WhatsAppService.cjs +274 -0
  21. package/lib/cjs/comms/whatsapp/WhatsAppService.cjs.map +1 -0
  22. package/lib/cjs/comms/whatsapp/index.cjs +19 -0
  23. package/lib/cjs/comms/whatsapp/index.cjs.map +1 -0
  24. package/lib/cjs/index.cjs +3 -3
  25. package/lib/cjs/io/confluence/ConfluenceService.cjs +317 -0
  26. package/lib/cjs/io/confluence/ConfluenceService.cjs.map +1 -0
  27. package/lib/cjs/io/confluence/index.cjs +19 -0
  28. package/lib/cjs/io/confluence/index.cjs.map +1 -0
  29. package/lib/cjs/io/environment.cjs +28 -0
  30. package/lib/cjs/io/environment.cjs.map +1 -1
  31. package/lib/cjs/io/google-docs/GoogleDocsService.cjs +275 -0
  32. package/lib/cjs/io/google-docs/GoogleDocsService.cjs.map +1 -0
  33. package/lib/cjs/io/google-docs/index.cjs +19 -0
  34. package/lib/cjs/io/google-docs/index.cjs.map +1 -0
  35. package/lib/cjs/io/index.cjs +5 -0
  36. package/lib/cjs/io/index.cjs.map +1 -1
  37. package/lib/cjs/io/jira/JiraService.cjs +354 -0
  38. package/lib/cjs/io/jira/JiraService.cjs.map +1 -0
  39. package/lib/cjs/io/jira/index.cjs +19 -0
  40. package/lib/cjs/io/jira/index.cjs.map +1 -0
  41. package/lib/cjs/io/microsoft-excel/MicrosoftExcelService.cjs +253 -0
  42. package/lib/cjs/io/microsoft-excel/MicrosoftExcelService.cjs.map +1 -0
  43. package/lib/cjs/io/microsoft-excel/index.cjs +19 -0
  44. package/lib/cjs/io/microsoft-excel/index.cjs.map +1 -0
  45. package/lib/cjs/io/microsoft-sharepoint/MicrosoftSharePointService.cjs +261 -0
  46. package/lib/cjs/io/microsoft-sharepoint/MicrosoftSharePointService.cjs.map +1 -0
  47. package/lib/cjs/io/microsoft-sharepoint/index.cjs +19 -0
  48. package/lib/cjs/io/microsoft-sharepoint/index.cjs.map +1 -0
  49. package/lib/cjs/sftp/aws/index.cjs +24 -0
  50. package/lib/cjs/sftp/aws/index.cjs.map +1 -0
  51. package/lib/cjs/sftp/ssh2/index.cjs +24 -0
  52. package/lib/cjs/sftp/ssh2/index.cjs.map +1 -0
  53. package/lib/esm/calendar/environment.js +44 -0
  54. package/lib/esm/calendar/environment.js.map +1 -0
  55. package/lib/esm/calendar/google-calendar/GoogleCalendarService.js +333 -0
  56. package/lib/esm/calendar/google-calendar/GoogleCalendarService.js.map +1 -0
  57. package/lib/esm/calendar/google-calendar/index.js +3 -0
  58. package/lib/esm/calendar/google-calendar/index.js.map +1 -0
  59. package/lib/esm/comms/discord/DiscordService.js +313 -0
  60. package/lib/esm/comms/discord/DiscordService.js.map +1 -0
  61. package/lib/esm/comms/discord/index.js +2 -0
  62. package/lib/esm/comms/discord/index.js.map +1 -0
  63. package/lib/esm/comms/environment.js +16 -0
  64. package/lib/esm/comms/environment.js.map +1 -1
  65. package/lib/esm/comms/index.js +3 -0
  66. package/lib/esm/comms/index.js.map +1 -1
  67. package/lib/esm/comms/outlook/MicrosoftOutlookService.js +320 -0
  68. package/lib/esm/comms/outlook/MicrosoftOutlookService.js.map +1 -0
  69. package/lib/esm/comms/outlook/index.js +2 -0
  70. package/lib/esm/comms/outlook/index.js.map +1 -0
  71. package/lib/esm/comms/whatsapp/WhatsAppService.js +269 -0
  72. package/lib/esm/comms/whatsapp/WhatsAppService.js.map +1 -0
  73. package/lib/esm/comms/whatsapp/index.js +2 -0
  74. package/lib/esm/comms/whatsapp/index.js.map +1 -0
  75. package/lib/esm/index.js +3 -3
  76. package/lib/esm/io/confluence/ConfluenceService.js +312 -0
  77. package/lib/esm/io/confluence/ConfluenceService.js.map +1 -0
  78. package/lib/esm/io/confluence/index.js +2 -0
  79. package/lib/esm/io/confluence/index.js.map +1 -0
  80. package/lib/esm/io/environment.js +28 -0
  81. package/lib/esm/io/environment.js.map +1 -1
  82. package/lib/esm/io/google-docs/GoogleDocsService.js +270 -0
  83. package/lib/esm/io/google-docs/GoogleDocsService.js.map +1 -0
  84. package/lib/esm/io/google-docs/index.js +2 -0
  85. package/lib/esm/io/google-docs/index.js.map +1 -0
  86. package/lib/esm/io/index.js +5 -0
  87. package/lib/esm/io/index.js.map +1 -1
  88. package/lib/esm/io/jira/JiraService.js +349 -0
  89. package/lib/esm/io/jira/JiraService.js.map +1 -0
  90. package/lib/esm/io/jira/index.js +2 -0
  91. package/lib/esm/io/jira/index.js.map +1 -0
  92. package/lib/esm/io/microsoft-excel/MicrosoftExcelService.js +248 -0
  93. package/lib/esm/io/microsoft-excel/MicrosoftExcelService.js.map +1 -0
  94. package/lib/esm/io/microsoft-excel/index.js +2 -0
  95. package/lib/esm/io/microsoft-excel/index.js.map +1 -0
  96. package/lib/esm/io/microsoft-sharepoint/MicrosoftSharePointService.js +256 -0
  97. package/lib/esm/io/microsoft-sharepoint/MicrosoftSharePointService.js.map +1 -0
  98. package/lib/esm/io/microsoft-sharepoint/index.js +2 -0
  99. package/lib/esm/io/microsoft-sharepoint/index.js.map +1 -0
  100. package/lib/esm/sftp/aws/index.js +7 -0
  101. package/lib/esm/sftp/aws/index.js.map +1 -0
  102. package/lib/esm/sftp/ssh2/index.js +7 -0
  103. package/lib/esm/sftp/ssh2/index.js.map +1 -0
  104. package/lib/types/calendar/environment.d.cts +48 -0
  105. package/lib/types/calendar/environment.d.mts +48 -0
  106. package/lib/types/calendar/google-calendar/GoogleCalendarService.d.cts +316 -0
  107. package/lib/types/calendar/google-calendar/GoogleCalendarService.d.mts +316 -0
  108. package/lib/types/calendar/google-calendar/index.d.cts +2 -0
  109. package/lib/types/calendar/google-calendar/index.d.mts +2 -0
  110. package/lib/types/comms/discord/DiscordService.d.cts +285 -0
  111. package/lib/types/comms/discord/DiscordService.d.mts +285 -0
  112. package/lib/types/comms/discord/index.d.cts +1 -0
  113. package/lib/types/comms/discord/index.d.mts +1 -0
  114. package/lib/types/comms/environment.d.cts +34 -8
  115. package/lib/types/comms/environment.d.mts +34 -8
  116. package/lib/types/comms/index.d.cts +3 -0
  117. package/lib/types/comms/index.d.mts +3 -0
  118. package/lib/types/comms/outlook/MicrosoftOutlookService.d.cts +282 -0
  119. package/lib/types/comms/outlook/MicrosoftOutlookService.d.mts +282 -0
  120. package/lib/types/comms/outlook/index.d.cts +1 -0
  121. package/lib/types/comms/outlook/index.d.mts +1 -0
  122. package/lib/types/comms/whatsapp/WhatsAppService.d.cts +258 -0
  123. package/lib/types/comms/whatsapp/WhatsAppService.d.mts +258 -0
  124. package/lib/types/comms/whatsapp/index.d.cts +1 -0
  125. package/lib/types/comms/whatsapp/index.d.mts +1 -0
  126. package/lib/types/index.d.cts +2 -2
  127. package/lib/types/index.d.mts +2 -2
  128. package/lib/types/io/confluence/ConfluenceService.d.cts +250 -0
  129. package/lib/types/io/confluence/ConfluenceService.d.mts +250 -0
  130. package/lib/types/io/confluence/index.d.cts +1 -0
  131. package/lib/types/io/confluence/index.d.mts +1 -0
  132. package/lib/types/io/environment.d.cts +52 -12
  133. package/lib/types/io/environment.d.mts +52 -12
  134. package/lib/types/io/google-docs/GoogleDocsService.d.cts +188 -0
  135. package/lib/types/io/google-docs/GoogleDocsService.d.mts +188 -0
  136. package/lib/types/io/google-docs/index.d.cts +1 -0
  137. package/lib/types/io/google-docs/index.d.mts +1 -0
  138. package/lib/types/io/index.d.cts +5 -0
  139. package/lib/types/io/index.d.mts +5 -0
  140. package/lib/types/io/jira/JiraService.d.cts +300 -0
  141. package/lib/types/io/jira/JiraService.d.mts +300 -0
  142. package/lib/types/io/jira/index.d.cts +1 -0
  143. package/lib/types/io/jira/index.d.mts +1 -0
  144. package/lib/types/io/microsoft-excel/MicrosoftExcelService.d.cts +230 -0
  145. package/lib/types/io/microsoft-excel/MicrosoftExcelService.d.mts +230 -0
  146. package/lib/types/io/microsoft-excel/index.d.cts +1 -0
  147. package/lib/types/io/microsoft-excel/index.d.mts +1 -0
  148. package/lib/types/io/microsoft-sharepoint/MicrosoftSharePointService.d.cts +226 -0
  149. package/lib/types/io/microsoft-sharepoint/MicrosoftSharePointService.d.mts +226 -0
  150. package/lib/types/io/microsoft-sharepoint/index.d.cts +1 -0
  151. package/lib/types/io/microsoft-sharepoint/index.d.mts +1 -0
  152. package/lib/types/sftp/aws/index.d.cts +6 -0
  153. package/lib/types/sftp/aws/index.d.mts +6 -0
  154. package/lib/types/sftp/ssh2/index.d.cts +6 -0
  155. package/lib/types/sftp/ssh2/index.d.mts +6 -0
  156. package/package.json +263 -59
@@ -0,0 +1,318 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DiscordService = void 0;
4
+ /**
5
+ * @module integrations/comms/discord/service
6
+ * @summary Discord Bot API integration service for messages, channels, and reactions.
7
+ * @description Exposes the Discord Bot REST API (v10) as an undecorated
8
+ * client-based service built on {@link HttpApiService}. Configuration comes
9
+ * from an explicit `DiscordServiceConfig` or the `comms.discord` environment
10
+ * slice, and the bot token is sent as `Authorization: Bot <token>` on every
11
+ * call. Credentials are referenced from configuration (and, from as-graph
12
+ * nodes, from the resolved `discord` credential secret) and are never embedded
13
+ * in source. Failures are mapped to decaf errors via {@link httpError}.
14
+ *
15
+ * `core.comms.discord` is a callable messaging service/node. It is distinct
16
+ * from the mastra agent channel kinds `core.agent.trigger.discord` and
17
+ * `core.agent.response.discord`, which receive inbound conversations and post
18
+ * agent replies through host-supplied channel adapters.
19
+ */
20
+ const db_decorators_1 = require("@decaf-ts/db-decorators");
21
+ const environment_js_1 = require("./../environment.cjs");
22
+ const environmentValue_js_1 = require("./../../shared/environmentValue.cjs");
23
+ const index_js_1 = require("./../../shared/http/index.cjs");
24
+ const DEFAULT_CHANNEL_TYPE = 0;
25
+ /**
26
+ * @description Discord Bot API integration service
27
+ * @summary An undecorated HTTP service for channel messages
28
+ * (`sendMessage`, `getMessage`, `listMessages`), channels (`getChannel`,
29
+ * `listChannels`, `createChannel`, `deleteChannel`), and reactions
30
+ * (`addReaction`). Every operation requires a bot token and throws
31
+ * `InternalError` when it is missing or a required identifier is empty;
32
+ * transport failures are mapped to decaf errors via {@link httpError}. This is
33
+ * the callable comms surface (`core.comms.discord`), not the mastra agent
34
+ * trigger/response kinds.
35
+ * @class DiscordService
36
+ * @extends HttpApiService
37
+ * @category Comms
38
+ * @example
39
+ * ```ts
40
+ * import { DiscordService } from "@decaf-ts/integrations/comms/discord";
41
+ *
42
+ * const discord = new DiscordService();
43
+ * await discord.initialize({ token: process.env.GRAPH_CREDENTIAL_DISCORD_TOKEN });
44
+ * await discord.sendMessage({
45
+ * channelId: process.env.DISCORD_CHANNEL_ID ?? "",
46
+ * content: "Deployment finished",
47
+ * });
48
+ * ```
49
+ * @mermaid
50
+ * sequenceDiagram
51
+ * autonumber
52
+ * participant Caller
53
+ * participant Service as DiscordService
54
+ * participant Discord as Discord Bot API
55
+ * Caller->>Service: sendMessage(input)
56
+ * activate Service
57
+ * Service->>Service: requireBotToken()
58
+ * Service->>Discord: POST /channels/{id}/messages
59
+ * activate Discord
60
+ * Discord-->>Service: message payload
61
+ * deactivate Discord
62
+ * Service-->>Caller: message payload
63
+ * deactivate Service
64
+ * @memberOf module:integrations/comms/discord/service
65
+ */
66
+ class DiscordService extends index_js_1.HttpApiService {
67
+ constructor() {
68
+ super(...arguments);
69
+ /**
70
+ * @description The provider name used in error messages
71
+ */
72
+ this.serviceName = "Discord";
73
+ }
74
+ /**
75
+ * @description The Discord Bot API base URL
76
+ * @summary Used when the resolved config carries no `baseUrl`.
77
+ * @returns {string} `"https://discord.com/api/v10"`.
78
+ */
79
+ defaultBaseUrl() {
80
+ return "https://discord.com/api/v10";
81
+ }
82
+ /**
83
+ * @description Builds the Discord bot authorization header
84
+ * @summary Returns `Authorization: Bot <token>` when the config carries a
85
+ * token, and no headers otherwise.
86
+ * @param {DiscordServiceConfig} config - The resolved service configuration.
87
+ * @returns {Record<string, string>} The authorization headers (empty without a token).
88
+ */
89
+ authHeaders(config) {
90
+ return config.token ? { Authorization: `Bot ${config.token}` } : {};
91
+ }
92
+ /**
93
+ * @description Reads the Discord credentials and defaults from the environment
94
+ * @summary Reads the `comms.discord` environment slice and returns a partial
95
+ * config when a bot token is configured, `undefined` otherwise. Values pass
96
+ * through `envString`/`envNumber` to reject unset-leaf proxies.
97
+ * @returns {Partial<DiscordServiceConfig> | undefined} A partial config, or `undefined` when no Discord token is configured.
98
+ */
99
+ configFromEnvironment() {
100
+ const env = environment_js_1.CommsEnvironment.comms.discord;
101
+ const token = (0, environmentValue_js_1.envString)(env?.token);
102
+ if (!token)
103
+ return undefined;
104
+ return {
105
+ token,
106
+ baseUrl: (0, environmentValue_js_1.envString)(env.baseUrl),
107
+ timeout: (0, environmentValue_js_1.envNumber)(env.timeout),
108
+ };
109
+ }
110
+ /**
111
+ * @description Asserts that a Discord bot token is configured
112
+ * @summary Called by every operation before it touches the network.
113
+ * @returns {void}
114
+ * @throws {InternalError} When the resolved config has no `token`.
115
+ */
116
+ requireBotToken() {
117
+ if (!this.config.token) {
118
+ throw new db_decorators_1.InternalError("Discord requires a bot token");
119
+ }
120
+ }
121
+ /**
122
+ * @description Builds the encoded path for a channel resource
123
+ * @summary Validates the channel ID and URL-encodes it into `/channels/<id>`.
124
+ * @param {string} channelId - The Discord channel ID.
125
+ * @returns {string} The channel API path.
126
+ * @throws {InternalError} When `channelId` is empty.
127
+ */
128
+ channelPath(channelId) {
129
+ if (!channelId) {
130
+ throw new db_decorators_1.InternalError("Discord requires a channel id");
131
+ }
132
+ return `/channels/${encodeURIComponent(channelId)}`;
133
+ }
134
+ /**
135
+ * @description Sends a message to a Discord channel
136
+ * @summary `POST`s the content (and optional `tts`/`embeds`) to the channel
137
+ * messages endpoint and returns Discord's message payload.
138
+ * @param {DiscordMessageInput} input - The destination channel and message content.
139
+ * @returns {Promise<unknown>} The created message payload.
140
+ * @throws {InternalError} When no bot token is configured.
141
+ * @throws {BadRequestError} When Discord rejects the request.
142
+ * @example
143
+ * ```ts
144
+ * await discord.sendMessage({ channelId: "1234567890", content: "Hello" });
145
+ * ```
146
+ */
147
+ async sendMessage(input) {
148
+ this.requireBotToken();
149
+ try {
150
+ const response = await this.client.post(`${this.channelPath(input.channelId)}/messages`, {
151
+ content: input.content,
152
+ tts: input.tts ?? false,
153
+ ...(input.embeds ? { embeds: input.embeds } : {}),
154
+ });
155
+ return response.data;
156
+ }
157
+ catch (error) {
158
+ throw (0, index_js_1.httpError)("Discord", "send message", error);
159
+ }
160
+ }
161
+ /**
162
+ * @description Fetches a single Discord message
163
+ * @summary `GET`s the message by channel and message ID and returns the
164
+ * message payload.
165
+ * @param {string} channelId - The channel containing the message.
166
+ * @param {string} messageId - The message ID to fetch.
167
+ * @returns {Promise<unknown>} The message payload.
168
+ * @throws {InternalError} When no bot token is configured or the message ID is empty.
169
+ * @throws {NotFoundError} When the message does not exist (HTTP 404).
170
+ * @throws {BadRequestError} When Discord rejects the request.
171
+ */
172
+ async getMessage(channelId, messageId) {
173
+ this.requireBotToken();
174
+ if (!messageId) {
175
+ throw new db_decorators_1.InternalError("Discord requires a message id");
176
+ }
177
+ try {
178
+ const response = await this.client.get(`${this.channelPath(channelId)}/messages/${encodeURIComponent(messageId)}`);
179
+ return response.data;
180
+ }
181
+ catch (error) {
182
+ throw (0, index_js_1.httpError)("Discord", "get message", error);
183
+ }
184
+ }
185
+ /**
186
+ * @description Lists messages in a Discord channel
187
+ * @summary `GET`s the channel messages with the optional `limit` and
188
+ * `before` cursor and returns Discord's message page.
189
+ * @param {DiscordMessageListInput} input - The channel and paging options.
190
+ * @returns {Promise<unknown>} The message page payload.
191
+ * @throws {InternalError} When no bot token is configured.
192
+ * @throws {BadRequestError} When Discord rejects the request.
193
+ */
194
+ async listMessages(input) {
195
+ this.requireBotToken();
196
+ try {
197
+ const response = await this.client.get(`${this.channelPath(input.channelId)}/messages`, {
198
+ params: {
199
+ ...(input.limit !== undefined ? { limit: input.limit } : {}),
200
+ ...(input.before ? { before: input.before } : {}),
201
+ },
202
+ });
203
+ return response.data;
204
+ }
205
+ catch (error) {
206
+ throw (0, index_js_1.httpError)("Discord", "list messages", error);
207
+ }
208
+ }
209
+ /**
210
+ * @description Fetches a Discord channel
211
+ * @summary `GET`s the channel by ID and returns its payload.
212
+ * @param {string} channelId - The channel ID to fetch.
213
+ * @returns {Promise<unknown>} The channel payload.
214
+ * @throws {InternalError} When no bot token is configured or the channel ID is empty.
215
+ * @throws {NotFoundError} When the channel does not exist (HTTP 404).
216
+ * @throws {BadRequestError} When Discord rejects the request.
217
+ */
218
+ async getChannel(channelId) {
219
+ this.requireBotToken();
220
+ try {
221
+ const response = await this.client.get(this.channelPath(channelId));
222
+ return response.data;
223
+ }
224
+ catch (error) {
225
+ throw (0, index_js_1.httpError)("Discord", "get channel", error);
226
+ }
227
+ }
228
+ /**
229
+ * @description Lists every channel in a Discord guild
230
+ * @summary `GET`s `/guilds/<id>/channels` and returns the channel list.
231
+ * @param {string} guildId - The guild whose channels are listed.
232
+ * @returns {Promise<unknown>} The guild channel list payload.
233
+ * @throws {InternalError} When no bot token is configured or the guild ID is empty.
234
+ * @throws {BadRequestError} When Discord rejects the request.
235
+ */
236
+ async listChannels(guildId) {
237
+ this.requireBotToken();
238
+ if (!guildId) {
239
+ throw new db_decorators_1.InternalError("Discord requires a guild id");
240
+ }
241
+ try {
242
+ const response = await this.client.get(`/guilds/${encodeURIComponent(guildId)}/channels`);
243
+ return response.data;
244
+ }
245
+ catch (error) {
246
+ throw (0, index_js_1.httpError)("Discord", "list channels", error);
247
+ }
248
+ }
249
+ /**
250
+ * @description Creates a channel in a Discord guild
251
+ * @summary `POST`s the channel `name`, numeric `type` (default text), and
252
+ * optional `topic`/`parentId` to the guild channels endpoint.
253
+ * @param {DiscordChannelInput} input - The guild and new channel definition.
254
+ * @returns {Promise<unknown>} The created channel payload.
255
+ * @throws {InternalError} When no bot token is configured.
256
+ * @throws {BadRequestError} When Discord rejects the request.
257
+ */
258
+ async createChannel(input) {
259
+ this.requireBotToken();
260
+ try {
261
+ const response = await this.client.post(`/guilds/${encodeURIComponent(input.guildId)}/channels`, {
262
+ name: input.name,
263
+ type: input.type ?? DEFAULT_CHANNEL_TYPE,
264
+ ...(input.topic ? { topic: input.topic } : {}),
265
+ ...(input.parentId ? { parent_id: input.parentId } : {}),
266
+ });
267
+ return response.data;
268
+ }
269
+ catch (error) {
270
+ throw (0, index_js_1.httpError)("Discord", "create channel", error);
271
+ }
272
+ }
273
+ /**
274
+ * @description Deletes a Discord channel
275
+ * @summary `DELETE`s the channel and returns the response payload, falling
276
+ * back to `{ deleted: true, channelId }` when Discord returns no body.
277
+ * @param {string} channelId - The channel ID to delete.
278
+ * @returns {Promise<unknown>} The deletion payload.
279
+ * @throws {InternalError} When no bot token is configured or the channel ID is empty.
280
+ * @throws {NotFoundError} When the channel does not exist (HTTP 404).
281
+ * @throws {BadRequestError} When Discord rejects the request.
282
+ */
283
+ async deleteChannel(channelId) {
284
+ this.requireBotToken();
285
+ try {
286
+ const response = await this.client.delete(this.channelPath(channelId));
287
+ return response.data ?? { deleted: true, channelId };
288
+ }
289
+ catch (error) {
290
+ throw (0, index_js_1.httpError)("Discord", "delete channel", error);
291
+ }
292
+ }
293
+ /**
294
+ * @description Adds a reaction to a Discord message as the bot
295
+ * @summary `PUT`s the emoji to the message's `@me` reaction endpoint and
296
+ * echoes the channel and message IDs on success.
297
+ * @param {DiscordReactionInput} input - The channel, message, and emoji.
298
+ * @returns {Promise<unknown>} `{ channelId, messageId }` on success.
299
+ * @throws {InternalError} When no bot token is configured, or the message ID or emoji is empty.
300
+ * @throws {BadRequestError} When Discord rejects the request.
301
+ */
302
+ async addReaction(input) {
303
+ this.requireBotToken();
304
+ if (!input.messageId || !input.emoji) {
305
+ throw new db_decorators_1.InternalError("Discord requires a message id and emoji");
306
+ }
307
+ try {
308
+ await this.client.put(`${this.channelPath(input.channelId)}/messages/${encodeURIComponent(input.messageId)}/reactions/${encodeURIComponent(input.emoji)}/@me`);
309
+ return { channelId: input.channelId, messageId: input.messageId };
310
+ }
311
+ catch (error) {
312
+ throw (0, index_js_1.httpError)("Discord", "add reaction", error);
313
+ }
314
+ }
315
+ }
316
+ exports.DiscordService = DiscordService;
317
+ //# sourceMappingURL=DiscordService.js.map
318
+ //# sourceMappingURL=DiscordService.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comms/discord/DiscordService.cjs","sourceRoot":"","sources":["comms/discord/DiscordService.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./DiscordService.cjs"), exports);
18
+ //# sourceMappingURL=index.js.map
19
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comms/discord/index.cjs","sourceRoot":"","sources":["comms/discord/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,iCAAiC"}
@@ -57,6 +57,22 @@ exports.CommsEnvironment = logging_1.LoggedEnvironment.accumulate({
57
57
  baseUrl: "",
58
58
  timeout: undefined,
59
59
  },
60
+ discord: {
61
+ token: "",
62
+ baseUrl: "",
63
+ timeout: undefined,
64
+ },
65
+ whatsApp: {
66
+ token: "",
67
+ phoneNumberId: "",
68
+ baseUrl: "",
69
+ timeout: undefined,
70
+ },
71
+ outlook: {
72
+ token: "",
73
+ baseUrl: "",
74
+ timeout: undefined,
75
+ },
60
76
  },
61
77
  });
62
78
  //# sourceMappingURL=environment.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"comms/environment.cjs","sourceRoot":"","sources":["comms/environment.js"],"names":[],"mappings":";;;AAAA,+CAAsD;AACtD;;;;;;;;;;;;;;;;;;GAkBG;AACU,QAAA,gBAAgB,GAAG,2BAAiB,CAAC,UAAU,CAAC;IACzD,KAAK,EAAE;QACH,KAAK,EAAE;YACH,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,SAAS;SACrB;QACD,QAAQ,EAAE;YACN,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,SAAS;SACrB;QACD,KAAK,EAAE;YACH,KAAK,EAAE,EAAE;YACT,UAAU,EAAE,EAAE;YACd,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,SAAS;SACrB;QACD,KAAK,EAAE;YACH,QAAQ,EAAE,EAAE;YACZ,IAAI,EAAE,EAAE;YACR,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,EAAE;YACZ,QAAQ,EAAE,EAAE;YACZ,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,EAAE;YACT,YAAY,EAAE,EAAE;YAChB,OAAO,EAAE,SAAS;SACrB;QACD,KAAK,EAAE;YACH,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,SAAS;SACrB;KACJ;CACJ,CAAC,CAAC;AACH,uCAAuC"}
1
+ {"version":3,"file":"comms/environment.cjs","sourceRoot":"","sources":["comms/environment.js"],"names":[],"mappings":";;;AAAA,+CAAsD;AACtD;;;;;;;;;;;;;;;;;;GAkBG;AACU,QAAA,gBAAgB,GAAG,2BAAiB,CAAC,UAAU,CAAC;IACzD,KAAK,EAAE;QACH,KAAK,EAAE;YACH,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,SAAS;SACrB;QACD,QAAQ,EAAE;YACN,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,SAAS;SACrB;QACD,KAAK,EAAE;YACH,KAAK,EAAE,EAAE;YACT,UAAU,EAAE,EAAE;YACd,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,SAAS;SACrB;QACD,KAAK,EAAE;YACH,QAAQ,EAAE,EAAE;YACZ,IAAI,EAAE,EAAE;YACR,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,EAAE;YACZ,QAAQ,EAAE,EAAE;YACZ,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,EAAE;YACT,YAAY,EAAE,EAAE;YAChB,OAAO,EAAE,SAAS;SACrB;QACD,KAAK,EAAE;YACH,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,SAAS;SACrB;QACD,OAAO,EAAE;YACL,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,SAAS;SACrB;QACD,QAAQ,EAAE;YACN,KAAK,EAAE,EAAE;YACT,aAAa,EAAE,EAAE;YACjB,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,SAAS;SACrB;QACD,OAAO,EAAE;YACL,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,SAAS;SACrB;KACJ;CACJ,CAAC,CAAC;AACH,uCAAuC"}
@@ -26,6 +26,9 @@ __exportStar(require("./gmail/index.cjs"), exports);
26
26
  __exportStar(require("./slack/index.cjs"), exports);
27
27
  __exportStar(require("./teams/index.cjs"), exports);
28
28
  __exportStar(require("./telegram/index.cjs"), exports);
29
+ __exportStar(require("./discord/index.cjs"), exports);
30
+ __exportStar(require("./whatsapp/index.cjs"), exports);
31
+ __exportStar(require("./outlook/index.cjs"), exports);
29
32
  __exportStar(require("./environment.cjs"), exports);
30
33
  //# sourceMappingURL=index.js.map
31
34
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"comms/index.cjs","sourceRoot":"","sources":["comms/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;;;;;;GAMG;AACH,mDAAiC;AACjC,mDAAiC;AACjC,mDAAiC;AACjC,mDAAiC;AACjC,sDAAoC;AACpC,mDAAiC;AACjC,iCAAiC"}
1
+ {"version":3,"file":"comms/index.cjs","sourceRoot":"","sources":["comms/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;;;;;;GAMG;AACH,mDAAiC;AACjC,mDAAiC;AACjC,mDAAiC;AACjC,mDAAiC;AACjC,sDAAoC;AACpC,qDAAmC;AACnC,sDAAoC;AACpC,qDAAmC;AACnC,mDAAiC;AACjC,iCAAiC"}