zele 0.3.0 → 0.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/README.md +1 -1
  2. package/bin/zele +27 -0
  3. package/dist/api-utils.d.ts +51 -2
  4. package/dist/api-utils.js +89 -3
  5. package/dist/api-utils.js.map +1 -1
  6. package/dist/auth.d.ts +27 -6
  7. package/dist/auth.js +185 -129
  8. package/dist/auth.js.map +1 -1
  9. package/dist/calendar-client.d.ts +16 -9
  10. package/dist/calendar-client.js +163 -59
  11. package/dist/calendar-client.js.map +1 -1
  12. package/dist/cli.js +26 -1
  13. package/dist/cli.js.map +1 -1
  14. package/dist/commands/attachment.js +17 -15
  15. package/dist/commands/attachment.js.map +1 -1
  16. package/dist/commands/auth-cmd.js +20 -9
  17. package/dist/commands/auth-cmd.js.map +1 -1
  18. package/dist/commands/calendar.js +67 -78
  19. package/dist/commands/calendar.js.map +1 -1
  20. package/dist/commands/draft.js +25 -18
  21. package/dist/commands/draft.js.map +1 -1
  22. package/dist/commands/label.js +33 -45
  23. package/dist/commands/label.js.map +1 -1
  24. package/dist/commands/mail-actions.js +11 -13
  25. package/dist/commands/mail-actions.js.map +1 -1
  26. package/dist/commands/mail.js +112 -126
  27. package/dist/commands/mail.js.map +1 -1
  28. package/dist/commands/profile.js +18 -21
  29. package/dist/commands/profile.js.map +1 -1
  30. package/dist/commands/watch.js +33 -261
  31. package/dist/commands/watch.js.map +1 -1
  32. package/dist/db.js +12 -13
  33. package/dist/db.js.map +1 -1
  34. package/dist/generated/browser.d.ts +12 -27
  35. package/dist/generated/client.d.ts +13 -28
  36. package/dist/generated/client.js +1 -1
  37. package/dist/generated/commonInputTypes.d.ts +90 -26
  38. package/dist/generated/enums.d.ts +0 -4
  39. package/dist/generated/enums.js +0 -3
  40. package/dist/generated/enums.js.map +1 -1
  41. package/dist/generated/internal/class.d.ts +22 -55
  42. package/dist/generated/internal/class.js +12 -4
  43. package/dist/generated/internal/class.js.map +1 -1
  44. package/dist/generated/internal/prismaNamespace.d.ts +272 -511
  45. package/dist/generated/internal/prismaNamespace.js +54 -66
  46. package/dist/generated/internal/prismaNamespace.js.map +1 -1
  47. package/dist/generated/internal/prismaNamespaceBrowser.d.ts +60 -74
  48. package/dist/generated/internal/prismaNamespaceBrowser.js +50 -62
  49. package/dist/generated/internal/prismaNamespaceBrowser.js.map +1 -1
  50. package/dist/generated/models/Account.d.ts +1637 -0
  51. package/dist/generated/models/Account.js +2 -0
  52. package/dist/generated/models/Account.js.map +1 -0
  53. package/dist/generated/models/CalendarList.d.ts +1161 -0
  54. package/dist/generated/models/CalendarList.js +2 -0
  55. package/dist/generated/models/CalendarList.js.map +1 -0
  56. package/dist/generated/models/Label.d.ts +1161 -0
  57. package/dist/generated/models/Label.js +2 -0
  58. package/dist/generated/models/Label.js.map +1 -0
  59. package/dist/generated/models/Profile.d.ts +1269 -0
  60. package/dist/generated/models/Profile.js +2 -0
  61. package/dist/generated/models/Profile.js.map +1 -0
  62. package/dist/generated/models/SyncState.d.ts +1130 -0
  63. package/dist/generated/models/SyncState.js +2 -0
  64. package/dist/generated/models/SyncState.js.map +1 -0
  65. package/dist/generated/models/Thread.d.ts +1608 -0
  66. package/dist/generated/models/Thread.js +2 -0
  67. package/dist/generated/models/Thread.js.map +1 -0
  68. package/dist/generated/models.d.ts +6 -9
  69. package/dist/gmail-client.d.ts +119 -94
  70. package/dist/gmail-client.js +862 -322
  71. package/dist/gmail-client.js.map +1 -1
  72. package/dist/mail-tui.d.ts +1 -0
  73. package/dist/mail-tui.js +517 -0
  74. package/dist/mail-tui.js.map +1 -0
  75. package/dist/output.d.ts +6 -0
  76. package/dist/output.js +124 -11
  77. package/dist/output.js.map +1 -1
  78. package/package.json +39 -11
  79. package/schema.prisma +81 -113
  80. package/src/api-utils.ts +103 -5
  81. package/src/auth.ts +224 -143
  82. package/src/calendar-client.ts +196 -89
  83. package/src/cli.ts +30 -1
  84. package/src/commands/attachment.ts +18 -19
  85. package/src/commands/auth-cmd.ts +19 -9
  86. package/src/commands/calendar.ts +42 -85
  87. package/src/commands/draft.ts +19 -22
  88. package/src/commands/label.ts +21 -57
  89. package/src/commands/mail-actions.ts +11 -19
  90. package/src/commands/mail.ts +102 -147
  91. package/src/commands/profile.ts +12 -28
  92. package/src/commands/watch.ts +37 -304
  93. package/src/db.ts +13 -16
  94. package/src/generated/browser.ts +49 -0
  95. package/src/generated/client.ts +71 -0
  96. package/src/generated/commonInputTypes.ts +332 -0
  97. package/src/generated/enums.ts +17 -0
  98. package/src/generated/internal/class.ts +250 -0
  99. package/src/generated/internal/prismaNamespace.ts +1198 -0
  100. package/src/generated/internal/prismaNamespaceBrowser.ts +169 -0
  101. package/src/generated/models/Account.ts +1848 -0
  102. package/src/generated/models/CalendarList.ts +1331 -0
  103. package/src/generated/models/Label.ts +1331 -0
  104. package/src/generated/models/Profile.ts +1439 -0
  105. package/src/generated/models/SyncState.ts +1300 -0
  106. package/src/generated/models/Thread.ts +1787 -0
  107. package/src/generated/models.ts +17 -0
  108. package/src/gmail-client.test.ts +59 -0
  109. package/src/gmail-client.ts +1034 -429
  110. package/src/mail-tui.tsx +1061 -0
  111. package/src/output.test.ts +1093 -0
  112. package/src/output.ts +128 -13
  113. package/src/schema.sql +58 -68
  114. package/src/test-fixtures/email-html/safe-claude-event.html +28 -0
  115. package/src/test-fixtures/email-html/safe-product-announcement.html +25 -0
  116. package/src/test-fixtures/email-html/safe-tracked-links.html +27 -0
  117. package/src/test-fixtures/email-html-snapshots/safe-claude-event.html.md +9 -0
  118. package/src/test-fixtures/email-html-snapshots/safe-product-announcement.html.md +13 -0
  119. package/src/test-fixtures/email-html-snapshots/safe-tracked-links.html.md +7 -0
  120. package/AGENTS.md +0 -26
  121. package/CHANGELOG.md +0 -43
  122. package/dist/generated/models/accounts.d.ts +0 -2000
  123. package/dist/generated/models/accounts.js +0 -2
  124. package/dist/generated/models/accounts.js.map +0 -1
  125. package/dist/generated/models/calendar_events.d.ts +0 -1433
  126. package/dist/generated/models/calendar_events.js +0 -2
  127. package/dist/generated/models/calendar_events.js.map +0 -1
  128. package/dist/generated/models/calendar_lists.d.ts +0 -1131
  129. package/dist/generated/models/calendar_lists.js +0 -2
  130. package/dist/generated/models/calendar_lists.js.map +0 -1
  131. package/dist/generated/models/label_counts.d.ts +0 -1131
  132. package/dist/generated/models/label_counts.js +0 -2
  133. package/dist/generated/models/label_counts.js.map +0 -1
  134. package/dist/generated/models/labels.d.ts +0 -1131
  135. package/dist/generated/models/labels.js +0 -2
  136. package/dist/generated/models/labels.js.map +0 -1
  137. package/dist/generated/models/profiles.d.ts +0 -1131
  138. package/dist/generated/models/profiles.js +0 -2
  139. package/dist/generated/models/profiles.js.map +0 -1
  140. package/dist/generated/models/sync_states.d.ts +0 -1107
  141. package/dist/generated/models/sync_states.js +0 -2
  142. package/dist/generated/models/sync_states.js.map +0 -1
  143. package/dist/generated/models/thread_lists.d.ts +0 -1404
  144. package/dist/generated/models/thread_lists.js +0 -2
  145. package/dist/generated/models/thread_lists.js.map +0 -1
  146. package/dist/generated/models/threads.d.ts +0 -1247
  147. package/dist/generated/models/threads.js +0 -2
  148. package/dist/generated/models/threads.js.map +0 -1
  149. package/dist/gmail-cache.d.ts +0 -60
  150. package/dist/gmail-cache.js +0 -264
  151. package/dist/gmail-cache.js.map +0 -1
  152. package/docs/gogcli-gmail-implementation.md +0 -599
  153. package/scripts/test-device-code-clients.ts +0 -186
  154. package/scripts/test-micropython-scopes.ts +0 -72
  155. package/scripts/test-oauth-clients.ts +0 -257
  156. package/src/gmail-cache.ts +0 -339
  157. package/tsconfig.json +0 -16
@@ -2,9 +2,27 @@
2
2
  // Uses tsdav for CalDAV protocol and ts-ics for typed iCalendar parse/generate.
3
3
  // Auth: passes a Bearer token via headers (reuses existing google-auth-library OAuth2).
4
4
  // Google CalDAV endpoint: https://apidata.googleusercontent.com/caldav/v2/
5
+ // Cache is built into the client for stable metadata lookups (calendar list/timezone).
6
+ // Event listing is always fresh so CLI output reflects newly created/updated events.
7
+ // Raw tsdav responses are stored in the cache so the cache is resilient to changes
8
+ // in our own parsed types. Parsing happens at read time.
5
9
  import { fetchCalendars, fetchCalendarObjects, createCalendarObject, updateCalendarObject, deleteCalendarObject, } from 'tsdav';
6
10
  import { convertIcsCalendar, generateIcsCalendar, } from 'ts-ics';
7
11
  import crypto from 'node:crypto';
12
+ import * as errore from 'errore';
13
+ import { getPrisma } from './db.js';
14
+ import { AuthError, isAuthLikeError, ApiError, NotFoundError, ParseError, MissingDataError } from './api-utils.js';
15
+ /** Boundary helper: wrap a tsdav/CalDAV call, converting auth-like errors to AuthError values.
16
+ * Non-auth errors are wrapped in ApiError so they remain error values (no throwing).
17
+ * Original error is preserved as `cause` for debugging. */
18
+ function caldavBoundary(email, fn) {
19
+ return errore.tryAsync({
20
+ try: fn,
21
+ catch: (err) => isAuthLikeError(err)
22
+ ? new AuthError({ email, reason: String(err) })
23
+ : new ApiError({ reason: String(err), cause: err }),
24
+ });
25
+ }
8
26
  // ---------------------------------------------------------------------------
9
27
  // ts-ics conversion helpers
10
28
  // ---------------------------------------------------------------------------
@@ -122,16 +140,14 @@ function icsEventToCalendarEvent(event, calObj) {
122
140
  uid: event.uid,
123
141
  };
124
142
  }
125
- /** Parse all events from a raw iCal data string using ts-ics */
143
+ /** Parse all events from a raw iCal data string using ts-ics.
144
+ * Boundary: convertIcsCalendar (ts-ics library) may throw on malformed iCal.
145
+ * Returns ParseError on failure so callers can decide how to handle it. */
126
146
  function parseICalData(data, calObj) {
127
- try {
128
- const calendar = convertIcsCalendar(undefined, data);
129
- return (calendar.events ?? []).map((ev) => icsEventToCalendarEvent(ev, calObj));
130
- }
131
- catch (err) {
132
- console.error('[calendar] failed to parse iCal data:', err instanceof Error ? err.stack ?? err.message : err);
133
- return [];
134
- }
147
+ const calendar = errore.tryFn(() => convertIcsCalendar(undefined, data));
148
+ if (calendar instanceof Error)
149
+ return new ParseError({ what: 'iCal data', reason: calendar.message });
150
+ return (calendar.events ?? []).map((ev) => icsEventToCalendarEvent(ev, calObj));
135
151
  }
136
152
  /** Build an iCal string from event properties using ts-ics */
137
153
  function buildICalString(props) {
@@ -201,26 +217,59 @@ function extractTimezone(tz) {
201
217
  // CalendarClient
202
218
  // ---------------------------------------------------------------------------
203
219
  const GOOGLE_CALDAV_URL = 'https://apidata.googleusercontent.com/caldav/v2/';
220
+ const TTL = {
221
+ CALENDAR_LIST: 30 * 60 * 1000, // 30 minutes
222
+ };
223
+ function isExpired(createdAt, ttlMs) {
224
+ return createdAt.getTime() + ttlMs < Date.now();
225
+ }
204
226
  export class CalendarClient {
205
227
  headers;
206
228
  email;
229
+ appId;
207
230
  calendarCache = null;
208
231
  timezoneCache = {};
209
- constructor({ accessToken, email }) {
232
+ constructor({ accessToken, email, appId }) {
210
233
  this.headers = { Authorization: `Bearer ${accessToken}` };
211
234
  this.email = email;
235
+ this.appId = appId;
212
236
  }
213
237
  /** Update the access token (e.g. after refresh) */
214
238
  updateAccessToken(token) {
215
239
  this.headers = { Authorization: `Bearer ${token}` };
216
240
  }
217
241
  // =========================================================================
242
+ // Cache helpers (private)
243
+ // =========================================================================
244
+ get account() {
245
+ return { email: this.email, appId: this.appId };
246
+ }
247
+ async getCachedCalendarList() {
248
+ const prisma = await getPrisma();
249
+ const row = await prisma.calendarList.findUnique({ where: { email_appId: this.account } });
250
+ if (!row || isExpired(row.createdAt, row.ttlMs))
251
+ return undefined;
252
+ return JSON.parse(row.rawData);
253
+ }
254
+ async cacheCalendarListData(data) {
255
+ const prisma = await getPrisma();
256
+ await prisma.calendarList.upsert({
257
+ where: { email_appId: this.account },
258
+ create: { ...this.account, rawData: JSON.stringify(data), ttlMs: TTL.CALENDAR_LIST, createdAt: new Date() },
259
+ update: { rawData: JSON.stringify(data), ttlMs: TTL.CALENDAR_LIST, createdAt: new Date() },
260
+ });
261
+ }
262
+ async invalidateCalendarLists() {
263
+ const prisma = await getPrisma();
264
+ await prisma.calendarList.deleteMany({ where: this.account });
265
+ }
266
+ // =========================================================================
218
267
  // Internal: fetch DAVCalendar list (cached per instance)
219
268
  // =========================================================================
220
269
  async fetchDAVCalendars() {
221
270
  if (this.calendarCache)
222
271
  return this.calendarCache;
223
- const calendars = await fetchCalendars({
272
+ const calendars = await caldavBoundary(this.email, () => fetchCalendars({
224
273
  account: {
225
274
  serverUrl: GOOGLE_CALDAV_URL,
226
275
  rootUrl: GOOGLE_CALDAV_URL,
@@ -228,13 +277,17 @@ export class CalendarClient {
228
277
  homeUrl: `${GOOGLE_CALDAV_URL}${this.email}/`,
229
278
  },
230
279
  headers: this.headers,
231
- });
280
+ }));
281
+ if (calendars instanceof Error)
282
+ return calendars;
232
283
  this.calendarCache = calendars;
233
284
  return calendars;
234
285
  }
235
286
  /** Resolve a calendarId to a DAVCalendar. 'primary' maps to the user's email. */
236
287
  async resolveCalendar(calendarId) {
237
288
  const calendars = await this.fetchDAVCalendars();
289
+ if (calendars instanceof Error)
290
+ return calendars;
238
291
  // 'primary' = the user's own calendar (URL contains their email)
239
292
  const targetId = calendarId === 'primary' ? this.email : calendarId;
240
293
  const match = calendars.find((c) => {
@@ -243,7 +296,7 @@ export class CalendarClient {
243
296
  urlLower.includes(`/${targetId.toLowerCase()}/`);
244
297
  });
245
298
  if (!match) {
246
- throw new Error(`Calendar not found: ${calendarId}. Available: ${calendars.map((c) => c.displayName || c.url).join(', ')}`);
299
+ return new NotFoundError({ resource: `calendar "${calendarId}". Available: ${calendars.map((c) => c.displayName || c.url).join(', ')}` });
247
300
  }
248
301
  return match;
249
302
  }
@@ -251,8 +304,14 @@ export class CalendarClient {
251
304
  // Calendar list
252
305
  // =========================================================================
253
306
  async listCalendars() {
307
+ // Check cache
308
+ const cached = await this.getCachedCalendarList();
309
+ if (cached)
310
+ return cached;
254
311
  const calendars = await this.fetchDAVCalendars();
255
- return calendars.map((cal) => {
312
+ if (calendars instanceof Error)
313
+ return calendars;
314
+ const result = calendars.map((cal) => {
256
315
  // Extract calendar ID from URL
257
316
  // URL looks like: https://apidata.googleusercontent.com/caldav/v2/user%40gmail.com/events/
258
317
  const urlParts = cal.url.replace(/\/$/, '').split('/');
@@ -271,6 +330,9 @@ export class CalendarClient {
271
330
  backgroundColor: cal.calendarColor ?? '',
272
331
  };
273
332
  });
333
+ // Write cache
334
+ await this.cacheCalendarListData(result);
335
+ return result;
274
336
  }
275
337
  // =========================================================================
276
338
  // Timezone
@@ -278,28 +340,36 @@ export class CalendarClient {
278
340
  async getTimezone(calendarId = 'primary') {
279
341
  if (this.timezoneCache[calendarId])
280
342
  return this.timezoneCache[calendarId];
281
- try {
282
- const cal = await this.resolveCalendar(calendarId);
283
- const tz = extractTimezone(cal.timezone);
284
- this.timezoneCache[calendarId] = tz;
285
- return tz;
286
- }
287
- catch (err) {
288
- console.error('[calendar] failed to resolve timezone for', calendarId, '-', err instanceof Error ? err.stack ?? err.message : err);
343
+ const cal = await this.resolveCalendar(calendarId);
344
+ if (cal instanceof Error)
345
+ return cal;
346
+ // extractTimezone is a pure function (regex on string) — no try/catch needed.
347
+ // Fallback to calendar list metadata if the DAVCalendar has no timezone data.
348
+ let tz = extractTimezone(cal.timezone);
349
+ if (tz === 'UTC' && cal.timezone) {
350
+ // extractTimezone returned UTC as default check calendar list for a better match
289
351
  const calendars = await this.listCalendars();
352
+ if (calendars instanceof Error)
353
+ return calendars;
290
354
  const target = calendarId === 'primary' ? this.email : calendarId;
291
355
  const match = calendars.find((c) => c.id.toLowerCase() === target.toLowerCase());
292
- const tz = match?.timezone || 'UTC';
293
- this.timezoneCache[calendarId] = tz;
294
- return tz;
356
+ if (match?.timezone && match.timezone !== 'UTC')
357
+ tz = match.timezone;
295
358
  }
359
+ this.timezoneCache[calendarId] = tz;
360
+ return tz;
296
361
  }
297
362
  // =========================================================================
298
363
  // Events
299
364
  // =========================================================================
300
365
  async listEvents({ calendarId = 'primary', timeMin, timeMax, query, maxResults = 20, pageToken, } = {}) {
366
+ // Always fresh: event lists are user-facing live data.
301
367
  const cal = await this.resolveCalendar(calendarId);
368
+ if (cal instanceof Error)
369
+ return cal;
302
370
  const tz = await this.getTimezone(calendarId);
371
+ if (tz instanceof Error)
372
+ return tz;
303
373
  const fetchOpts = {
304
374
  calendar: cal,
305
375
  headers: this.headers,
@@ -308,12 +378,17 @@ export class CalendarClient {
308
378
  if (timeMin && timeMax) {
309
379
  fetchOpts.timeRange = { start: timeMin, end: timeMax };
310
380
  }
311
- const calObjects = await fetchCalendarObjects(fetchOpts);
381
+ const calObjects = await caldavBoundary(this.email, () => fetchCalendarObjects(fetchOpts));
382
+ if (calObjects instanceof Error)
383
+ return calObjects;
312
384
  let events = [];
313
385
  for (const obj of calObjects) {
314
386
  if (!obj.data)
315
387
  continue;
316
- events.push(...parseICalData(obj.data, obj));
388
+ const parsed = parseICalData(obj.data, obj);
389
+ if (parsed instanceof ParseError)
390
+ continue; // skip unparseable calendar objects
391
+ events.push(...parsed);
317
392
  }
318
393
  if (query) {
319
394
  const q = query.toLowerCase();
@@ -322,31 +397,40 @@ export class CalendarClient {
322
397
  e.location.toLowerCase().includes(q));
323
398
  }
324
399
  events.sort((a, b) => new Date(a.start).getTime() - new Date(b.start).getTime());
325
- return {
400
+ const result = {
326
401
  events: events.slice(0, maxResults),
327
402
  nextPageToken: null,
328
403
  timezone: tz,
329
404
  };
405
+ return result;
330
406
  }
331
407
  async getEvent({ calendarId = 'primary', eventId, }) {
332
408
  const cal = await this.resolveCalendar(calendarId);
333
- const calObjects = await fetchCalendarObjects({
409
+ if (cal instanceof Error)
410
+ return cal;
411
+ const calObjects = await caldavBoundary(this.email, () => fetchCalendarObjects({
334
412
  calendar: cal,
335
413
  headers: this.headers,
336
414
  urlFilter: () => true,
337
- });
415
+ }));
416
+ if (calObjects instanceof Error)
417
+ return calObjects;
338
418
  for (const obj of calObjects) {
339
419
  if (!obj.data)
340
420
  continue;
341
421
  const events = parseICalData(obj.data, obj);
422
+ if (events instanceof ParseError)
423
+ continue; // skip unparseable calendar objects
342
424
  const match = events.find((e) => e.id === eventId || e.uid === eventId);
343
425
  if (match)
344
426
  return match;
345
427
  }
346
- throw new Error(`Event not found: ${eventId}`);
428
+ return new NotFoundError({ resource: `event "${eventId}"` });
347
429
  }
348
430
  async createEvent({ calendarId = 'primary', summary, start, end, allDay = false, description, location, attendees, withMeet = false, recurrence, reminders, colorId, visibility, transparency, }) {
349
431
  const cal = await this.resolveCalendar(calendarId);
432
+ if (cal instanceof Error)
433
+ return cal;
350
434
  const uid = generateUID();
351
435
  const iCalString = buildICalString({
352
436
  uid,
@@ -362,23 +446,29 @@ export class CalendarClient {
362
446
  organizer: { email: this.email },
363
447
  });
364
448
  const filename = `${uid.split('@')[0]}.ics`;
365
- await createCalendarObject({
449
+ const createResult = await caldavBoundary(this.email, () => createCalendarObject({
366
450
  calendar: cal,
367
451
  filename,
368
452
  iCalString,
369
453
  headers: this.headers,
370
- });
454
+ }));
455
+ if (createResult instanceof Error)
456
+ return createResult;
371
457
  const events = parseICalData(iCalString);
458
+ if (events instanceof ParseError)
459
+ return events;
372
460
  const event = events[0];
373
461
  if (!event)
374
- throw new Error('Failed to parse created event');
462
+ return new ParseError({ what: 'created event', reason: 'iCal round-trip produced no events' });
375
463
  event.url = `${cal.url}${filename}`;
376
464
  return event;
377
465
  }
378
466
  async updateEvent({ calendarId = 'primary', eventId, summary, start, end, allDay, description, location, addAttendees, removeAttendees, withMeet, colorId, visibility, transparency, }) {
379
467
  const existing = await this.getEvent({ calendarId, eventId });
468
+ if (existing instanceof Error)
469
+ return existing;
380
470
  if (!existing.url || !existing.etag) {
381
- throw new Error(`Cannot update event: missing CalDAV URL or etag for event ${eventId}`);
471
+ return new MissingDataError({ what: 'CalDAV URL or etag', resource: `event ${eventId}` });
382
472
  }
383
473
  // Handle attendee add/remove
384
474
  let mergedAttendees = existing.attendees.map((a) => ({
@@ -412,32 +502,42 @@ export class CalendarClient {
412
502
  sequence: 1,
413
503
  organizer: { email: this.email },
414
504
  });
415
- await updateCalendarObject({
505
+ const updateResult = await caldavBoundary(this.email, () => updateCalendarObject({
416
506
  calendarObject: { url: existing.url, data: iCalString, etag: existing.etag },
417
507
  headers: this.headers,
418
- });
508
+ }));
509
+ if (updateResult instanceof Error)
510
+ return updateResult;
419
511
  const events = parseICalData(iCalString);
512
+ if (events instanceof ParseError)
513
+ return events;
420
514
  const event = events[0];
421
515
  if (!event)
422
- throw new Error('Failed to parse updated event');
516
+ return new ParseError({ what: 'updated event', reason: 'iCal round-trip produced no events' });
423
517
  event.url = existing.url;
424
518
  event.etag = existing.etag;
425
519
  return event;
426
520
  }
427
521
  async deleteEvent({ calendarId = 'primary', eventId, }) {
428
522
  const existing = await this.getEvent({ calendarId, eventId });
523
+ if (existing instanceof Error)
524
+ return existing;
429
525
  if (!existing.url) {
430
- throw new Error(`Cannot delete event: missing CalDAV URL for event ${eventId}`);
526
+ return new MissingDataError({ what: 'CalDAV URL', resource: `event ${eventId}` });
431
527
  }
432
- await deleteCalendarObject({
528
+ const deleteResult = await caldavBoundary(this.email, () => deleteCalendarObject({
433
529
  calendarObject: { url: existing.url, etag: existing.etag },
434
530
  headers: this.headers,
435
- });
531
+ }));
532
+ if (deleteResult instanceof Error)
533
+ return deleteResult;
436
534
  }
437
535
  async respondToEvent({ calendarId = 'primary', eventId, status, comment, }) {
438
536
  const existing = await this.getEvent({ calendarId, eventId });
537
+ if (existing instanceof Error)
538
+ return existing;
439
539
  if (!existing.url || !existing.etag) {
440
- throw new Error(`Cannot respond to event: missing CalDAV URL or etag for event ${eventId}`);
540
+ return new MissingDataError({ what: 'CalDAV URL or etag', resource: `event ${eventId}` });
441
541
  }
442
542
  // Update our PARTSTAT in attendees
443
543
  const attendees = existing.attendees.map((a) => ({
@@ -461,36 +561,40 @@ export class CalendarClient {
461
561
  ? { email: organizer.email, name: organizer.name ?? undefined }
462
562
  : { email: this.email },
463
563
  });
464
- await updateCalendarObject({
564
+ const respondResult = await caldavBoundary(this.email, () => updateCalendarObject({
465
565
  calendarObject: { url: existing.url, data: iCalString, etag: existing.etag },
466
566
  headers: this.headers,
467
- });
567
+ }));
568
+ if (respondResult instanceof Error)
569
+ return respondResult;
468
570
  const events = parseICalData(iCalString);
571
+ if (events instanceof ParseError)
572
+ return events;
469
573
  const event = events[0];
470
574
  if (!event)
471
- throw new Error('Failed to parse response event');
575
+ return new ParseError({ what: 'response event', reason: 'iCal round-trip produced no events' });
472
576
  event.url = existing.url;
473
577
  return event;
474
578
  }
475
579
  async getFreeBusy({ calendarIds, timeMin, timeMax, }) {
476
580
  const results = [];
477
581
  for (const calId of calendarIds) {
478
- try {
479
- const { events } = await this.listEvents({
480
- calendarId: calId,
481
- timeMin,
482
- timeMax,
483
- maxResults: 200,
484
- });
485
- const busy = events
486
- .filter((e) => e.transparency !== 'transparent' && !e.allDay)
487
- .map((e) => ({ start: e.start, end: e.end }));
488
- results.push({ calendar: calId, busy });
489
- }
490
- catch (err) {
491
- console.error('[calendar] freebusy failed for', calId, '-', err instanceof Error ? err.stack ?? err.message : err);
582
+ // listEvents returns errors as values — no try/catch needed.
583
+ // Errors (auth, not found) yield an empty busy list for that calendar.
584
+ const eventsResult = await this.listEvents({
585
+ calendarId: calId,
586
+ timeMin,
587
+ timeMax,
588
+ maxResults: 200,
589
+ });
590
+ if (eventsResult instanceof Error) {
492
591
  results.push({ calendar: calId, busy: [] });
592
+ continue;
493
593
  }
594
+ const busy = eventsResult.events
595
+ .filter((e) => e.transparency !== 'transparent' && !e.allDay)
596
+ .map((e) => ({ start: e.start, end: e.end }));
597
+ results.push({ calendar: calId, busy });
494
598
  }
495
599
  return results;
496
600
  }
@@ -1 +1 @@
1
- {"version":3,"file":"calendar-client.js","sourceRoot":"","sources":["../src/calendar-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"calendar-client.js","sourceRoot":"","sources":["../src/calendar-client.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,gFAAgF;AAChF,wFAAwF;AACxF,2EAA2E;AAC3E,uFAAuF;AACvF,qFAAqF;AACrF,mFAAmF;AACnF,yDAAyD;AAEzD,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,GAGrB,MAAM,OAAO,CAAA;AACd,OAAO,EACL,kBAAkB,EAClB,mBAAmB,GAKpB,MAAM,QAAQ,CAAA;AACf,OAAO,MAAM,MAAM,aAAa,CAAA;AAChC,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAA;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAElH;;4DAE4D;AAC5D,SAAS,cAAc,CAAI,KAAa,EAAE,EAAoB;IAC5D,OAAO,MAAM,CAAC,QAAQ,CAAC;QACrB,GAAG,EAAE,EAAE;QACP,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC;YAClC,CAAC,CAAC,IAAI,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,CAAC,CAAC,IAAI,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;KACtD,CAAC,CAAA;AACJ,CAAC;AAsED,8EAA8E;AAC9E,4BAA4B;AAC5B,8EAA8E;AAE9E,8EAA8E;AAC9E,SAAS,eAAe,CAAC,CAAgB;IACvC,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACtB,6BAA6B;QAC7B,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAA;IAC5C,CAAC;IACD,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAA;AAC7B,CAAC;AAED,kDAAkD;AAClD,SAAS,WAAW,CAAC,QAAiB;IACpC,IAAI,CAAC,QAAQ;QAAE,OAAO,aAAa,CAAA;IACnC,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,UAAU,CAAC,CAAC,OAAO,UAAU,CAAA;QAClC,KAAK,UAAU,CAAC,CAAC,OAAO,UAAU,CAAA;QAClC,KAAK,WAAW,CAAC,CAAC,OAAO,WAAW,CAAA;QACpC,KAAK,cAAc,CAAC,CAAC,OAAO,aAAa,CAAA;QACzC,OAAO,CAAC,CAAC,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAA;IACxC,CAAC;AACH,CAAC;AAED,mEAAmE;AACnE,SAAS,SAAS,CAAC,OAAe,EAAE,MAAM,GAAG,KAAK;IAChD,IAAI,MAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAClD,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;IACjE,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;AACvD,CAAC;AAED,6CAA6C;AAC7C,SAAS,WAAW;IAClB,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,OAAO,CAAA;AACtC,CAAC;AAED,0DAA0D;AAC1D,SAAS,uBAAuB,CAAC,KAAe,EAAE,MAA0B;IAC1E,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAA;IAE1C,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC7C,gDAAgD;IAChD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG;QACvB,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC;QAC5B,CAAC,CAAC,QAAQ,CAAA,CAAC,qBAAqB;IAElC,YAAY;IACZ,MAAM,SAAS,GAAuB,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACxE,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI;QACpB,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC/B,IAAI,EAAE,KAAK;QACX,SAAS,EAAE,KAAK;KACjB,CAAC,CAAC,CAAA;IAEH,8BAA8B;IAC9B,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,SAAU,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACnE,CAAC,CAAC,SAAS,GAAG,IAAI,CAAA;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IAED,qCAAqC;IACrC,IAAI,QAAQ,GAAkB,IAAI,CAAA;IAClC,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,IAAI,EAAE,CAAA;IACpC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAA;IACnE,IAAI,SAAS;QAAE,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;IAEtC,6DAA6D;IAC7D,MAAM,UAAU,GAAa,EAAE,CAAA;IAC/B,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;QACzB,iFAAiF;QACjF,MAAM,CAAC,GAAG,KAAK,CAAC,cAAc,CAAA;QAC9B,MAAM,KAAK,GAAa,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,CAAC,CAAA;QAC/C,IAAI,CAAC,CAAC,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;QACpD,IAAI,CAAC,CAAC,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;QAC3C,IAAI,CAAC,CAAC,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;QACjF,IAAI,CAAC,CAAC,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAC9F,IAAI,CAAC,CAAC,OAAO;YAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAC3D,IAAI,CAAC,CAAC,UAAU;YAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACpE,UAAU,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAC7C,CAAC;IAED,wBAAwB;IACxB,MAAM,SAAS,GAAuB,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACvE,IAAI,OAAO,GAAG,CAAC,CAAA;QACf,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACtC,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAA;YAC7B,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAA;QAClG,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,OAAO,EAAE,OAAO,EAAE,CAAA;IACrD,CAAC,CAAC,CAAA;IAEF,OAAO;QACL,EAAE,EAAE,KAAK,CAAC,GAAG;QACb,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,YAAY;QACtC,KAAK,EAAE,QAAQ;QACf,GAAG,EAAE,OAAO;QACZ,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;QACxC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;QACrC,MAAM;QACN,WAAW,EAAE,IAAI;QACjB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;QAC9B,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,WAAW,CAAC,CAAC,WAAW,EAAE;QACnD,QAAQ,EAAE,EAAE;QACZ,QAAQ;QACR,SAAS;QACT,UAAU;QACV,SAAS;QACT,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QAC7D,YAAY,EAAE,KAAK,CAAC,eAAe,KAAK,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ;QAChF,GAAG,EAAE,MAAM,EAAE,GAAG;QAChB,IAAI,EAAE,MAAM,EAAE,IAAI;QAClB,GAAG,EAAE,KAAK,CAAC,GAAG;KACf,CAAA;AACH,CAAC;AAED;;4EAE4E;AAC5E,SAAS,aAAa,CAAC,IAAY,EAAE,MAA0B;IAC7D,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAA;IACxE,IAAI,QAAQ,YAAY,KAAK;QAAE,OAAO,IAAI,UAAU,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;IACrG,OAAO,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,uBAAuB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAA;AACjF,CAAC;AAED,8DAA8D;AAC9D,SAAS,eAAe,CAAC,KAexB;IACC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,WAAW,EAAE,CAAA;IACtC,MAAM,GAAG,GAAkB,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;IAElE,MAAM,KAAK,GAAa;QACtB,GAAG;QACH,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;QAC3C,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC;KACxC,CAAA;IAED,IAAI,KAAK,CAAC,WAAW;QAAE,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAA;IAC5D,IAAI,KAAK,CAAC,QAAQ;QAAE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAA;IACnD,IAAI,KAAK,CAAC,MAAM;QAAE,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,EAAS,CAAA;IAClE,IAAI,KAAK,CAAC,YAAY;QAAE,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC,YAAY,CAAC,WAAW,EAAS,CAAA;IACvF,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS;QAAE,KAAK,CAAC,KAAK,GAAG,SAAS,CAAA;IAC3D,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS;QAAE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAA;IAEjE,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB,KAAK,CAAC,SAAS,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAA;IAChF,CAAC;IAED,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC;YACzD,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,QAAQ,EAAG,CAAC,CAAC,QAAgB,IAAI,cAAc;YAC/C,IAAI,EAAE,IAAI;SACX,CAAC,CAAC,CAAA;IACL,CAAC;IAED,MAAM,QAAQ,GAAgB;QAC5B,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,uBAAuB;QAC/B,MAAM,EAAE,CAAC,KAAK,CAAC;KAChB,CAAA;IAED,OAAO,mBAAmB,CAAC,QAAQ,CAAC,CAAA;AACtC,CAAC;AAED,8EAA8E;AAC9E,6BAA6B;AAC7B,8EAA8E;AAE9E;;;yCAGyC;AACzC,SAAS,eAAe,CAAC,EAAW;IAClC,IAAI,CAAC,EAAE;QAAE,OAAO,KAAK,CAAA;IACrB,+EAA+E;IAC/E,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAA;IAC3D,mCAAmC;IACnC,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;IACpC,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAA;IAClC,oBAAoB;IACpB,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAA;IAC/C,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAA;IACtC,OAAO,KAAK,CAAA;AACd,CAAC;AAED,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,MAAM,iBAAiB,GAAG,kDAAkD,CAAA;AAE5E,MAAM,GAAG,GAAG;IACV,aAAa,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,aAAa;CACpC,CAAA;AAEV,SAAS,SAAS,CAAC,SAAe,EAAE,KAAa;IAC/C,OAAO,SAAS,CAAC,OAAO,EAAE,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;AACjD,CAAC;AAED,MAAM,OAAO,cAAc;IACjB,OAAO,CAAwB;IAC/B,KAAK,CAAQ;IACb,KAAK,CAAQ;IACb,aAAa,GAAyB,IAAI,CAAA;IAC1C,aAAa,GAA2B,EAAE,CAAA;IAElD,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAyD;QAC9F,IAAI,CAAC,OAAO,GAAG,EAAE,aAAa,EAAE,UAAU,WAAW,EAAE,EAAE,CAAA;QACzD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAED,mDAAmD;IACnD,iBAAiB,CAAC,KAAa;QAC7B,IAAI,CAAC,OAAO,GAAG,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE,CAAA;IACrD,CAAC;IAED,4EAA4E;IAC5E,0BAA0B;IAC1B,4EAA4E;IAE5E,IAAY,OAAO;QACjB,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAA;IACjD,CAAC;IAEO,KAAK,CAAC,qBAAqB;QACjC,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAA;QAChC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;QAC1F,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC;YAAE,OAAO,SAAS,CAAA;QACjE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAuB,CAAA;IACtD,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAAC,IAAwB;QAC1D,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAA;QAChC,MAAM,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;YAC/B,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE;YACpC,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,aAAa,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE;YAC3G,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,aAAa,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE;SAC3F,CAAC,CAAA;IACJ,CAAC;IAEO,KAAK,CAAC,uBAAuB;QACnC,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAA;QAChC,MAAM,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;IAC/D,CAAC;IAED,4EAA4E;IAC5E,yDAAyD;IACzD,4EAA4E;IAEpE,KAAK,CAAC,iBAAiB;QAC7B,IAAI,IAAI,CAAC,aAAa;YAAE,OAAO,IAAI,CAAC,aAAa,CAAA;QAEjD,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,CACtD,cAAc,CAAC;YACb,OAAO,EAAE;gBACP,SAAS,EAAE,iBAAiB;gBAC5B,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,QAAQ;gBACrB,OAAO,EAAE,GAAG,iBAAiB,GAAG,IAAI,CAAC,KAAK,GAAG;aAC9C;YACD,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CACH,CAAA;QACD,IAAI,SAAS,YAAY,KAAK;YAAE,OAAO,SAAS,CAAA;QAEhD,IAAI,CAAC,aAAa,GAAG,SAAS,CAAA;QAC9B,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,iFAAiF;IACzE,KAAK,CAAC,eAAe,CAAC,UAAkB;QAC9C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAA;QAChD,IAAI,SAAS,YAAY,KAAK;YAAE,OAAO,SAAS,CAAA;QAEhD,iEAAiE;QACjE,MAAM,QAAQ,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAA;QAEnE,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YACjC,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAA;YACpC,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,kBAAkB,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC;gBACzE,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,CAAA;QACpD,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,IAAI,aAAa,CAAC,EAAE,QAAQ,EAAE,aAAa,UAAU,iBAAiB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;QAC3I,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAED,4EAA4E;IAC5E,gBAAgB;IAChB,4EAA4E;IAE5E,KAAK,CAAC,aAAa;QACjB,cAAc;QACd,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAA;QACjD,IAAI,MAAM;YAAE,OAAO,MAAM,CAAA;QAEzB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAA;QAChD,IAAI,SAAS,YAAY,KAAK;YAAE,OAAO,SAAS,CAAA;QAEhD,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACnC,+BAA+B;YAC/B,2FAA2F;YAC3F,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACtD,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;YAC5C,MAAM,SAAS,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAE,CAAA;YAC3F,MAAM,EAAE,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAA;YAExC,MAAM,SAAS,GAAG,EAAE,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAA;YAE/D,OAAO;gBACL,EAAE;gBACF,OAAO,EAAE,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ;oBAC1C,CAAC,CAAC,GAAG,CAAC,WAAW;oBACjB,CAAC,CAAE,GAAG,CAAC,WAAmB,EAAE,KAAK,IAAI,EAAE;gBACzC,OAAO,EAAE,SAAS;gBAClB,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC;gBACvC,eAAe,EAAE,GAAG,CAAC,aAAa,IAAI,EAAE;aACzC,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,cAAc;QACd,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAA;QAExC,OAAO,MAAM,CAAA;IACf,CAAC;IAED,4EAA4E;IAC5E,WAAW;IACX,4EAA4E;IAE5E,KAAK,CAAC,WAAW,CAAC,UAAU,GAAG,SAAS;QACtC,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;YAAE,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAE,CAAA;QAE1E,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAA;QAClD,IAAI,GAAG,YAAY,KAAK;YAAE,OAAO,GAAG,CAAA;QAEpC,8EAA8E;QAC9E,8EAA8E;QAC9E,IAAI,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACtC,IAAI,EAAE,KAAK,KAAK,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjC,mFAAmF;YACnF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAA;YAC5C,IAAI,SAAS,YAAY,KAAK;gBAAE,OAAO,SAAS,CAAA;YAChD,MAAM,MAAM,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAA;YACjE,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC,CAAA;YAChF,IAAI,KAAK,EAAE,QAAQ,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK;gBAAE,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAA;QACtE,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,EAAE,CAAA;QACnC,OAAO,EAAE,CAAA;IACX,CAAC;IAED,4EAA4E;IAC5E,SAAS;IACT,4EAA4E;IAE5E,KAAK,CAAC,UAAU,CAAC,EACf,UAAU,GAAG,SAAS,EACtB,OAAO,EACP,OAAO,EACP,KAAK,EACL,UAAU,GAAG,EAAE,EACf,SAAS,MAQP,EAAE;QACJ,uDAAuD;QAEvD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAA;QAClD,IAAI,GAAG,YAAY,KAAK;YAAE,OAAO,GAAG,CAAA;QACpC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;QAC7C,IAAI,EAAE,YAAY,KAAK;YAAE,OAAO,EAAE,CAAA;QAElC,MAAM,SAAS,GAA+C;YAC5D,QAAQ,EAAE,GAAG;YACb,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI;SACtB,CAAA;QAED,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC;YACvB,SAAS,CAAC,SAAS,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,CAAA;QACxD,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAA;QAC1F,IAAI,UAAU,YAAY,KAAK;YAAE,OAAO,UAAU,CAAA;QAElD,IAAI,MAAM,GAAoB,EAAE,CAAA;QAChC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,IAAI,CAAC,GAAG,CAAC,IAAI;gBAAE,SAAQ;YACvB,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;YAC3C,IAAI,MAAM,YAAY,UAAU;gBAAE,SAAQ,CAAC,oCAAoC;YAC/E,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAA;QACxB,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAA;YAC7B,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAC3B,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACnC,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACvC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CACrC,CAAA;QACH,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;QAEhF,MAAM,MAAM,GAAoB;YAC9B,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC;YACnC,aAAa,EAAE,IAAI;YACnB,QAAQ,EAAE,EAAE;SACb,CAAA;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EACb,UAAU,GAAG,SAAS,EACtB,OAAO,GAIR;QACC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAA;QAClD,IAAI,GAAG,YAAY,KAAK;YAAE,OAAO,GAAG,CAAA;QAEpC,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,CACvD,oBAAoB,CAAC;YACnB,QAAQ,EAAE,GAAG;YACb,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI;SACtB,CAAC,CACH,CAAA;QACD,IAAI,UAAU,YAAY,KAAK;YAAE,OAAO,UAAU,CAAA;QAElD,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,IAAI,CAAC,GAAG,CAAC,IAAI;gBAAE,SAAQ;YACvB,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;YAC3C,IAAI,MAAM,YAAY,UAAU;gBAAE,SAAQ,CAAC,oCAAoC;YAC/E,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,CAAA;YACvE,IAAI,KAAK;gBAAE,OAAO,KAAK,CAAA;QACzB,CAAC;QAED,OAAO,IAAI,aAAa,CAAC,EAAE,QAAQ,EAAE,UAAU,OAAO,GAAG,EAAE,CAAC,CAAA;IAC9D,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,EAChB,UAAU,GAAG,SAAS,EACtB,OAAO,EACP,KAAK,EACL,GAAG,EACH,MAAM,GAAG,KAAK,EACd,WAAW,EACX,QAAQ,EACR,SAAS,EACT,QAAQ,GAAG,KAAK,EAChB,UAAU,EACV,SAAS,EACT,OAAO,EACP,UAAU,EACV,YAAY,GAgBb;QACC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAA;QAClD,IAAI,GAAG,YAAY,KAAK;YAAE,OAAO,GAAG,CAAA;QACpC,MAAM,GAAG,GAAG,WAAW,EAAE,CAAA;QAEzB,MAAM,UAAU,GAAG,eAAe,CAAC;YACjC,GAAG;YACH,OAAO;YACP,KAAK;YACL,GAAG;YACH,MAAM;YACN,WAAW;YACX,QAAQ;YACR,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YACjD,YAAY;YACZ,UAAU;YACV,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;SACjC,CAAC,CAAA;QAEF,MAAM,QAAQ,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;QAE3C,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,CACzD,oBAAoB,CAAC;YACnB,QAAQ,EAAE,GAAG;YACb,QAAQ;YACR,UAAU;YACV,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CACH,CAAA;QACD,IAAI,YAAY,YAAY,KAAK;YAAE,OAAO,YAAY,CAAA;QAEtD,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC,CAAA;QACxC,IAAI,MAAM,YAAY,UAAU;YAAE,OAAO,MAAM,CAAA;QAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACvB,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,UAAU,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,oCAAoC,EAAE,CAAC,CAAA;QAC1G,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,QAAQ,EAAE,CAAA;QAEnC,OAAO,KAAK,CAAA;IACd,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,EAChB,UAAU,GAAG,SAAS,EACtB,OAAO,EACP,OAAO,EACP,KAAK,EACL,GAAG,EACH,MAAM,EACN,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,OAAO,EACP,UAAU,EACV,YAAY,GAgBb;QACC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAA;QAC7D,IAAI,QAAQ,YAAY,KAAK;YAAE,OAAO,QAAQ,CAAA;QAC9C,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACpC,OAAO,IAAI,gBAAgB,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,QAAQ,EAAE,SAAS,OAAO,EAAE,EAAE,CAAC,CAAA;QAC3F,CAAC;QAED,6BAA6B;QAC7B,IAAI,eAAe,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACnD,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,SAAS;YACzB,QAAQ,EAAE,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE;SAC/E,CAAC,CAAC,CAAA;QACH,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;YACtE,eAAe,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;QACxF,CAAC;QACD,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;YAC9E,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;gBACjC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;oBAC1C,eAAe,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAA;gBAC5E,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,UAAU,GAAG,eAAe,CAAC;YACjC,GAAG,EAAE,QAAQ,CAAC,GAAG,IAAI,OAAO;YAC5B,OAAO,EAAE,OAAO,IAAI,QAAQ,CAAC,OAAO;YACpC,KAAK,EAAE,KAAK,IAAI,QAAQ,CAAC,KAAK;YAC9B,GAAG,EAAE,GAAG,IAAI,QAAQ,CAAC,GAAG;YACxB,MAAM,EAAE,MAAM,IAAI,QAAQ,CAAC,MAAM;YACjC,WAAW,EAAE,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,IAAI,SAAS;YACxF,QAAQ,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,IAAI,SAAS;YAC5E,SAAS,EAAE,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS;YACnE,YAAY,EAAE,YAAY,IAAI,QAAQ,CAAC,YAAY;YACnD,UAAU,EAAE,UAAU,IAAI,QAAQ,CAAC,UAAU;YAC7C,QAAQ,EAAE,CAAC;YACX,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;SACjC,CAAC,CAAA;QAEF,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,CACzD,oBAAoB,CAAC;YACnB,cAAc,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAI,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE;YAC7E,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CACH,CAAA;QACD,IAAI,YAAY,YAAY,KAAK;YAAE,OAAO,YAAY,CAAA;QAEtD,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC,CAAA;QACxC,IAAI,MAAM,YAAY,UAAU;YAAE,OAAO,MAAM,CAAA;QAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACvB,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,UAAU,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,oCAAoC,EAAE,CAAC,CAAA;QAC1G,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAA;QACxB,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAA;QAE1B,OAAO,KAAK,CAAA;IACd,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,EAChB,UAAU,GAAG,SAAS,EACtB,OAAO,GAIR;QACC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAA;QAC7D,IAAI,QAAQ,YAAY,KAAK;YAAE,OAAO,QAAQ,CAAA;QAC9C,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;YAClB,OAAO,IAAI,gBAAgB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,OAAO,EAAE,EAAE,CAAC,CAAA;QACnF,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,CACzD,oBAAoB,CAAC;YACnB,cAAc,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE;YAC3D,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CACH,CAAA;QACD,IAAI,YAAY,YAAY,KAAK;YAAE,OAAO,YAAY,CAAA;IAExD,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,EACnB,UAAU,GAAG,SAAS,EACtB,OAAO,EACP,MAAM,EACN,OAAO,GAMR;QACC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAA;QAC7D,IAAI,QAAQ,YAAY,KAAK;YAAE,OAAO,QAAQ,CAAA;QAC9C,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACpC,OAAO,IAAI,gBAAgB,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,QAAQ,EAAE,SAAS,OAAO,EAAE,EAAE,CAAC,CAAA;QAC3F,CAAC;QAED,mCAAmC;QACnC,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/C,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,SAAS;YACzB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;gBAC1D,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE;gBACtB,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;SAC3E,CAAC,CAAC,CAAA;QAEH,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;QAE7D,MAAM,UAAU,GAAG,eAAe,CAAC;YACjC,GAAG,EAAE,QAAQ,CAAC,GAAG,IAAI,OAAO;YAC5B,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,GAAG,EAAE,QAAQ,CAAC,GAAG;YACjB,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,SAAS;YAC9C,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,SAAS;YACxC,SAAS;YACT,SAAS,EAAE,SAAS;gBAClB,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,SAAS,EAAE;gBAC/D,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;SAC1B,CAAC,CAAA;QAEF,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,CAC1D,oBAAoB,CAAC;YACnB,cAAc,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAI,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE;YAC7E,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CACH,CAAA;QACD,IAAI,aAAa,YAAY,KAAK;YAAE,OAAO,aAAa,CAAA;QAExD,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC,CAAA;QACxC,IAAI,MAAM,YAAY,UAAU;YAAE,OAAO,MAAM,CAAA;QAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACvB,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,UAAU,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,oCAAoC,EAAE,CAAC,CAAA;QAC3G,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAA;QAExB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,EAChB,WAAW,EACX,OAAO,EACP,OAAO,GAKR;QACC,MAAM,OAAO,GAAqB,EAAE,CAAA;QAEpC,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;YAChC,6DAA6D;YAC7D,uEAAuE;YACvE,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC;gBACzC,UAAU,EAAE,KAAK;gBACjB,OAAO;gBACP,OAAO;gBACP,UAAU,EAAE,GAAG;aAChB,CAAC,CAAA;YACF,IAAI,YAAY,YAAY,KAAK,EAAE,CAAC;gBAClC,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;gBAC3C,SAAQ;YACV,CAAC;YAED,MAAM,IAAI,GAAoB,YAAY,CAAC,MAAM;iBAC9C,MAAM,CAAC,CAAC,CAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,aAAa,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;iBAC3E,GAAG,CAAC,CAAC,CAAgB,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;YAE9D,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QACzC,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;CAEF"}
package/dist/cli.js CHANGED
@@ -4,6 +4,7 @@
4
4
  // Uses goke for command parsing with zod schemas for type-safe options.
5
5
  import { goke } from 'goke';
6
6
  import { z } from 'zod';
7
+ import React from 'react';
7
8
  import { registerAuthCommands } from './commands/auth-cmd.js';
8
9
  import { registerMailCommands } from './commands/mail.js';
9
10
  import { registerMailActionCommands } from './commands/mail-actions.js';
@@ -19,6 +20,30 @@ const cli = goke('zele');
19
20
  // ---------------------------------------------------------------------------
20
21
  cli.option('--account <account>', z.array(z.string()).describe('Filter by email account (repeatable)'));
21
22
  // ---------------------------------------------------------------------------
23
+ // Default command (TUI)
24
+ // ---------------------------------------------------------------------------
25
+ cli
26
+ .command('', 'Browse emails in TUI')
27
+ .action(async () => {
28
+ if (typeof globalThis.Bun === 'undefined') {
29
+ const pc = await import('picocolors');
30
+ const isWindows = process.platform === 'win32';
31
+ const installCmd = isWindows
32
+ ? 'powershell -c "irm bun.sh/install.ps1 | iex"'
33
+ : 'curl -fsSL https://bun.sh/install | bash';
34
+ console.error(pc.default.red('Error: ') +
35
+ 'The TUI requires Bun to run.\n\n' +
36
+ 'Install Bun:\n' +
37
+ ` ${pc.default.cyan(installCmd)}\n\n` +
38
+ 'Then run:\n' +
39
+ ` ${pc.default.cyan('zele')}`);
40
+ process.exit(1);
41
+ }
42
+ const { renderWithProviders } = await import('termcast');
43
+ const { default: Command } = await import('./mail-tui.js');
44
+ await renderWithProviders(React.createElement(Command));
45
+ });
46
+ // ---------------------------------------------------------------------------
22
47
  // Register all command modules (auth first so login/logout/whoami appear at top of --help)
23
48
  // ---------------------------------------------------------------------------
24
49
  registerAuthCommands(cli);
@@ -34,7 +59,7 @@ registerWatchCommands(cli);
34
59
  // Help & version
35
60
  // ---------------------------------------------------------------------------
36
61
  cli.help();
37
- cli.version('0.3.0');
62
+ cli.version('0.3.5');
38
63
  // ---------------------------------------------------------------------------
39
64
  // Parse & run
40
65
  // ---------------------------------------------------------------------------
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,kCAAkC;AAClC,0EAA0E;AAC1E,wEAAwE;AAExE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAA;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAA;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAE3D,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;AAExB,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,GAAG,CAAC,MAAM,CACR,qBAAqB,EACrB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,sCAAsC,CAAC,CACrE,CAAA;AAED,8EAA8E;AAC9E,2FAA2F;AAC3F,8EAA8E;AAE9E,oBAAoB,CAAC,GAAG,CAAC,CAAA;AACzB,uBAAuB,CAAC,GAAG,CAAC,CAAA;AAC5B,oBAAoB,CAAC,GAAG,CAAC,CAAA;AACzB,0BAA0B,CAAC,GAAG,CAAC,CAAA;AAC/B,qBAAqB,CAAC,GAAG,CAAC,CAAA;AAC1B,qBAAqB,CAAC,GAAG,CAAC,CAAA;AAC1B,0BAA0B,CAAC,GAAG,CAAC,CAAA;AAC/B,wBAAwB,CAAC,GAAG,CAAC,CAAA;AAC7B,qBAAqB,CAAC,GAAG,CAAC,CAAA;AAE1B,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,GAAG,CAAC,IAAI,EAAE,CAAA;AACV,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;AAEpB,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAE9E,GAAG,CAAC,KAAK,EAAE,CAAA"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1,36 +1,36 @@
1
1
  // Attachment commands: list, get (download).
2
- // Lists attachments for a message and downloads them to disk.
2
+ // Lists attachments for a thread and downloads them to disk.
3
3
  // Skips re-download if file already exists with same size (like gogcli).
4
4
  import { z } from 'zod';
5
5
  import fs from 'node:fs';
6
6
  import path from 'node:path';
7
7
  import { getClient } from '../auth.js';
8
8
  import * as out from '../output.js';
9
+ import { handleCommandError } from '../output.js';
9
10
  export function registerAttachmentCommands(cli) {
10
11
  // =========================================================================
11
12
  // attachment list
12
13
  // =========================================================================
13
14
  cli
14
- .command('attachment list <messageId>', 'List attachments for a message')
15
- .action(async (messageId, options) => {
15
+ .command('attachment list <threadId>', 'List attachments for all messages in a thread')
16
+ .action(async (threadId, options) => {
16
17
  const { client } = await getClient(options.account);
17
- const msg = await client.getMessage({ messageId });
18
- if ('raw' in msg) {
19
- out.error('Cannot list attachments for raw messages');
20
- process.exit(1);
21
- }
22
- const attachments = msg.attachments;
18
+ const { parsed: thread } = await client.getThread({ threadId });
19
+ const attachments = thread.messages.flatMap((msg) => msg.attachments.map((attachment) => ({
20
+ thread_id: thread.id,
21
+ message_id: msg.id,
22
+ attachment_id: attachment.attachmentId,
23
+ filename: attachment.filename,
24
+ type: attachment.mimeType,
25
+ size: formatSize(attachment.size),
26
+ })));
23
27
  if (attachments.length === 0) {
24
28
  out.hint('No attachments');
25
29
  return;
26
30
  }
27
- out.printList(attachments.map((a) => ({
28
- attachment_id: a.attachmentId,
29
- filename: a.filename,
30
- type: a.mimeType,
31
- size: formatSize(a.size),
32
- })));
31
+ out.printList(attachments);
33
32
  out.hint(`${attachments.length} attachment(s)`);
33
+ out.hint('Use: zele attachment get <messageId> <attachmentId>');
34
34
  });
35
35
  // =========================================================================
36
36
  // attachment get
@@ -43,6 +43,8 @@ export function registerAttachmentCommands(cli) {
43
43
  const { client } = await getClient(options.account);
44
44
  // Get attachment metadata first
45
45
  const msg = await client.getMessage({ messageId });
46
+ if (msg instanceof Error)
47
+ return handleCommandError(msg);
46
48
  if ('raw' in msg) {
47
49
  out.error('Cannot get attachments for raw messages');
48
50
  process.exit(1);