zele 0.2.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 +38 -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 +28 -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 +114 -128
- 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.d.ts +2 -0
- package/dist/commands/watch.js +73 -0
- package/dist/commands/watch.js.map +1 -0
- 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 -315
- 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 -4
- package/dist/output.js +124 -17
- 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 +32 -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 +104 -149
- package/src/commands/profile.ts +12 -28
- package/src/commands/watch.ts +88 -0
- 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 -422
- package/src/mail-tui.tsx +1061 -0
- package/src/output.test.ts +1093 -0
- package/src/output.ts +128 -20
- 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 -36
- 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/commands/draft.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
// Draft commands: list, create, get, send, delete.
|
|
2
2
|
// Manages Gmail drafts with YAML output for list views.
|
|
3
|
+
// Cache invalidation is handled by the client (sendDraft invalidates threadLists).
|
|
3
4
|
// Multi-account: list fetches all accounts concurrently and merges by date.
|
|
4
5
|
import { z } from 'zod';
|
|
5
6
|
import fs from 'node:fs';
|
|
6
7
|
import { getClients, getClient } from '../auth.js';
|
|
7
|
-
import
|
|
8
|
+
import { AuthError } from '../api-utils.js';
|
|
8
9
|
import * as out from '../output.js';
|
|
10
|
+
import { handleCommandError } from '../output.js';
|
|
9
11
|
import pc from 'picocolors';
|
|
10
12
|
export function registerDraftCommands(cli) {
|
|
11
13
|
// =========================================================================
|
|
@@ -22,24 +24,28 @@ export function registerDraftCommands(cli) {
|
|
|
22
24
|
out.error('--page cannot be used with multiple accounts (page tokens are per-account)');
|
|
23
25
|
process.exit(1);
|
|
24
26
|
}
|
|
25
|
-
// Fetch from all accounts concurrently
|
|
26
|
-
const
|
|
27
|
+
// Fetch from all accounts concurrently
|
|
28
|
+
const results = await Promise.all(clients.map(async ({ email, client }) => {
|
|
27
29
|
const result = await client.listDrafts({
|
|
28
30
|
query: options.query,
|
|
29
31
|
maxResults: options.max,
|
|
30
32
|
pageToken: options.page,
|
|
31
33
|
});
|
|
34
|
+
if (result instanceof Error)
|
|
35
|
+
return result;
|
|
32
36
|
return { email, result };
|
|
33
37
|
}));
|
|
34
|
-
const allResults =
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
+
const allResults = results.filter((r) => {
|
|
39
|
+
if (r instanceof AuthError) {
|
|
40
|
+
out.error(`${r.message}. Try: zele login`);
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
if (r instanceof Error) {
|
|
44
|
+
out.error(`Failed to fetch drafts: ${r.message}`);
|
|
38
45
|
return false;
|
|
39
46
|
}
|
|
40
47
|
return true;
|
|
41
|
-
})
|
|
42
|
-
.map((r) => r.value);
|
|
48
|
+
});
|
|
43
49
|
// Merge drafts from all accounts, sorted by date descending, capped at max
|
|
44
50
|
const merged = allResults
|
|
45
51
|
.flatMap(({ email, result }) => result.drafts.map((d) => ({ ...d, account: email })))
|
|
@@ -67,18 +73,20 @@ export function registerDraftCommands(cli) {
|
|
|
67
73
|
.action(async (draftId, options) => {
|
|
68
74
|
const { client } = await getClient(options.account);
|
|
69
75
|
const draft = await client.getDraft({ draftId });
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
76
|
+
if (draft instanceof Error)
|
|
77
|
+
handleCommandError(draft);
|
|
78
|
+
console.log(pc.bold(`Draft: ${draft.message.subject}`));
|
|
79
|
+
console.log(pc.dim(`Draft ID: ${draft.id}`));
|
|
80
|
+
console.log(`To: ${draft.to.join(', ') || '(none)'}`);
|
|
73
81
|
if (draft.cc.length > 0) {
|
|
74
|
-
|
|
82
|
+
console.log(`Cc: ${draft.cc.join(', ')}`);
|
|
75
83
|
}
|
|
76
84
|
if (draft.bcc.length > 0) {
|
|
77
|
-
|
|
85
|
+
console.log(`Bcc: ${draft.bcc.join(', ')}`);
|
|
78
86
|
}
|
|
79
|
-
|
|
87
|
+
console.log();
|
|
80
88
|
const body = out.renderEmailBody(draft.message.body, draft.message.mimeType);
|
|
81
|
-
|
|
89
|
+
console.log(body);
|
|
82
90
|
});
|
|
83
91
|
// =========================================================================
|
|
84
92
|
// draft create
|
|
@@ -135,9 +143,8 @@ export function registerDraftCommands(cli) {
|
|
|
135
143
|
cli
|
|
136
144
|
.command('draft send <draftId>', 'Send a draft')
|
|
137
145
|
.action(async (draftId, options) => {
|
|
138
|
-
const {
|
|
146
|
+
const { client } = await getClient(options.account);
|
|
139
147
|
const result = await client.sendDraft({ draftId });
|
|
140
|
-
await cache.invalidateThreadLists(email);
|
|
141
148
|
out.printYaml(result);
|
|
142
149
|
out.success('Draft sent');
|
|
143
150
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"draft.js","sourceRoot":"","sources":["../../src/commands/draft.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,wDAAwD;AACxD,4EAA4E;AAG5E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAElD,OAAO,
|
|
1
|
+
{"version":3,"file":"draft.js","sourceRoot":"","sources":["../../src/commands/draft.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,wDAAwD;AACxD,mFAAmF;AACnF,4EAA4E;AAG5E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAElD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,GAAG,MAAM,cAAc,CAAA;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAE,MAAM,YAAY,CAAA;AAE3B,MAAM,UAAU,qBAAqB,CAAC,GAAS;IAC7C,4EAA4E;IAC5E,aAAa;IACb,4EAA4E;IAE5E,GAAG;SACA,OAAO,CAAC,YAAY,EAAE,aAAa,CAAC;SACpC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;SACrE,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;SAChE,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;SAC9D,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAEjD,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,KAAK,CAAC,4EAA4E,CAAC,CAAA;YACvF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAED,uCAAuC;QACvC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;YACtC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC;gBACrC,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,UAAU,EAAE,OAAO,CAAC,GAAG;gBACvB,SAAS,EAAE,OAAO,CAAC,IAAI;aACxB,CAAC,CAAA;YACF,IAAI,MAAM,YAAY,KAAK;gBAAE,OAAO,MAAM,CAAA;YAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;QAC1B,CAAC,CAAC,CACH,CAAA;QAED,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAiC,EAAE;YACnE,IAAI,CAAC,YAAY,SAAS,EAAE,CAAC;gBAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,mBAAmB,CAAC,CAAC;gBAAC,OAAO,KAAK,CAAA;YAAC,CAAC;YACxF,IAAI,CAAC,YAAY,KAAK,EAAE,CAAC;gBAAC,GAAG,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;gBAAC,OAAO,KAAK,CAAA;YAAC,CAAC;YAC3F,OAAO,IAAI,CAAA;QACb,CAAC,CAAC,CAAA;QAEJ,2EAA2E;QAC3E,MAAM,MAAM,GAAG,UAAU;aACtB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAC7B,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CACrD;aACA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;aACvE,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAA;QAExB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;YAC3B,OAAM;QACR,CAAC;QAED,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAA;QACtC,GAAG,CAAC,SAAS,CACX,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACjB,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9C,QAAQ,EAAE,CAAC,CAAC,EAAE;YACd,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,gBAAgB;YACvC,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;SAC7B,CAAC,CAAC,CACJ,CAAA;QAED,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,WAAW,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;IAEJ,4EAA4E;IAC5E,YAAY;IACZ,4EAA4E;IAE5E,GAAG;SACA,OAAO,CAAC,qBAAqB,EAAE,oBAAoB,CAAC;SACpD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QACjC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAEnD,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;QAChD,IAAI,KAAK,YAAY,KAAK;YAAE,kBAAkB,CAAC,KAAK,CAAC,CAAA;QAErD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;QACvD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,aAAa,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;QAC5C,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAA;QACrD,IAAI,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC3C,CAAC;QACD,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC7C,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAA;QAEb,MAAM,IAAI,GAAG,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QAC5E,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACnB,CAAC,CAAC,CAAA;IAEJ,4EAA4E;IAC5E,eAAe;IACf,4EAA4E;IAE5E,GAAG;SACA,OAAO,CAAC,cAAc,EAAE,oBAAoB,CAAC;SAC7C,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC,CAAC;SAC/E,MAAM,CAAC,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;SACnE,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;SAC/D,MAAM,CAAC,wBAAwB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC,CAAC;SAC9F,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC,CAAC;SAC3E,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC,CAAC;SAC9E,MAAM,CAAC,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC;SAC/E,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;SACnE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;YAChB,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAA;YAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,GAAG,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAA;YAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAED,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE,CAAA;QAC7B,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,IAAI,OAAO,CAAC,QAAQ,KAAK,GAAG,EAAE,CAAC;gBAC7B,MAAM,MAAM,GAAa,EAAE,CAAA;gBAC3B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;oBACxC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACpB,CAAC;gBACD,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;YAChD,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;YACnD,CAAC;QACH,CAAC;QAED,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,EAAE,CAClC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;QAEjF,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAEnD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC;YACtC,EAAE,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI;YACJ,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;YACpD,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;YACvD,QAAQ,EAAE,OAAO,CAAC,MAAM;YACxB,SAAS,EAAE,OAAO,CAAC,IAAI;SACxB,CAAC,CAAA;QAEF,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QACrB,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAA;IAC9B,CAAC,CAAC,CAAA;IAEJ,4EAA4E;IAC5E,aAAa;IACb,4EAA4E;IAE5E,GAAG;SACA,OAAO,CAAC,sBAAsB,EAAE,cAAc,CAAC;SAC/C,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QACjC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QACnD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;QAElD,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QACrB,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;IAC3B,CAAC,CAAC,CAAA;IAEJ,4EAA4E;IAC5E,eAAe;IACf,4EAA4E;IAE5E,GAAG;SACA,OAAO,CAAC,wBAAwB,EAAE,gBAAgB,CAAC;SACnD,MAAM,CAAC,SAAS,EAAE,mBAAmB,CAAC;SACtC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QACjC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAC1C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAA;YAC9C,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;YACrF,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;gBACnD,EAAE,CAAC,QAAQ,CAAC,gBAAgB,OAAO,UAAU,EAAE,OAAO,CAAC,CAAA;YACzD,CAAC,CAAC,CAAA;YACF,EAAE,CAAC,KAAK,EAAE,CAAA;YAEV,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE,CAAC;gBACjC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;gBACrB,OAAM;YACR,CAAC;QACH,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAEnD,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;QAErC,GAAG,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;IACrD,CAAC,CAAC,CAAA;AACN,CAAC"}
|
package/dist/commands/label.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
// Label commands: list, get, create, delete, counts.
|
|
2
|
-
// Manages Gmail labels with YAML output
|
|
2
|
+
// Manages Gmail labels with YAML output.
|
|
3
|
+
// Cache is handled by the client — commands just call methods and use data.
|
|
3
4
|
// Multi-account: list and counts fetch all accounts concurrently and merge.
|
|
4
5
|
import { z } from 'zod';
|
|
5
6
|
import { getClients, getClient } from '../auth.js';
|
|
6
|
-
import
|
|
7
|
+
import { AuthError } from '../api-utils.js';
|
|
7
8
|
import * as out from '../output.js';
|
|
8
9
|
export function registerLabelCommands(cli) {
|
|
9
10
|
// =========================================================================
|
|
@@ -11,31 +12,26 @@ export function registerLabelCommands(cli) {
|
|
|
11
12
|
// =========================================================================
|
|
12
13
|
cli
|
|
13
14
|
.command('label list', 'List all labels')
|
|
14
|
-
.option('--no-cache', 'Skip cache')
|
|
15
15
|
.action(async (options) => {
|
|
16
16
|
const clients = await getClients(options.account);
|
|
17
|
-
// Fetch from all accounts concurrently
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}
|
|
24
|
-
const labels = await client.listLabels();
|
|
25
|
-
if (!options.noCache) {
|
|
26
|
-
await cache.cacheLabels(email, labels);
|
|
27
|
-
}
|
|
28
|
-
return { email, labels };
|
|
17
|
+
// Fetch from all accounts concurrently
|
|
18
|
+
const results = await Promise.all(clients.map(async ({ email, client }) => {
|
|
19
|
+
const labelsResult = await client.listLabels();
|
|
20
|
+
if (labelsResult instanceof Error)
|
|
21
|
+
return labelsResult;
|
|
22
|
+
return { email, labels: labelsResult.parsed };
|
|
29
23
|
}));
|
|
30
|
-
const allResults =
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
24
|
+
const allResults = results.filter((r) => {
|
|
25
|
+
if (r instanceof AuthError) {
|
|
26
|
+
out.error(`${r.message}. Try: zele login`);
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
if (r instanceof Error) {
|
|
30
|
+
out.error(`Failed to fetch labels: ${r.message}`);
|
|
34
31
|
return false;
|
|
35
32
|
}
|
|
36
33
|
return true;
|
|
37
|
-
})
|
|
38
|
-
.map((r) => r.value);
|
|
34
|
+
});
|
|
39
35
|
// Merge labels from all accounts
|
|
40
36
|
const merged = allResults.flatMap(({ email, labels }) => labels.map((l) => ({ ...l, account: email })));
|
|
41
37
|
if (merged.length === 0) {
|
|
@@ -83,14 +79,13 @@ export function registerLabelCommands(cli) {
|
|
|
83
79
|
.option('--bg-color <bgColor>', z.string().describe('Background color (hex, e.g. #4986e7)'))
|
|
84
80
|
.option('--text-color <textColor>', z.string().describe('Text color (hex, e.g. #ffffff)'))
|
|
85
81
|
.action(async (name, options) => {
|
|
86
|
-
const {
|
|
82
|
+
const { client } = await getClient(options.account);
|
|
87
83
|
const result = await client.createLabel({
|
|
88
84
|
name,
|
|
89
85
|
color: options.bgColor && options.textColor
|
|
90
86
|
? { backgroundColor: options.bgColor, textColor: options.textColor }
|
|
91
87
|
: undefined,
|
|
92
88
|
});
|
|
93
|
-
await cache.invalidateLabels(email);
|
|
94
89
|
out.printYaml(result);
|
|
95
90
|
out.success(`Label created: "${result.name}"`);
|
|
96
91
|
});
|
|
@@ -113,10 +108,8 @@ export function registerLabelCommands(cli) {
|
|
|
113
108
|
return;
|
|
114
109
|
}
|
|
115
110
|
}
|
|
116
|
-
const {
|
|
111
|
+
const { client } = await getClient(options.account);
|
|
117
112
|
await client.deleteLabel({ labelId });
|
|
118
|
-
await cache.invalidateLabels(email);
|
|
119
|
-
await cache.invalidateLabelCounts(email);
|
|
120
113
|
out.printYaml({ label_id: labelId, deleted: true });
|
|
121
114
|
});
|
|
122
115
|
// =========================================================================
|
|
@@ -124,31 +117,26 @@ export function registerLabelCommands(cli) {
|
|
|
124
117
|
// =========================================================================
|
|
125
118
|
cli
|
|
126
119
|
.command('label counts', 'Show unread counts per label')
|
|
127
|
-
.option('--no-cache', 'Skip cache')
|
|
128
120
|
.action(async (options) => {
|
|
129
121
|
const clients = await getClients(options.account);
|
|
130
|
-
// Fetch from all accounts concurrently
|
|
131
|
-
const
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
}
|
|
137
|
-
const counts = await client.getLabelCounts();
|
|
138
|
-
if (!options.noCache) {
|
|
139
|
-
await cache.cacheLabelCounts(email, counts);
|
|
140
|
-
}
|
|
141
|
-
return { email, counts };
|
|
122
|
+
// Fetch from all accounts concurrently
|
|
123
|
+
const results = await Promise.all(clients.map(async ({ email, client }) => {
|
|
124
|
+
const countsResult = await client.getLabelCounts();
|
|
125
|
+
if (countsResult instanceof Error)
|
|
126
|
+
return countsResult;
|
|
127
|
+
return { email, counts: countsResult.parsed };
|
|
142
128
|
}));
|
|
143
|
-
const allResults =
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
129
|
+
const allResults = results.filter((r) => {
|
|
130
|
+
if (r instanceof AuthError) {
|
|
131
|
+
out.error(`${r.message}. Try: zele login`);
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
if (r instanceof Error) {
|
|
135
|
+
out.error(`Failed to fetch counts: ${r.message}`);
|
|
147
136
|
return false;
|
|
148
137
|
}
|
|
149
138
|
return true;
|
|
150
|
-
})
|
|
151
|
-
.map((r) => r.value);
|
|
139
|
+
});
|
|
152
140
|
// Merge counts from all accounts
|
|
153
141
|
const merged = allResults.flatMap(({ email, counts }) => counts.map((c) => ({ ...c, account: email })));
|
|
154
142
|
// Filter to labels with counts > 0 and sort descending
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"label.js","sourceRoot":"","sources":["../../src/commands/label.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD
|
|
1
|
+
{"version":3,"file":"label.js","sourceRoot":"","sources":["../../src/commands/label.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +1,21 @@
|
|
|
1
1
|
// Mail action commands: star, unstar, archive, trash, untrash, mark read/unread, label modify.
|
|
2
|
-
// Bulk operations on threads —
|
|
2
|
+
// Bulk operations on threads — cache invalidation is handled by the client methods.
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import { getClient } from '../auth.js';
|
|
5
|
-
import * as cache from '../gmail-cache.js';
|
|
6
5
|
import * as out from '../output.js';
|
|
6
|
+
import { handleCommandError } from '../output.js';
|
|
7
7
|
// ---------------------------------------------------------------------------
|
|
8
|
-
// Helper: run a bulk action
|
|
8
|
+
// Helper: run a bulk action
|
|
9
9
|
// ---------------------------------------------------------------------------
|
|
10
|
-
async function bulkAction(threadIds, actionName,
|
|
10
|
+
async function bulkAction(threadIds, actionName, accountFilter, fn) {
|
|
11
11
|
if (threadIds.length === 0) {
|
|
12
12
|
out.error('No thread IDs provided');
|
|
13
13
|
process.exit(1);
|
|
14
14
|
}
|
|
15
|
-
const {
|
|
16
|
-
await fn(client, threadIds);
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
await cache.invalidateThreadLists(email);
|
|
20
|
-
await cache.invalidateLabelCounts(email);
|
|
15
|
+
const { client } = await getClient(accountFilter);
|
|
16
|
+
const result = await fn(client, threadIds);
|
|
17
|
+
if (result instanceof Error)
|
|
18
|
+
handleCommandError(result);
|
|
21
19
|
out.printYaml({ action: actionName, thread_ids: threadIds, success: true });
|
|
22
20
|
}
|
|
23
21
|
// ---------------------------------------------------------------------------
|
|
@@ -75,10 +73,10 @@ export function registerMailActionCommands(cli) {
|
|
|
75
73
|
cli
|
|
76
74
|
.command('mail trash-spam', 'Trash all spam threads')
|
|
77
75
|
.action(async (options) => {
|
|
78
|
-
const {
|
|
76
|
+
const { client } = await getClient(options.account);
|
|
79
77
|
const result = await client.trashAllSpam();
|
|
80
|
-
|
|
81
|
-
|
|
78
|
+
if (result instanceof Error)
|
|
79
|
+
handleCommandError(result);
|
|
82
80
|
out.printYaml(result);
|
|
83
81
|
out.success(`Trashed ${result.count} spam thread(s)`);
|
|
84
82
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mail-actions.js","sourceRoot":"","sources":["../../src/commands/mail-actions.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,
|
|
1
|
+
{"version":3,"file":"mail-actions.js","sourceRoot":"","sources":["../../src/commands/mail-actions.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,oFAAoF;AAGpF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAEtC,OAAO,KAAK,GAAG,MAAM,cAAc,CAAA;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAEjD,8EAA8E;AAC9E,4BAA4B;AAC5B,8EAA8E;AAE9E,KAAK,UAAU,UAAU,CACvB,SAAmB,EACnB,UAAkB,EAClB,aAAmC,EACnC,EAAiE;IAEjE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,GAAG,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAA;QACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC,CAAA;IACjD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAC1C,IAAI,MAAM,YAAY,KAAK;QAAE,kBAAkB,CAAC,MAAM,CAAC,CAAA;IAEvD,GAAG,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;AAC7E,CAAC;AAED,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E,MAAM,UAAU,0BAA0B,CAAC,GAAS;IAClD,GAAG;SACA,OAAO,CAAC,0BAA0B,EAAE,cAAc,CAAC;SACnD,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;QACnC,MAAM,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;IACjG,CAAC,CAAC,CAAA;IAEJ,GAAG;SACA,OAAO,CAAC,4BAA4B,EAAE,0BAA0B,CAAC;SACjE,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;QACnC,MAAM,UAAU,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;IACrG,CAAC,CAAC,CAAA;IAEJ,GAAG;SACA,OAAO,CAAC,6BAA6B,EAAE,qCAAqC,CAAC;SAC7E,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;QACnC,MAAM,UAAU,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;IACrG,CAAC,CAAC,CAAA;IAEJ,GAAG;SACA,OAAO,CAAC,uBAAuB,EAAE,sBAAsB,CAAC;SACxD,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;QAClC,MAAM,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAA;IACtG,CAAC,CAAC,CAAA;IAEJ,GAAG;SACA,OAAO,CAAC,yBAAyB,EAAE,0BAA0B,CAAC;SAC9D,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;QAClC,MAAM,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAA;IAC1G,CAAC,CAAC,CAAA;IAEJ,GAAG;SACA,OAAO,CAAC,+BAA+B,EAAE,sBAAsB,CAAC;SAChE,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;QACnC,MAAM,UAAU,CAAC,SAAS,EAAE,gBAAgB,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;IAC9G,CAAC,CAAC,CAAA;IAEJ,GAAG;SACA,OAAO,CAAC,iCAAiC,EAAE,wBAAwB,CAAC;SACpE,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;QACnC,MAAM,UAAU,CAAC,SAAS,EAAE,kBAAkB,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;IAClH,CAAC,CAAC,CAAA;IAEJ,GAAG;SACA,OAAO,CAAC,2BAA2B,EAAE,mCAAmC,CAAC;SACzE,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC,CAAC;SAC7E,MAAM,CAAC,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC,CAAC;SACtF,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;QACnC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpC,GAAG,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAA;YAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;QAC5F,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;QAElG,MAAM,UAAU,CACd,SAAS,EACT,iBAAiB,EACjB,OAAO,CAAC,OAAO,EACf,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CACrG,CAAA;IACH,CAAC,CAAC,CAAA;IAEJ,GAAG;SACA,OAAO,CAAC,iBAAiB,EAAE,wBAAwB,CAAC;SACpD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QACnD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,YAAY,EAAE,CAAA;QAC1C,IAAI,MAAM,YAAY,KAAK;YAAE,kBAAkB,CAAC,MAAM,CAAC,CAAA;QAEvD,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QACrB,GAAG,CAAC,OAAO,CAAC,WAAW,MAAM,CAAC,KAAK,iBAAiB,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;AACN,CAAC"}
|