@decaf-ts/integrations 0.12.0 → 0.14.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.
Files changed (144) 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/esm/calendar/environment.js +44 -0
  50. package/lib/esm/calendar/environment.js.map +1 -0
  51. package/lib/esm/calendar/google-calendar/GoogleCalendarService.js +333 -0
  52. package/lib/esm/calendar/google-calendar/GoogleCalendarService.js.map +1 -0
  53. package/lib/esm/calendar/google-calendar/index.js +3 -0
  54. package/lib/esm/calendar/google-calendar/index.js.map +1 -0
  55. package/lib/esm/comms/discord/DiscordService.js +313 -0
  56. package/lib/esm/comms/discord/DiscordService.js.map +1 -0
  57. package/lib/esm/comms/discord/index.js +2 -0
  58. package/lib/esm/comms/discord/index.js.map +1 -0
  59. package/lib/esm/comms/environment.js +16 -0
  60. package/lib/esm/comms/environment.js.map +1 -1
  61. package/lib/esm/comms/index.js +3 -0
  62. package/lib/esm/comms/index.js.map +1 -1
  63. package/lib/esm/comms/outlook/MicrosoftOutlookService.js +320 -0
  64. package/lib/esm/comms/outlook/MicrosoftOutlookService.js.map +1 -0
  65. package/lib/esm/comms/outlook/index.js +2 -0
  66. package/lib/esm/comms/outlook/index.js.map +1 -0
  67. package/lib/esm/comms/whatsapp/WhatsAppService.js +269 -0
  68. package/lib/esm/comms/whatsapp/WhatsAppService.js.map +1 -0
  69. package/lib/esm/comms/whatsapp/index.js +2 -0
  70. package/lib/esm/comms/whatsapp/index.js.map +1 -0
  71. package/lib/esm/index.js +3 -3
  72. package/lib/esm/io/confluence/ConfluenceService.js +312 -0
  73. package/lib/esm/io/confluence/ConfluenceService.js.map +1 -0
  74. package/lib/esm/io/confluence/index.js +2 -0
  75. package/lib/esm/io/confluence/index.js.map +1 -0
  76. package/lib/esm/io/environment.js +28 -0
  77. package/lib/esm/io/environment.js.map +1 -1
  78. package/lib/esm/io/google-docs/GoogleDocsService.js +270 -0
  79. package/lib/esm/io/google-docs/GoogleDocsService.js.map +1 -0
  80. package/lib/esm/io/google-docs/index.js +2 -0
  81. package/lib/esm/io/google-docs/index.js.map +1 -0
  82. package/lib/esm/io/index.js +5 -0
  83. package/lib/esm/io/index.js.map +1 -1
  84. package/lib/esm/io/jira/JiraService.js +349 -0
  85. package/lib/esm/io/jira/JiraService.js.map +1 -0
  86. package/lib/esm/io/jira/index.js +2 -0
  87. package/lib/esm/io/jira/index.js.map +1 -0
  88. package/lib/esm/io/microsoft-excel/MicrosoftExcelService.js +248 -0
  89. package/lib/esm/io/microsoft-excel/MicrosoftExcelService.js.map +1 -0
  90. package/lib/esm/io/microsoft-excel/index.js +2 -0
  91. package/lib/esm/io/microsoft-excel/index.js.map +1 -0
  92. package/lib/esm/io/microsoft-sharepoint/MicrosoftSharePointService.js +256 -0
  93. package/lib/esm/io/microsoft-sharepoint/MicrosoftSharePointService.js.map +1 -0
  94. package/lib/esm/io/microsoft-sharepoint/index.js +2 -0
  95. package/lib/esm/io/microsoft-sharepoint/index.js.map +1 -0
  96. package/lib/types/calendar/environment.d.cts +48 -0
  97. package/lib/types/calendar/environment.d.mts +48 -0
  98. package/lib/types/calendar/google-calendar/GoogleCalendarService.d.cts +316 -0
  99. package/lib/types/calendar/google-calendar/GoogleCalendarService.d.mts +316 -0
  100. package/lib/types/calendar/google-calendar/index.d.cts +2 -0
  101. package/lib/types/calendar/google-calendar/index.d.mts +2 -0
  102. package/lib/types/comms/discord/DiscordService.d.cts +285 -0
  103. package/lib/types/comms/discord/DiscordService.d.mts +285 -0
  104. package/lib/types/comms/discord/index.d.cts +1 -0
  105. package/lib/types/comms/discord/index.d.mts +1 -0
  106. package/lib/types/comms/environment.d.cts +34 -8
  107. package/lib/types/comms/environment.d.mts +34 -8
  108. package/lib/types/comms/index.d.cts +3 -0
  109. package/lib/types/comms/index.d.mts +3 -0
  110. package/lib/types/comms/outlook/MicrosoftOutlookService.d.cts +282 -0
  111. package/lib/types/comms/outlook/MicrosoftOutlookService.d.mts +282 -0
  112. package/lib/types/comms/outlook/index.d.cts +1 -0
  113. package/lib/types/comms/outlook/index.d.mts +1 -0
  114. package/lib/types/comms/whatsapp/WhatsAppService.d.cts +258 -0
  115. package/lib/types/comms/whatsapp/WhatsAppService.d.mts +258 -0
  116. package/lib/types/comms/whatsapp/index.d.cts +1 -0
  117. package/lib/types/comms/whatsapp/index.d.mts +1 -0
  118. package/lib/types/index.d.cts +2 -2
  119. package/lib/types/index.d.mts +2 -2
  120. package/lib/types/io/confluence/ConfluenceService.d.cts +250 -0
  121. package/lib/types/io/confluence/ConfluenceService.d.mts +250 -0
  122. package/lib/types/io/confluence/index.d.cts +1 -0
  123. package/lib/types/io/confluence/index.d.mts +1 -0
  124. package/lib/types/io/environment.d.cts +52 -12
  125. package/lib/types/io/environment.d.mts +52 -12
  126. package/lib/types/io/google-docs/GoogleDocsService.d.cts +188 -0
  127. package/lib/types/io/google-docs/GoogleDocsService.d.mts +188 -0
  128. package/lib/types/io/google-docs/index.d.cts +1 -0
  129. package/lib/types/io/google-docs/index.d.mts +1 -0
  130. package/lib/types/io/index.d.cts +5 -0
  131. package/lib/types/io/index.d.mts +5 -0
  132. package/lib/types/io/jira/JiraService.d.cts +300 -0
  133. package/lib/types/io/jira/JiraService.d.mts +300 -0
  134. package/lib/types/io/jira/index.d.cts +1 -0
  135. package/lib/types/io/jira/index.d.mts +1 -0
  136. package/lib/types/io/microsoft-excel/MicrosoftExcelService.d.cts +230 -0
  137. package/lib/types/io/microsoft-excel/MicrosoftExcelService.d.mts +230 -0
  138. package/lib/types/io/microsoft-excel/index.d.cts +1 -0
  139. package/lib/types/io/microsoft-excel/index.d.mts +1 -0
  140. package/lib/types/io/microsoft-sharepoint/MicrosoftSharePointService.d.cts +226 -0
  141. package/lib/types/io/microsoft-sharepoint/MicrosoftSharePointService.d.mts +226 -0
  142. package/lib/types/io/microsoft-sharepoint/index.d.cts +1 -0
  143. package/lib/types/io/microsoft-sharepoint/index.d.mts +1 -0
  144. package/package.json +101 -5
@@ -0,0 +1,316 @@
1
+ import { HttpApiService, type HttpApiServiceConfig } from "../../shared/http/index.d.cts";
2
+ /**
3
+ * @description Configuration for the Google Calendar service
4
+ * @summary Extends {@link HttpApiServiceConfig} with an optional OAuth
5
+ * `token`, an optional `apiKey`, and a default `calendarId`. When omitted, the
6
+ * `calendar.googleCalendar` environment slice supplies the same values (plus
7
+ * optional `baseUrl`/`timeout`). At least one credential is required; the token
8
+ * wins when both are set, and the calendar defaults to `"primary"`.
9
+ * @category Calendar
10
+ * @memberOf module:integrations/calendar/google-calendar/service
11
+ */
12
+ export interface GoogleCalendarServiceConfig extends HttpApiServiceConfig {
13
+ /**
14
+ * @description Google OAuth access token
15
+ * @summary Sent as `Authorization: Bearer <token>` when present.
16
+ */
17
+ token?: string;
18
+ /**
19
+ * @description Google API key
20
+ * @summary Sent as the `key` query parameter only when no OAuth token is configured.
21
+ */
22
+ apiKey?: string;
23
+ /**
24
+ * @description Default calendar ID used when a call does not override it
25
+ */
26
+ calendarId?: string;
27
+ }
28
+ /**
29
+ * @description Input for creating a Google Calendar event
30
+ * @summary Carries the optional target `calendarId`, `summary`, optional
31
+ * description and location, start/end values (date or date-time), an optional
32
+ * time zone, and attendee email addresses.
33
+ * @category Calendar
34
+ * @memberOf module:integrations/calendar/google-calendar/service
35
+ */
36
+ export interface GoogleCalendarEventInput {
37
+ /**
38
+ * @description Calendar ID (defaults to the configured value or `primary`)
39
+ */
40
+ calendarId?: string;
41
+ /**
42
+ * @description Event summary/title
43
+ */
44
+ summary: string;
45
+ /**
46
+ * @description Event description
47
+ */
48
+ description?: string;
49
+ /**
50
+ * @description Event location
51
+ */
52
+ location?: string;
53
+ /**
54
+ * @description Start date (`YYYY-MM-DD`) or date-time (ISO 8601)
55
+ */
56
+ start: string;
57
+ /**
58
+ * @description End date (`YYYY-MM-DD`) or date-time (ISO 8601)
59
+ */
60
+ end: string;
61
+ /**
62
+ * @description IANA time zone applied to date-time values
63
+ */
64
+ timeZone?: string;
65
+ /**
66
+ * @description Attendee email addresses
67
+ */
68
+ attendees?: string[];
69
+ }
70
+ /**
71
+ * @description Input for listing Google Calendar events
72
+ * @summary Carries the optional `calendarId` plus the time window, result cap,
73
+ * free-text query, and single-events expansion flag.
74
+ * @category Calendar
75
+ * @memberOf module:integrations/calendar/google-calendar/service
76
+ */
77
+ export interface GoogleCalendarListEventsInput {
78
+ /**
79
+ * @description Calendar ID (defaults to the configured value or `primary`)
80
+ */
81
+ calendarId?: string;
82
+ /**
83
+ * @description Lower bound for event start time (ISO 8601)
84
+ */
85
+ timeMin?: string;
86
+ /**
87
+ * @description Upper bound for event start time (ISO 8601)
88
+ */
89
+ timeMax?: string;
90
+ /**
91
+ * @description Maximum number of events to return
92
+ */
93
+ maxResults?: number;
94
+ /**
95
+ * @description Free-text search across event fields
96
+ */
97
+ q?: string;
98
+ /**
99
+ * @description Whether recurring events are expanded into instances
100
+ */
101
+ singleEvents?: boolean;
102
+ }
103
+ /**
104
+ * @description Input for updating a Google Calendar event
105
+ * @summary Carries the optional `calendarId` and the fields to change; omitted
106
+ * fields are left untouched by the partial update.
107
+ * @category Calendar
108
+ * @memberOf module:integrations/calendar/google-calendar/service
109
+ */
110
+ export interface GoogleCalendarEventUpdate {
111
+ /**
112
+ * @description Calendar ID (defaults to the configured value or `primary`)
113
+ */
114
+ calendarId?: string;
115
+ /**
116
+ * @description New event summary/title
117
+ */
118
+ summary?: string;
119
+ /**
120
+ * @description New event description
121
+ */
122
+ description?: string;
123
+ /**
124
+ * @description New event location
125
+ */
126
+ location?: string;
127
+ /**
128
+ * @description New start date or date-time
129
+ */
130
+ start?: string;
131
+ /**
132
+ * @description New end date or date-time
133
+ */
134
+ end?: string;
135
+ /**
136
+ * @description IANA time zone applied to date-time values
137
+ */
138
+ timeZone?: string;
139
+ /**
140
+ * @description Replacement attendee email addresses
141
+ */
142
+ attendees?: string[];
143
+ }
144
+ /**
145
+ * @description Google Calendar API integration service
146
+ * @summary An undecorated HTTP service for listing calendars and events and
147
+ * for creating, reading, updating, and deleting events. Every operation needs
148
+ * either an OAuth token or an API key; missing credentials or identifiers raise
149
+ * `InternalError`, and transport failures are mapped to decaf errors via
150
+ * {@link httpError}.
151
+ * @class GoogleCalendarService
152
+ * @extends HttpApiService
153
+ * @category Calendar
154
+ * @example
155
+ * ```ts
156
+ * import { GoogleCalendarService } from "@decaf-ts/integrations/calendar/google-calendar";
157
+ *
158
+ * const calendar = new GoogleCalendarService();
159
+ * await calendar.initialize({
160
+ * token: process.env.GRAPH_CREDENTIAL_GOOGLE_CALENDAR_TOKEN,
161
+ * calendarId: "primary",
162
+ * });
163
+ * await calendar.listEvents({ timeMin: new Date().toISOString() });
164
+ * ```
165
+ * @mermaid
166
+ * sequenceDiagram
167
+ * autonumber
168
+ * participant Caller
169
+ * participant Service as GoogleCalendarService
170
+ * participant API as Google Calendar API
171
+ * Caller->>Service: createEvent(input)
172
+ * activate Service
173
+ * Service->>Service: requireAuth()
174
+ * Service->>API: POST /calendars/{id}/events
175
+ * activate API
176
+ * API-->>Service: created event
177
+ * deactivate API
178
+ * Service-->>Caller: created event
179
+ * deactivate Service
180
+ * @memberOf module:integrations/calendar/google-calendar/service
181
+ */
182
+ export declare class GoogleCalendarService extends HttpApiService<GoogleCalendarServiceConfig> {
183
+ /**
184
+ * @description The provider name used in error messages
185
+ */
186
+ protected readonly serviceName = "Google Calendar";
187
+ /**
188
+ * @description The Google Calendar API base URL
189
+ * @summary Used when the resolved config carries no `baseUrl`.
190
+ * @returns {string} `"https://www.googleapis.com/calendar/v3"`.
191
+ */
192
+ protected defaultBaseUrl(): string;
193
+ /**
194
+ * @description Builds the Google Calendar authorization headers
195
+ * @summary Returns `Authorization: Bearer <token>` when an OAuth token is
196
+ * configured, and no headers otherwise (API keys travel as query parameters).
197
+ * @param {GoogleCalendarServiceConfig} config - The resolved service configuration.
198
+ * @returns {Record<string, string>} The authorization headers (empty without a token).
199
+ */
200
+ protected authHeaders(config: GoogleCalendarServiceConfig): Record<string, string>;
201
+ /**
202
+ * @description Reads the Google Calendar credentials and defaults from the environment
203
+ * @summary Reads the `calendar.googleCalendar` slice and returns a partial
204
+ * config when a token or API key is configured, `undefined` otherwise. Values
205
+ * pass through `envString`/`envNumber` to reject unset-leaf proxies.
206
+ * @returns {Partial<GoogleCalendarServiceConfig> | undefined} A partial config, or `undefined` when no credential is configured.
207
+ */
208
+ protected configFromEnvironment(): Partial<GoogleCalendarServiceConfig> | undefined;
209
+ /**
210
+ * @description Asserts that an OAuth token or API key is configured
211
+ * @summary Called by every operation before it touches the network.
212
+ * @returns {void}
213
+ * @throws {InternalError} When neither a token nor an API key is configured.
214
+ */
215
+ protected requireAuth(): void;
216
+ /**
217
+ * @description Builds API-key query parameters when no OAuth token is set
218
+ * @summary Returns `{ key }` for API-key authentication, and an empty object
219
+ * when an OAuth token is used (or no API key is configured).
220
+ * @returns {Record<string, string>} The query parameters carrying the API key, if any.
221
+ */
222
+ private authParams;
223
+ /**
224
+ * @description Builds the encoded events path for a calendar
225
+ * @summary Resolves the calendar ID from the argument, the configured
226
+ * default, or `"primary"`, then encodes it into
227
+ * `/calendars/<id>/events`.
228
+ * @param {string} [calendarId] - Optional per-call calendar ID.
229
+ * @returns {string} The calendar events API path.
230
+ */
231
+ private calendarPath;
232
+ /**
233
+ * @description Builds the Google Calendar start/end object
234
+ * @summary Emits `{ date }` for all-day values and `{ dateTime, timeZone? }`
235
+ * for values containing a `T` separator.
236
+ * @param {string} value - The date or date-time value.
237
+ * @param {string} [timeZone] - Optional IANA time zone for date-time values.
238
+ * @returns {Record<string, string>} The Calendar API time object.
239
+ */
240
+ private eventTime;
241
+ /**
242
+ * @description Lists the calendars visible to the authenticated user
243
+ * @summary `GET`s `/users/me/calendarList` and returns the calendar list.
244
+ * @returns {Promise<unknown>} The calendar list payload.
245
+ * @throws {InternalError} When no credential is configured.
246
+ * @throws {BadRequestError} When Google rejects the request.
247
+ */
248
+ listCalendars(): Promise<unknown>;
249
+ /**
250
+ * @description Lists events in a calendar
251
+ * @summary `GET`s the calendar's events applying the optional time window,
252
+ * result cap, free-text query, and single-events flag.
253
+ * @param {GoogleCalendarListEventsInput} [input] - The calendar and event query options.
254
+ * @returns {Promise<unknown>} The event collection payload.
255
+ * @throws {InternalError} When no credential is configured.
256
+ * @throws {NotFoundError} When the calendar does not exist (HTTP 404).
257
+ * @throws {BadRequestError} When Google rejects the query.
258
+ */
259
+ listEvents(input?: GoogleCalendarListEventsInput): Promise<unknown>;
260
+ /**
261
+ * @description Creates a Google Calendar event
262
+ * @summary `POST`s the event to the resolved calendar; start/end values are
263
+ * normalized to Calendar time objects and attendees are mapped to
264
+ * `{ email }` entries.
265
+ * @param {GoogleCalendarEventInput} input - The event definition.
266
+ * @returns {Promise<unknown>} The created event payload.
267
+ * @throws {InternalError} When no credential is configured, or the summary, start, or end is missing.
268
+ * @throws {NotFoundError} When the calendar does not exist (HTTP 404).
269
+ * @throws {BadRequestError} When Google rejects the event.
270
+ * @example
271
+ * ```ts
272
+ * await calendar.createEvent({
273
+ * summary: "Release review",
274
+ * start: "2026-11-01T09:00:00Z",
275
+ * end: "2026-11-01T10:00:00Z",
276
+ * attendees: ["team@example.com"],
277
+ * });
278
+ * ```
279
+ */
280
+ createEvent(input: GoogleCalendarEventInput): Promise<unknown>;
281
+ /**
282
+ * @description Fetches a single Google Calendar event
283
+ * @summary `GET`s the event from the given calendar.
284
+ * @param {string} calendarId - The calendar ID (empty falls back to the configured value or `primary`).
285
+ * @param {string} eventId - The event ID.
286
+ * @returns {Promise<unknown>} The event payload.
287
+ * @throws {InternalError} When no credential is configured or the event ID is empty.
288
+ * @throws {NotFoundError} When the event does not exist (HTTP 404).
289
+ * @throws {BadRequestError} When Google rejects the request.
290
+ */
291
+ getEvent(calendarId: string, eventId: string): Promise<unknown>;
292
+ /**
293
+ * @description Partially updates a Google Calendar event
294
+ * @summary `PATCH`es only the supplied fields on the event, normalizing
295
+ * start/end and attendee values; omitted fields are left unchanged.
296
+ * @param {string} eventId - The event ID to update.
297
+ * @param {GoogleCalendarEventUpdate} input - The fields to change.
298
+ * @returns {Promise<unknown>} The updated event payload.
299
+ * @throws {InternalError} When no credential is configured or the event ID is empty.
300
+ * @throws {NotFoundError} When the event does not exist (HTTP 404).
301
+ * @throws {BadRequestError} When Google rejects the update.
302
+ */
303
+ updateEvent(eventId: string, input: GoogleCalendarEventUpdate): Promise<unknown>;
304
+ /**
305
+ * @description Deletes a Google Calendar event
306
+ * @summary `DELETE`s the event from the given calendar and returns
307
+ * `{ deleted: true, eventId }`.
308
+ * @param {string} calendarId - The calendar ID (empty falls back to the configured value or `primary`).
309
+ * @param {string} eventId - The event ID to delete.
310
+ * @returns {Promise<unknown>} `{ deleted: true, eventId }` on success.
311
+ * @throws {InternalError} When no credential is configured or the event ID is empty.
312
+ * @throws {NotFoundError} When the event does not exist (HTTP 404).
313
+ * @throws {BadRequestError} When Google rejects the deletion.
314
+ */
315
+ deleteEvent(calendarId: string, eventId: string): Promise<unknown>;
316
+ }
@@ -0,0 +1,316 @@
1
+ import { HttpApiService, type HttpApiServiceConfig } from "../../shared/http/index.d.mts";
2
+ /**
3
+ * @description Configuration for the Google Calendar service
4
+ * @summary Extends {@link HttpApiServiceConfig} with an optional OAuth
5
+ * `token`, an optional `apiKey`, and a default `calendarId`. When omitted, the
6
+ * `calendar.googleCalendar` environment slice supplies the same values (plus
7
+ * optional `baseUrl`/`timeout`). At least one credential is required; the token
8
+ * wins when both are set, and the calendar defaults to `"primary"`.
9
+ * @category Calendar
10
+ * @memberOf module:integrations/calendar/google-calendar/service
11
+ */
12
+ export interface GoogleCalendarServiceConfig extends HttpApiServiceConfig {
13
+ /**
14
+ * @description Google OAuth access token
15
+ * @summary Sent as `Authorization: Bearer <token>` when present.
16
+ */
17
+ token?: string;
18
+ /**
19
+ * @description Google API key
20
+ * @summary Sent as the `key` query parameter only when no OAuth token is configured.
21
+ */
22
+ apiKey?: string;
23
+ /**
24
+ * @description Default calendar ID used when a call does not override it
25
+ */
26
+ calendarId?: string;
27
+ }
28
+ /**
29
+ * @description Input for creating a Google Calendar event
30
+ * @summary Carries the optional target `calendarId`, `summary`, optional
31
+ * description and location, start/end values (date or date-time), an optional
32
+ * time zone, and attendee email addresses.
33
+ * @category Calendar
34
+ * @memberOf module:integrations/calendar/google-calendar/service
35
+ */
36
+ export interface GoogleCalendarEventInput {
37
+ /**
38
+ * @description Calendar ID (defaults to the configured value or `primary`)
39
+ */
40
+ calendarId?: string;
41
+ /**
42
+ * @description Event summary/title
43
+ */
44
+ summary: string;
45
+ /**
46
+ * @description Event description
47
+ */
48
+ description?: string;
49
+ /**
50
+ * @description Event location
51
+ */
52
+ location?: string;
53
+ /**
54
+ * @description Start date (`YYYY-MM-DD`) or date-time (ISO 8601)
55
+ */
56
+ start: string;
57
+ /**
58
+ * @description End date (`YYYY-MM-DD`) or date-time (ISO 8601)
59
+ */
60
+ end: string;
61
+ /**
62
+ * @description IANA time zone applied to date-time values
63
+ */
64
+ timeZone?: string;
65
+ /**
66
+ * @description Attendee email addresses
67
+ */
68
+ attendees?: string[];
69
+ }
70
+ /**
71
+ * @description Input for listing Google Calendar events
72
+ * @summary Carries the optional `calendarId` plus the time window, result cap,
73
+ * free-text query, and single-events expansion flag.
74
+ * @category Calendar
75
+ * @memberOf module:integrations/calendar/google-calendar/service
76
+ */
77
+ export interface GoogleCalendarListEventsInput {
78
+ /**
79
+ * @description Calendar ID (defaults to the configured value or `primary`)
80
+ */
81
+ calendarId?: string;
82
+ /**
83
+ * @description Lower bound for event start time (ISO 8601)
84
+ */
85
+ timeMin?: string;
86
+ /**
87
+ * @description Upper bound for event start time (ISO 8601)
88
+ */
89
+ timeMax?: string;
90
+ /**
91
+ * @description Maximum number of events to return
92
+ */
93
+ maxResults?: number;
94
+ /**
95
+ * @description Free-text search across event fields
96
+ */
97
+ q?: string;
98
+ /**
99
+ * @description Whether recurring events are expanded into instances
100
+ */
101
+ singleEvents?: boolean;
102
+ }
103
+ /**
104
+ * @description Input for updating a Google Calendar event
105
+ * @summary Carries the optional `calendarId` and the fields to change; omitted
106
+ * fields are left untouched by the partial update.
107
+ * @category Calendar
108
+ * @memberOf module:integrations/calendar/google-calendar/service
109
+ */
110
+ export interface GoogleCalendarEventUpdate {
111
+ /**
112
+ * @description Calendar ID (defaults to the configured value or `primary`)
113
+ */
114
+ calendarId?: string;
115
+ /**
116
+ * @description New event summary/title
117
+ */
118
+ summary?: string;
119
+ /**
120
+ * @description New event description
121
+ */
122
+ description?: string;
123
+ /**
124
+ * @description New event location
125
+ */
126
+ location?: string;
127
+ /**
128
+ * @description New start date or date-time
129
+ */
130
+ start?: string;
131
+ /**
132
+ * @description New end date or date-time
133
+ */
134
+ end?: string;
135
+ /**
136
+ * @description IANA time zone applied to date-time values
137
+ */
138
+ timeZone?: string;
139
+ /**
140
+ * @description Replacement attendee email addresses
141
+ */
142
+ attendees?: string[];
143
+ }
144
+ /**
145
+ * @description Google Calendar API integration service
146
+ * @summary An undecorated HTTP service for listing calendars and events and
147
+ * for creating, reading, updating, and deleting events. Every operation needs
148
+ * either an OAuth token or an API key; missing credentials or identifiers raise
149
+ * `InternalError`, and transport failures are mapped to decaf errors via
150
+ * {@link httpError}.
151
+ * @class GoogleCalendarService
152
+ * @extends HttpApiService
153
+ * @category Calendar
154
+ * @example
155
+ * ```ts
156
+ * import { GoogleCalendarService } from "@decaf-ts/integrations/calendar/google-calendar";
157
+ *
158
+ * const calendar = new GoogleCalendarService();
159
+ * await calendar.initialize({
160
+ * token: process.env.GRAPH_CREDENTIAL_GOOGLE_CALENDAR_TOKEN,
161
+ * calendarId: "primary",
162
+ * });
163
+ * await calendar.listEvents({ timeMin: new Date().toISOString() });
164
+ * ```
165
+ * @mermaid
166
+ * sequenceDiagram
167
+ * autonumber
168
+ * participant Caller
169
+ * participant Service as GoogleCalendarService
170
+ * participant API as Google Calendar API
171
+ * Caller->>Service: createEvent(input)
172
+ * activate Service
173
+ * Service->>Service: requireAuth()
174
+ * Service->>API: POST /calendars/{id}/events
175
+ * activate API
176
+ * API-->>Service: created event
177
+ * deactivate API
178
+ * Service-->>Caller: created event
179
+ * deactivate Service
180
+ * @memberOf module:integrations/calendar/google-calendar/service
181
+ */
182
+ export declare class GoogleCalendarService extends HttpApiService<GoogleCalendarServiceConfig> {
183
+ /**
184
+ * @description The provider name used in error messages
185
+ */
186
+ protected readonly serviceName = "Google Calendar";
187
+ /**
188
+ * @description The Google Calendar API base URL
189
+ * @summary Used when the resolved config carries no `baseUrl`.
190
+ * @returns {string} `"https://www.googleapis.com/calendar/v3"`.
191
+ */
192
+ protected defaultBaseUrl(): string;
193
+ /**
194
+ * @description Builds the Google Calendar authorization headers
195
+ * @summary Returns `Authorization: Bearer <token>` when an OAuth token is
196
+ * configured, and no headers otherwise (API keys travel as query parameters).
197
+ * @param {GoogleCalendarServiceConfig} config - The resolved service configuration.
198
+ * @returns {Record<string, string>} The authorization headers (empty without a token).
199
+ */
200
+ protected authHeaders(config: GoogleCalendarServiceConfig): Record<string, string>;
201
+ /**
202
+ * @description Reads the Google Calendar credentials and defaults from the environment
203
+ * @summary Reads the `calendar.googleCalendar` slice and returns a partial
204
+ * config when a token or API key is configured, `undefined` otherwise. Values
205
+ * pass through `envString`/`envNumber` to reject unset-leaf proxies.
206
+ * @returns {Partial<GoogleCalendarServiceConfig> | undefined} A partial config, or `undefined` when no credential is configured.
207
+ */
208
+ protected configFromEnvironment(): Partial<GoogleCalendarServiceConfig> | undefined;
209
+ /**
210
+ * @description Asserts that an OAuth token or API key is configured
211
+ * @summary Called by every operation before it touches the network.
212
+ * @returns {void}
213
+ * @throws {InternalError} When neither a token nor an API key is configured.
214
+ */
215
+ protected requireAuth(): void;
216
+ /**
217
+ * @description Builds API-key query parameters when no OAuth token is set
218
+ * @summary Returns `{ key }` for API-key authentication, and an empty object
219
+ * when an OAuth token is used (or no API key is configured).
220
+ * @returns {Record<string, string>} The query parameters carrying the API key, if any.
221
+ */
222
+ private authParams;
223
+ /**
224
+ * @description Builds the encoded events path for a calendar
225
+ * @summary Resolves the calendar ID from the argument, the configured
226
+ * default, or `"primary"`, then encodes it into
227
+ * `/calendars/<id>/events`.
228
+ * @param {string} [calendarId] - Optional per-call calendar ID.
229
+ * @returns {string} The calendar events API path.
230
+ */
231
+ private calendarPath;
232
+ /**
233
+ * @description Builds the Google Calendar start/end object
234
+ * @summary Emits `{ date }` for all-day values and `{ dateTime, timeZone? }`
235
+ * for values containing a `T` separator.
236
+ * @param {string} value - The date or date-time value.
237
+ * @param {string} [timeZone] - Optional IANA time zone for date-time values.
238
+ * @returns {Record<string, string>} The Calendar API time object.
239
+ */
240
+ private eventTime;
241
+ /**
242
+ * @description Lists the calendars visible to the authenticated user
243
+ * @summary `GET`s `/users/me/calendarList` and returns the calendar list.
244
+ * @returns {Promise<unknown>} The calendar list payload.
245
+ * @throws {InternalError} When no credential is configured.
246
+ * @throws {BadRequestError} When Google rejects the request.
247
+ */
248
+ listCalendars(): Promise<unknown>;
249
+ /**
250
+ * @description Lists events in a calendar
251
+ * @summary `GET`s the calendar's events applying the optional time window,
252
+ * result cap, free-text query, and single-events flag.
253
+ * @param {GoogleCalendarListEventsInput} [input] - The calendar and event query options.
254
+ * @returns {Promise<unknown>} The event collection payload.
255
+ * @throws {InternalError} When no credential is configured.
256
+ * @throws {NotFoundError} When the calendar does not exist (HTTP 404).
257
+ * @throws {BadRequestError} When Google rejects the query.
258
+ */
259
+ listEvents(input?: GoogleCalendarListEventsInput): Promise<unknown>;
260
+ /**
261
+ * @description Creates a Google Calendar event
262
+ * @summary `POST`s the event to the resolved calendar; start/end values are
263
+ * normalized to Calendar time objects and attendees are mapped to
264
+ * `{ email }` entries.
265
+ * @param {GoogleCalendarEventInput} input - The event definition.
266
+ * @returns {Promise<unknown>} The created event payload.
267
+ * @throws {InternalError} When no credential is configured, or the summary, start, or end is missing.
268
+ * @throws {NotFoundError} When the calendar does not exist (HTTP 404).
269
+ * @throws {BadRequestError} When Google rejects the event.
270
+ * @example
271
+ * ```ts
272
+ * await calendar.createEvent({
273
+ * summary: "Release review",
274
+ * start: "2026-11-01T09:00:00Z",
275
+ * end: "2026-11-01T10:00:00Z",
276
+ * attendees: ["team@example.com"],
277
+ * });
278
+ * ```
279
+ */
280
+ createEvent(input: GoogleCalendarEventInput): Promise<unknown>;
281
+ /**
282
+ * @description Fetches a single Google Calendar event
283
+ * @summary `GET`s the event from the given calendar.
284
+ * @param {string} calendarId - The calendar ID (empty falls back to the configured value or `primary`).
285
+ * @param {string} eventId - The event ID.
286
+ * @returns {Promise<unknown>} The event payload.
287
+ * @throws {InternalError} When no credential is configured or the event ID is empty.
288
+ * @throws {NotFoundError} When the event does not exist (HTTP 404).
289
+ * @throws {BadRequestError} When Google rejects the request.
290
+ */
291
+ getEvent(calendarId: string, eventId: string): Promise<unknown>;
292
+ /**
293
+ * @description Partially updates a Google Calendar event
294
+ * @summary `PATCH`es only the supplied fields on the event, normalizing
295
+ * start/end and attendee values; omitted fields are left unchanged.
296
+ * @param {string} eventId - The event ID to update.
297
+ * @param {GoogleCalendarEventUpdate} input - The fields to change.
298
+ * @returns {Promise<unknown>} The updated event payload.
299
+ * @throws {InternalError} When no credential is configured or the event ID is empty.
300
+ * @throws {NotFoundError} When the event does not exist (HTTP 404).
301
+ * @throws {BadRequestError} When Google rejects the update.
302
+ */
303
+ updateEvent(eventId: string, input: GoogleCalendarEventUpdate): Promise<unknown>;
304
+ /**
305
+ * @description Deletes a Google Calendar event
306
+ * @summary `DELETE`s the event from the given calendar and returns
307
+ * `{ deleted: true, eventId }`.
308
+ * @param {string} calendarId - The calendar ID (empty falls back to the configured value or `primary`).
309
+ * @param {string} eventId - The event ID to delete.
310
+ * @returns {Promise<unknown>} `{ deleted: true, eventId }` on success.
311
+ * @throws {InternalError} When no credential is configured or the event ID is empty.
312
+ * @throws {NotFoundError} When the event does not exist (HTTP 404).
313
+ * @throws {BadRequestError} When Google rejects the deletion.
314
+ */
315
+ deleteEvent(calendarId: string, eventId: string): Promise<unknown>;
316
+ }
@@ -0,0 +1,2 @@
1
+ export * from "../environment.d.cts";
2
+ export * from "./GoogleCalendarService.d.cts";
@@ -0,0 +1,2 @@
1
+ export * from "../environment.d.mts";
2
+ export * from "./GoogleCalendarService.d.mts";