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.
- package/README.md +1 -1
- package/bin/zele +27 -0
- package/dist/api-utils.d.ts +51 -2
- package/dist/api-utils.js +89 -3
- package/dist/api-utils.js.map +1 -1
- package/dist/auth.d.ts +27 -6
- package/dist/auth.js +185 -129
- package/dist/auth.js.map +1 -1
- package/dist/calendar-client.d.ts +16 -9
- package/dist/calendar-client.js +163 -59
- package/dist/calendar-client.js.map +1 -1
- package/dist/cli.js +26 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/attachment.js +17 -15
- package/dist/commands/attachment.js.map +1 -1
- package/dist/commands/auth-cmd.js +20 -9
- package/dist/commands/auth-cmd.js.map +1 -1
- package/dist/commands/calendar.js +67 -78
- package/dist/commands/calendar.js.map +1 -1
- package/dist/commands/draft.js +25 -18
- package/dist/commands/draft.js.map +1 -1
- package/dist/commands/label.js +33 -45
- package/dist/commands/label.js.map +1 -1
- package/dist/commands/mail-actions.js +11 -13
- package/dist/commands/mail-actions.js.map +1 -1
- package/dist/commands/mail.js +112 -126
- package/dist/commands/mail.js.map +1 -1
- package/dist/commands/profile.js +18 -21
- package/dist/commands/profile.js.map +1 -1
- package/dist/commands/watch.js +33 -261
- package/dist/commands/watch.js.map +1 -1
- package/dist/db.js +12 -13
- package/dist/db.js.map +1 -1
- package/dist/generated/browser.d.ts +12 -27
- package/dist/generated/client.d.ts +13 -28
- package/dist/generated/client.js +1 -1
- package/dist/generated/commonInputTypes.d.ts +90 -26
- package/dist/generated/enums.d.ts +0 -4
- package/dist/generated/enums.js +0 -3
- package/dist/generated/enums.js.map +1 -1
- package/dist/generated/internal/class.d.ts +22 -55
- package/dist/generated/internal/class.js +12 -4
- package/dist/generated/internal/class.js.map +1 -1
- package/dist/generated/internal/prismaNamespace.d.ts +272 -511
- package/dist/generated/internal/prismaNamespace.js +54 -66
- package/dist/generated/internal/prismaNamespace.js.map +1 -1
- package/dist/generated/internal/prismaNamespaceBrowser.d.ts +60 -74
- package/dist/generated/internal/prismaNamespaceBrowser.js +50 -62
- package/dist/generated/internal/prismaNamespaceBrowser.js.map +1 -1
- package/dist/generated/models/Account.d.ts +1637 -0
- package/dist/generated/models/Account.js +2 -0
- package/dist/generated/models/Account.js.map +1 -0
- package/dist/generated/models/CalendarList.d.ts +1161 -0
- package/dist/generated/models/CalendarList.js +2 -0
- package/dist/generated/models/CalendarList.js.map +1 -0
- package/dist/generated/models/Label.d.ts +1161 -0
- package/dist/generated/models/Label.js +2 -0
- package/dist/generated/models/Label.js.map +1 -0
- package/dist/generated/models/Profile.d.ts +1269 -0
- package/dist/generated/models/Profile.js +2 -0
- package/dist/generated/models/Profile.js.map +1 -0
- package/dist/generated/models/SyncState.d.ts +1130 -0
- package/dist/generated/models/SyncState.js +2 -0
- package/dist/generated/models/SyncState.js.map +1 -0
- package/dist/generated/models/Thread.d.ts +1608 -0
- package/dist/generated/models/Thread.js +2 -0
- package/dist/generated/models/Thread.js.map +1 -0
- package/dist/generated/models.d.ts +6 -9
- package/dist/gmail-client.d.ts +119 -94
- package/dist/gmail-client.js +862 -322
- package/dist/gmail-client.js.map +1 -1
- package/dist/mail-tui.d.ts +1 -0
- package/dist/mail-tui.js +517 -0
- package/dist/mail-tui.js.map +1 -0
- package/dist/output.d.ts +6 -0
- package/dist/output.js +124 -11
- package/dist/output.js.map +1 -1
- package/package.json +39 -11
- package/schema.prisma +81 -113
- package/src/api-utils.ts +103 -5
- package/src/auth.ts +224 -143
- package/src/calendar-client.ts +196 -89
- package/src/cli.ts +30 -1
- package/src/commands/attachment.ts +18 -19
- package/src/commands/auth-cmd.ts +19 -9
- package/src/commands/calendar.ts +42 -85
- package/src/commands/draft.ts +19 -22
- package/src/commands/label.ts +21 -57
- package/src/commands/mail-actions.ts +11 -19
- package/src/commands/mail.ts +102 -147
- package/src/commands/profile.ts +12 -28
- package/src/commands/watch.ts +37 -304
- package/src/db.ts +13 -16
- package/src/generated/browser.ts +49 -0
- package/src/generated/client.ts +71 -0
- package/src/generated/commonInputTypes.ts +332 -0
- package/src/generated/enums.ts +17 -0
- package/src/generated/internal/class.ts +250 -0
- package/src/generated/internal/prismaNamespace.ts +1198 -0
- package/src/generated/internal/prismaNamespaceBrowser.ts +169 -0
- package/src/generated/models/Account.ts +1848 -0
- package/src/generated/models/CalendarList.ts +1331 -0
- package/src/generated/models/Label.ts +1331 -0
- package/src/generated/models/Profile.ts +1439 -0
- package/src/generated/models/SyncState.ts +1300 -0
- package/src/generated/models/Thread.ts +1787 -0
- package/src/generated/models.ts +17 -0
- package/src/gmail-client.test.ts +59 -0
- package/src/gmail-client.ts +1034 -429
- package/src/mail-tui.tsx +1061 -0
- package/src/output.test.ts +1093 -0
- package/src/output.ts +128 -13
- package/src/schema.sql +58 -68
- package/src/test-fixtures/email-html/safe-claude-event.html +28 -0
- package/src/test-fixtures/email-html/safe-product-announcement.html +25 -0
- package/src/test-fixtures/email-html/safe-tracked-links.html +27 -0
- package/src/test-fixtures/email-html-snapshots/safe-claude-event.html.md +9 -0
- package/src/test-fixtures/email-html-snapshots/safe-product-announcement.html.md +13 -0
- package/src/test-fixtures/email-html-snapshots/safe-tracked-links.html.md +7 -0
- package/AGENTS.md +0 -26
- package/CHANGELOG.md +0 -43
- package/dist/generated/models/accounts.d.ts +0 -2000
- package/dist/generated/models/accounts.js +0 -2
- package/dist/generated/models/accounts.js.map +0 -1
- package/dist/generated/models/calendar_events.d.ts +0 -1433
- package/dist/generated/models/calendar_events.js +0 -2
- package/dist/generated/models/calendar_events.js.map +0 -1
- package/dist/generated/models/calendar_lists.d.ts +0 -1131
- package/dist/generated/models/calendar_lists.js +0 -2
- package/dist/generated/models/calendar_lists.js.map +0 -1
- package/dist/generated/models/label_counts.d.ts +0 -1131
- package/dist/generated/models/label_counts.js +0 -2
- package/dist/generated/models/label_counts.js.map +0 -1
- package/dist/generated/models/labels.d.ts +0 -1131
- package/dist/generated/models/labels.js +0 -2
- package/dist/generated/models/labels.js.map +0 -1
- package/dist/generated/models/profiles.d.ts +0 -1131
- package/dist/generated/models/profiles.js +0 -2
- package/dist/generated/models/profiles.js.map +0 -1
- package/dist/generated/models/sync_states.d.ts +0 -1107
- package/dist/generated/models/sync_states.js +0 -2
- package/dist/generated/models/sync_states.js.map +0 -1
- package/dist/generated/models/thread_lists.d.ts +0 -1404
- package/dist/generated/models/thread_lists.js +0 -2
- package/dist/generated/models/thread_lists.js.map +0 -1
- package/dist/generated/models/threads.d.ts +0 -1247
- package/dist/generated/models/threads.js +0 -2
- package/dist/generated/models/threads.js.map +0 -1
- package/dist/gmail-cache.d.ts +0 -60
- package/dist/gmail-cache.js +0 -264
- package/dist/gmail-cache.js.map +0 -1
- package/docs/gogcli-gmail-implementation.md +0 -599
- package/scripts/test-device-code-clients.ts +0 -186
- package/scripts/test-micropython-scopes.ts +0 -72
- package/scripts/test-oauth-clients.ts +0 -257
- package/src/gmail-cache.ts +0 -339
- package/tsconfig.json +0 -16
package/dist/calendar-client.js
CHANGED
|
@@ -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
|
-
|
|
128
|
-
|
|
129
|
-
return (
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
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
|
-
|
|
293
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
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":"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"}
|
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.
|
|
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
|
|
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 <
|
|
15
|
-
.action(async (
|
|
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
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|
|
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);
|