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
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=threads.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"threads.js","sourceRoot":"","sources":["../../../src/generated/models/threads.ts"],"names":[],"mappings":""}
@@ -1,60 +0,0 @@
1
- export declare const TTL: {
2
- readonly THREAD_LIST: number;
3
- readonly THREAD: number;
4
- readonly LABELS: number;
5
- readonly PROFILE: number;
6
- readonly LABEL_COUNTS: number;
7
- readonly CALENDAR_LIST: number;
8
- readonly CALENDAR_EVENTS: number;
9
- };
10
- export declare function cacheThreadList(email: string, params: {
11
- folder?: string;
12
- query?: string;
13
- maxResults?: number;
14
- labelIds?: string[];
15
- pageToken?: string;
16
- }, data: unknown): Promise<void>;
17
- export declare function getCachedThreadList<T = unknown>(email: string, params: {
18
- folder?: string;
19
- query?: string;
20
- maxResults?: number;
21
- labelIds?: string[];
22
- pageToken?: string;
23
- }): Promise<T | undefined>;
24
- export declare function invalidateThreadLists(email: string): Promise<void>;
25
- export declare function cacheThread(email: string, threadId: string, data: unknown): Promise<void>;
26
- export declare function getCachedThread<T = unknown>(email: string, threadId: string): Promise<T | undefined>;
27
- export declare function invalidateThread(email: string, threadId: string): Promise<void>;
28
- export declare function invalidateThreads(email: string, threadIds: string[]): Promise<void>;
29
- export declare function cacheLabels(email: string, data: unknown): Promise<void>;
30
- export declare function getCachedLabels<T = unknown>(email: string): Promise<T | undefined>;
31
- export declare function invalidateLabels(email: string): Promise<void>;
32
- export declare function cacheLabelCounts(email: string, data: unknown): Promise<void>;
33
- export declare function getCachedLabelCounts<T = unknown>(email: string): Promise<T | undefined>;
34
- export declare function invalidateLabelCounts(email: string): Promise<void>;
35
- export declare function cacheProfile(email: string, data: unknown): Promise<void>;
36
- export declare function getCachedProfile<T = unknown>(email: string): Promise<T | undefined>;
37
- export declare function getLastHistoryId(email: string): Promise<string | undefined>;
38
- export declare function setLastHistoryId(email: string, historyId: string): Promise<void>;
39
- export declare function cacheCalendarList(email: string, data: unknown): Promise<void>;
40
- export declare function getCachedCalendarList<T = unknown>(email: string): Promise<T | undefined>;
41
- export declare function invalidateCalendarLists(email: string): Promise<void>;
42
- export declare function cacheCalendarEvents(email: string, params: {
43
- calendarId?: string;
44
- timeMin?: string;
45
- timeMax?: string;
46
- query?: string;
47
- maxResults?: number;
48
- pageToken?: string;
49
- }, data: unknown): Promise<void>;
50
- export declare function getCachedCalendarEvents<T = unknown>(email: string, params: {
51
- calendarId?: string;
52
- timeMin?: string;
53
- timeMax?: string;
54
- query?: string;
55
- maxResults?: number;
56
- pageToken?: string;
57
- }): Promise<T | undefined>;
58
- export declare function invalidateCalendarEvents(email: string, calendarId?: string): Promise<void>;
59
- export declare function clearExpired(): Promise<void>;
60
- export declare function clearAll(email: string): Promise<void>;
@@ -1,264 +0,0 @@
1
- // Prisma-based cache for Gmail API responses.
2
- // Each cache entry is scoped to an account email. TTL-based expiry is checked
3
- // at read time. All methods are async (Prisma is async).
4
- // Single SQLite DB shared across all accounts via the Prisma singleton.
5
- import { getPrisma } from './db.js';
6
- // TTL constants in milliseconds
7
- export const TTL = {
8
- THREAD_LIST: 5 * 60 * 1000, // 5 minutes
9
- THREAD: 30 * 60 * 1000, // 30 minutes
10
- LABELS: 30 * 60 * 1000, // 30 minutes
11
- PROFILE: 24 * 60 * 60 * 1000, // 24 hours
12
- LABEL_COUNTS: 2 * 60 * 1000, // 2 minutes
13
- CALENDAR_LIST: 30 * 60 * 1000, // 30 minutes
14
- CALENDAR_EVENTS: 5 * 60 * 1000, // 5 minutes
15
- };
16
- function isExpired(createdAt, ttlMs) {
17
- return createdAt.getTime() + ttlMs < Date.now();
18
- }
19
- // ---------------------------------------------------------------------------
20
- // Thread list cache
21
- // ---------------------------------------------------------------------------
22
- export async function cacheThreadList(email, params, data) {
23
- const prisma = await getPrisma();
24
- const where = {
25
- email,
26
- folder: params.folder ?? '',
27
- query: params.query ?? '',
28
- label_ids: params.labelIds?.join(',') ?? '',
29
- page_token: params.pageToken ?? '',
30
- max_results: params.maxResults ?? 0,
31
- };
32
- await prisma.thread_lists.upsert({
33
- where: { email_folder_query_label_ids_page_token_max_results: where },
34
- create: { ...where, data: JSON.stringify(data), ttl_ms: TTL.THREAD_LIST },
35
- update: { data: JSON.stringify(data), ttl_ms: TTL.THREAD_LIST, created_at: new Date() },
36
- });
37
- }
38
- export async function getCachedThreadList(email, params) {
39
- const prisma = await getPrisma();
40
- const row = await prisma.thread_lists.findUnique({
41
- where: {
42
- email_folder_query_label_ids_page_token_max_results: {
43
- email,
44
- folder: params.folder ?? '',
45
- query: params.query ?? '',
46
- label_ids: params.labelIds?.join(',') ?? '',
47
- page_token: params.pageToken ?? '',
48
- max_results: params.maxResults ?? 0,
49
- },
50
- },
51
- });
52
- if (!row || isExpired(row.created_at, row.ttl_ms))
53
- return undefined;
54
- return JSON.parse(row.data);
55
- }
56
- export async function invalidateThreadLists(email) {
57
- const prisma = await getPrisma();
58
- await prisma.thread_lists.deleteMany({ where: { email } });
59
- }
60
- // ---------------------------------------------------------------------------
61
- // Individual thread cache
62
- // ---------------------------------------------------------------------------
63
- export async function cacheThread(email, threadId, data) {
64
- const prisma = await getPrisma();
65
- await prisma.threads.upsert({
66
- where: { email_thread_id: { email, thread_id: threadId } },
67
- create: { email, thread_id: threadId, data: JSON.stringify(data), ttl_ms: TTL.THREAD },
68
- update: { data: JSON.stringify(data), ttl_ms: TTL.THREAD, created_at: new Date() },
69
- });
70
- }
71
- export async function getCachedThread(email, threadId) {
72
- const prisma = await getPrisma();
73
- const row = await prisma.threads.findUnique({
74
- where: { email_thread_id: { email, thread_id: threadId } },
75
- });
76
- if (!row || isExpired(row.created_at, row.ttl_ms))
77
- return undefined;
78
- return JSON.parse(row.data);
79
- }
80
- export async function invalidateThread(email, threadId) {
81
- const prisma = await getPrisma();
82
- await prisma.threads.deleteMany({ where: { email, thread_id: threadId } });
83
- }
84
- export async function invalidateThreads(email, threadIds) {
85
- const prisma = await getPrisma();
86
- await prisma.threads.deleteMany({ where: { email, thread_id: { in: threadIds } } });
87
- }
88
- // ---------------------------------------------------------------------------
89
- // Labels cache
90
- // ---------------------------------------------------------------------------
91
- export async function cacheLabels(email, data) {
92
- const prisma = await getPrisma();
93
- await prisma.labels.upsert({
94
- where: { email },
95
- create: { email, data: JSON.stringify(data), ttl_ms: TTL.LABELS },
96
- update: { data: JSON.stringify(data), ttl_ms: TTL.LABELS, created_at: new Date() },
97
- });
98
- }
99
- export async function getCachedLabels(email) {
100
- const prisma = await getPrisma();
101
- const row = await prisma.labels.findUnique({ where: { email } });
102
- if (!row || isExpired(row.created_at, row.ttl_ms))
103
- return undefined;
104
- return JSON.parse(row.data);
105
- }
106
- export async function invalidateLabels(email) {
107
- const prisma = await getPrisma();
108
- await prisma.labels.deleteMany({ where: { email } });
109
- }
110
- // ---------------------------------------------------------------------------
111
- // Label counts cache
112
- // ---------------------------------------------------------------------------
113
- export async function cacheLabelCounts(email, data) {
114
- const prisma = await getPrisma();
115
- await prisma.label_counts.upsert({
116
- where: { email },
117
- create: { email, data: JSON.stringify(data), ttl_ms: TTL.LABEL_COUNTS },
118
- update: { data: JSON.stringify(data), ttl_ms: TTL.LABEL_COUNTS, created_at: new Date() },
119
- });
120
- }
121
- export async function getCachedLabelCounts(email) {
122
- const prisma = await getPrisma();
123
- const row = await prisma.label_counts.findUnique({ where: { email } });
124
- if (!row || isExpired(row.created_at, row.ttl_ms))
125
- return undefined;
126
- return JSON.parse(row.data);
127
- }
128
- export async function invalidateLabelCounts(email) {
129
- const prisma = await getPrisma();
130
- await prisma.label_counts.deleteMany({ where: { email } });
131
- }
132
- // ---------------------------------------------------------------------------
133
- // Profile cache
134
- // ---------------------------------------------------------------------------
135
- export async function cacheProfile(email, data) {
136
- const prisma = await getPrisma();
137
- await prisma.profiles.upsert({
138
- where: { email },
139
- create: { email, data: JSON.stringify(data), ttl_ms: TTL.PROFILE },
140
- update: { data: JSON.stringify(data), ttl_ms: TTL.PROFILE, created_at: new Date() },
141
- });
142
- }
143
- export async function getCachedProfile(email) {
144
- const prisma = await getPrisma();
145
- const row = await prisma.profiles.findUnique({ where: { email } });
146
- if (!row || isExpired(row.created_at, row.ttl_ms))
147
- return undefined;
148
- return JSON.parse(row.data);
149
- }
150
- // ---------------------------------------------------------------------------
151
- // Sync state (persistent, no TTL)
152
- // ---------------------------------------------------------------------------
153
- export async function getLastHistoryId(email) {
154
- const prisma = await getPrisma();
155
- const row = await prisma.sync_states.findUnique({
156
- where: { email_key: { email, key: 'history_id' } },
157
- });
158
- return row?.value;
159
- }
160
- export async function setLastHistoryId(email, historyId) {
161
- const prisma = await getPrisma();
162
- await prisma.sync_states.upsert({
163
- where: { email_key: { email, key: 'history_id' } },
164
- create: { email, key: 'history_id', value: historyId },
165
- update: { value: historyId },
166
- });
167
- }
168
- // ---------------------------------------------------------------------------
169
- // Calendar list cache
170
- // ---------------------------------------------------------------------------
171
- export async function cacheCalendarList(email, data) {
172
- const prisma = await getPrisma();
173
- await prisma.calendar_lists.upsert({
174
- where: { email },
175
- create: { email, data: JSON.stringify(data), ttl_ms: TTL.CALENDAR_LIST },
176
- update: { data: JSON.stringify(data), ttl_ms: TTL.CALENDAR_LIST, created_at: new Date() },
177
- });
178
- }
179
- export async function getCachedCalendarList(email) {
180
- const prisma = await getPrisma();
181
- const row = await prisma.calendar_lists.findUnique({ where: { email } });
182
- if (!row || isExpired(row.created_at, row.ttl_ms))
183
- return undefined;
184
- return JSON.parse(row.data);
185
- }
186
- export async function invalidateCalendarLists(email) {
187
- const prisma = await getPrisma();
188
- await prisma.calendar_lists.deleteMany({ where: { email } });
189
- }
190
- // ---------------------------------------------------------------------------
191
- // Calendar events cache
192
- // ---------------------------------------------------------------------------
193
- export async function cacheCalendarEvents(email, params, data) {
194
- const prisma = await getPrisma();
195
- const where = {
196
- email,
197
- calendar_id: params.calendarId ?? '',
198
- time_min: params.timeMin ?? '',
199
- time_max: params.timeMax ?? '',
200
- query: params.query ?? '',
201
- max_results: params.maxResults ?? 0,
202
- page_token: params.pageToken ?? '',
203
- };
204
- await prisma.calendar_events.upsert({
205
- where: { email_calendar_id_time_min_time_max_query_max_results_page_token: where },
206
- create: { ...where, data: JSON.stringify(data), ttl_ms: TTL.CALENDAR_EVENTS },
207
- update: { data: JSON.stringify(data), ttl_ms: TTL.CALENDAR_EVENTS, created_at: new Date() },
208
- });
209
- }
210
- export async function getCachedCalendarEvents(email, params) {
211
- const prisma = await getPrisma();
212
- const row = await prisma.calendar_events.findUnique({
213
- where: {
214
- email_calendar_id_time_min_time_max_query_max_results_page_token: {
215
- email,
216
- calendar_id: params.calendarId ?? '',
217
- time_min: params.timeMin ?? '',
218
- time_max: params.timeMax ?? '',
219
- query: params.query ?? '',
220
- max_results: params.maxResults ?? 0,
221
- page_token: params.pageToken ?? '',
222
- },
223
- },
224
- });
225
- if (!row || isExpired(row.created_at, row.ttl_ms))
226
- return undefined;
227
- return JSON.parse(row.data);
228
- }
229
- export async function invalidateCalendarEvents(email, calendarId) {
230
- const prisma = await getPrisma();
231
- if (calendarId) {
232
- await prisma.calendar_events.deleteMany({ where: { email, calendar_id: calendarId } });
233
- }
234
- else {
235
- await prisma.calendar_events.deleteMany({ where: { email } });
236
- }
237
- }
238
- // ---------------------------------------------------------------------------
239
- // Housekeeping
240
- // ---------------------------------------------------------------------------
241
- export async function clearExpired() {
242
- const prisma = await getPrisma();
243
- const now = Date.now();
244
- // Use raw SQL for the timestamp arithmetic across all cache tables
245
- await prisma.$executeRawUnsafe(`DELETE FROM thread_lists WHERE (strftime('%s', created_at) * 1000 + ttl_ms) < ?`, now);
246
- await prisma.$executeRawUnsafe(`DELETE FROM threads WHERE (strftime('%s', created_at) * 1000 + ttl_ms) < ?`, now);
247
- await prisma.$executeRawUnsafe(`DELETE FROM labels WHERE (strftime('%s', created_at) * 1000 + ttl_ms) < ?`, now);
248
- await prisma.$executeRawUnsafe(`DELETE FROM label_counts WHERE (strftime('%s', created_at) * 1000 + ttl_ms) < ?`, now);
249
- await prisma.$executeRawUnsafe(`DELETE FROM profiles WHERE (strftime('%s', created_at) * 1000 + ttl_ms) < ?`, now);
250
- await prisma.$executeRawUnsafe(`DELETE FROM calendar_lists WHERE (strftime('%s', created_at) * 1000 + ttl_ms) < ?`, now);
251
- await prisma.$executeRawUnsafe(`DELETE FROM calendar_events WHERE (strftime('%s', created_at) * 1000 + ttl_ms) < ?`, now);
252
- }
253
- export async function clearAll(email) {
254
- const prisma = await getPrisma();
255
- await prisma.thread_lists.deleteMany({ where: { email } });
256
- await prisma.threads.deleteMany({ where: { email } });
257
- await prisma.labels.deleteMany({ where: { email } });
258
- await prisma.label_counts.deleteMany({ where: { email } });
259
- await prisma.profiles.deleteMany({ where: { email } });
260
- await prisma.sync_states.deleteMany({ where: { email } });
261
- await prisma.calendar_lists.deleteMany({ where: { email } });
262
- await prisma.calendar_events.deleteMany({ where: { email } });
263
- }
264
- //# sourceMappingURL=gmail-cache.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gmail-cache.js","sourceRoot":"","sources":["../src/gmail-cache.ts"],"names":[],"mappings":"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"}