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/auth.js
CHANGED
|
@@ -1,26 +1,20 @@
|
|
|
1
1
|
// OAuth2 authentication module for zele.
|
|
2
2
|
// Multi-account support: tokens are stored in the Prisma-managed SQLite DB
|
|
3
|
-
// (accounts table) keyed by email. Supports login (browser OAuth),
|
|
4
|
-
// token refresh, and helpers to get authenticated GmailClient
|
|
5
|
-
// one or all accounts.
|
|
6
|
-
//
|
|
7
|
-
//
|
|
3
|
+
// (accounts table) keyed by (email, app_id). Supports login (browser OAuth),
|
|
4
|
+
// per-account token refresh, and helpers to get authenticated GmailClient
|
|
5
|
+
// instances for one or all accounts.
|
|
6
|
+
// app_id is the Google OAuth client ID used during login, enabling future
|
|
7
|
+
// support for multiple OAuth apps per email.
|
|
8
8
|
import http from 'node:http';
|
|
9
9
|
import readline from 'node:readline';
|
|
10
|
-
import
|
|
11
|
-
import path from 'node:path';
|
|
12
|
-
import os from 'node:os';
|
|
10
|
+
import { spawn } from 'node:child_process';
|
|
13
11
|
import { OAuth2Client } from 'google-auth-library';
|
|
14
12
|
import fkill from 'fkill';
|
|
15
13
|
import pc from 'picocolors';
|
|
16
14
|
import { getPrisma } from './db.js';
|
|
17
15
|
import { GmailClient } from './gmail-client.js';
|
|
18
16
|
import { CalendarClient } from './calendar-client.js';
|
|
19
|
-
|
|
20
|
-
// Config
|
|
21
|
-
// ---------------------------------------------------------------------------
|
|
22
|
-
const ZELE_DIR = path.join(os.homedir(), '.zele');
|
|
23
|
-
const LEGACY_TOKENS_FILE = path.join(ZELE_DIR, 'tokens.json');
|
|
17
|
+
import * as errore from 'errore';
|
|
24
18
|
// ---------------------------------------------------------------------------
|
|
25
19
|
// Known open-source Google OAuth clients (Desktop app type).
|
|
26
20
|
// All support localhost + OOB redirects. All have Gmail, Calendar, Drive,
|
|
@@ -35,80 +29,75 @@ const OAUTH_CLIENTS = {
|
|
|
35
29
|
thunderbird: {
|
|
36
30
|
clientId: '406964657835-aq8lmia8j95dhl1a2bvharmfk3t1hgqj.apps.googleusercontent.com',
|
|
37
31
|
clientSecret: 'kSmqreRr0qwBWJgbf5Y-PjSU',
|
|
32
|
+
redirectPort: 8089,
|
|
38
33
|
},
|
|
39
34
|
// GNOME Online Accounts — used by Evolution, GNOME Calendar, Nautilus (Drive).
|
|
40
35
|
// Source: github.com/GNOME/gnome-online-accounts/blob/master/meson_options.txt
|
|
41
36
|
gnome: {
|
|
42
37
|
clientId: '44438659992-7kgjeitenc16ssihbtdjbgguch7ju55s.apps.googleusercontent.com',
|
|
43
38
|
clientSecret: '-gMLuQyDiI0XrQS_vx_mhuYF',
|
|
39
|
+
redirectPort: 8089,
|
|
44
40
|
},
|
|
45
41
|
// KDE KAccounts — used by KMail, KOrganizer, Kontact.
|
|
46
42
|
// Source: github.com/KDE/kaccounts-providers google.provider.in
|
|
47
43
|
kde: {
|
|
48
44
|
clientId: '317066460457-pkpkedrvt2ldq6g2hj1egfka2n7vpuoo.apps.googleusercontent.com',
|
|
49
45
|
clientSecret: 'Y8eFAaWfcanV3amZdDvtbYUq',
|
|
46
|
+
redirectPort: 8089,
|
|
50
47
|
},
|
|
51
48
|
};
|
|
52
49
|
const ACTIVE_CLIENT = OAUTH_CLIENTS.thunderbird;
|
|
53
50
|
const CLIENT_ID = process.env.ZELE_CLIENT_ID ?? ACTIVE_CLIENT.clientId;
|
|
54
51
|
const CLIENT_SECRET = process.env.ZELE_CLIENT_SECRET ?? ACTIVE_CLIENT.clientSecret;
|
|
55
|
-
const REDIRECT_PORT = 8089;
|
|
56
52
|
const SCOPES = [
|
|
57
53
|
'https://mail.google.com/', // Gmail (full)
|
|
58
54
|
'https://www.googleapis.com/auth/calendar', // Calendar (full)
|
|
59
55
|
'https://www.googleapis.com/auth/userinfo.email', // Email identity
|
|
60
56
|
];
|
|
61
57
|
// ---------------------------------------------------------------------------
|
|
62
|
-
//
|
|
58
|
+
// OAuth client resolution
|
|
63
59
|
// ---------------------------------------------------------------------------
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
60
|
+
/**
|
|
61
|
+
* Resolve OAuth credentials and redirect port for a given appId.
|
|
62
|
+
* Looks up the matching entry in OAUTH_CLIENTS by client ID.
|
|
63
|
+
* Falls back to the active client / env vars.
|
|
64
|
+
*/
|
|
65
|
+
function resolveOAuthClient(appId) {
|
|
66
|
+
let clientId = CLIENT_ID;
|
|
67
|
+
let clientSecret = CLIENT_SECRET;
|
|
68
|
+
let redirectPort = ACTIVE_CLIENT.redirectPort;
|
|
69
|
+
if (appId) {
|
|
70
|
+
// Look up by client ID value in OAUTH_CLIENTS
|
|
71
|
+
const entry = Object.values(OAUTH_CLIENTS).find((c) => c.clientId === appId);
|
|
72
|
+
if (entry) {
|
|
73
|
+
clientId = entry.clientId;
|
|
74
|
+
clientSecret = entry.clientSecret;
|
|
75
|
+
redirectPort = entry.redirectPort;
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
// Unknown app ID — use it directly (custom client scenario).
|
|
79
|
+
// The caller must have set ZELE_CLIENT_SECRET or the token must
|
|
80
|
+
// already have a refresh_token that works without the secret.
|
|
81
|
+
clientId = appId;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return { clientId, clientSecret, redirectPort };
|
|
70
85
|
}
|
|
71
86
|
// ---------------------------------------------------------------------------
|
|
72
|
-
//
|
|
87
|
+
// OAuth2 client factory
|
|
73
88
|
// ---------------------------------------------------------------------------
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
// We need to discover the email for this token
|
|
87
|
-
const oauth2Client = createOAuth2Client();
|
|
88
|
-
oauth2Client.setCredentials(tokens);
|
|
89
|
-
// Refresh if expired
|
|
90
|
-
if (tokens.expiry_date && tokens.expiry_date < Date.now()) {
|
|
91
|
-
const { credentials } = await oauth2Client.refreshAccessToken();
|
|
92
|
-
oauth2Client.setCredentials(credentials);
|
|
93
|
-
Object.assign(tokens, credentials);
|
|
94
|
-
}
|
|
95
|
-
const client = new GmailClient({ auth: oauth2Client });
|
|
96
|
-
const profile = await client.getProfile();
|
|
97
|
-
const email = profile.emailAddress;
|
|
98
|
-
await prisma.accounts.create({
|
|
99
|
-
data: {
|
|
100
|
-
email,
|
|
101
|
-
tokens: JSON.stringify(tokens),
|
|
102
|
-
updated_at: new Date(),
|
|
103
|
-
},
|
|
104
|
-
});
|
|
105
|
-
// Rename old file so we don't migrate again
|
|
106
|
-
fs.renameSync(LEGACY_TOKENS_FILE, LEGACY_TOKENS_FILE + '.bak');
|
|
107
|
-
process.stderr.write(pc.green(`Migrated legacy tokens for ${email}`) + '\n');
|
|
108
|
-
}
|
|
109
|
-
catch (err) {
|
|
110
|
-
process.stderr.write(pc.yellow(`Warning: legacy token migration failed: ${err}`) + '\n');
|
|
111
|
-
}
|
|
89
|
+
/**
|
|
90
|
+
* Create an OAuth2Client. If appId is provided, looks up the matching
|
|
91
|
+
* client credentials from OAUTH_CLIENTS by client ID. Falls back to
|
|
92
|
+
* the active client / env vars.
|
|
93
|
+
*/
|
|
94
|
+
export function createOAuth2Client(appId) {
|
|
95
|
+
const { clientId, clientSecret, redirectPort } = resolveOAuthClient(appId);
|
|
96
|
+
return new OAuth2Client({
|
|
97
|
+
clientId,
|
|
98
|
+
clientSecret,
|
|
99
|
+
redirectUri: `http://localhost:${redirectPort}`,
|
|
100
|
+
});
|
|
112
101
|
}
|
|
113
102
|
// ---------------------------------------------------------------------------
|
|
114
103
|
// Browser OAuth flow
|
|
@@ -117,41 +106,74 @@ function extractCodeFromInput(input) {
|
|
|
117
106
|
const trimmed = input.trim();
|
|
118
107
|
if (!trimmed)
|
|
119
108
|
return null;
|
|
120
|
-
|
|
121
|
-
|
|
109
|
+
const url = errore.tryFn(() => new URL(trimmed));
|
|
110
|
+
if (!(url instanceof Error)) {
|
|
122
111
|
const code = url.searchParams.get('code');
|
|
123
112
|
if (code)
|
|
124
113
|
return code;
|
|
125
114
|
}
|
|
126
|
-
catch {
|
|
127
|
-
// Not a URL
|
|
128
|
-
}
|
|
129
115
|
if (trimmed.length > 10 && !trimmed.includes(' ')) {
|
|
130
116
|
return trimmed;
|
|
131
117
|
}
|
|
132
118
|
return null;
|
|
133
119
|
}
|
|
134
|
-
|
|
120
|
+
function openUrlInBrowser(url) {
|
|
121
|
+
const command = process.platform === 'darwin'
|
|
122
|
+
? { bin: 'open', args: [url] }
|
|
123
|
+
: process.platform === 'win32'
|
|
124
|
+
? { bin: 'cmd', args: ['/c', 'start', '', url] }
|
|
125
|
+
: { bin: 'xdg-open', args: [url] };
|
|
126
|
+
const child = errore.tryFn(() => spawn(command.bin, command.args, {
|
|
127
|
+
detached: true,
|
|
128
|
+
stdio: 'ignore',
|
|
129
|
+
}));
|
|
130
|
+
if (child instanceof Error) {
|
|
131
|
+
return new Error(`Failed to open browser with ${command.bin}`, { cause: child });
|
|
132
|
+
}
|
|
133
|
+
child.unref();
|
|
134
|
+
}
|
|
135
|
+
async function getAuthCodeFromBrowser(oauth2Client, port, options) {
|
|
136
|
+
const openBrowser = options?.openBrowser ?? true;
|
|
137
|
+
const allowManualCodeEntry = options?.allowManualCodeEntry ?? true;
|
|
138
|
+
const showInstructions = options?.showInstructions ?? true;
|
|
135
139
|
const authUrl = oauth2Client.generateAuthUrl({
|
|
136
140
|
access_type: 'offline',
|
|
137
141
|
scope: SCOPES,
|
|
138
142
|
prompt: 'consent',
|
|
139
143
|
});
|
|
140
|
-
await
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
144
|
+
await errore.tryAsync({
|
|
145
|
+
try: () => fkill(`:${port}`, { force: true, silent: true }),
|
|
146
|
+
catch: (err) => new Error(String(err), { cause: err }),
|
|
147
|
+
});
|
|
148
|
+
if (showInstructions) {
|
|
149
|
+
console.error('\n' + pc.bold('1.') + ' Open this URL to authorize:\n');
|
|
150
|
+
console.error(' ' + pc.cyan(pc.underline(authUrl)) + '\n');
|
|
151
|
+
console.error(pc.bold('2.') + ' If running locally, the browser will redirect automatically.');
|
|
152
|
+
console.error(pc.dim(' If running remotely, the redirect page won\'t load — that\'s fine.'));
|
|
153
|
+
console.error(pc.dim(' Just copy the URL from your browser\'s address bar and paste it below.') + '\n');
|
|
154
|
+
}
|
|
155
|
+
if (openBrowser) {
|
|
156
|
+
const openResult = openUrlInBrowser(authUrl);
|
|
157
|
+
if (openResult instanceof Error && showInstructions) {
|
|
158
|
+
console.error(pc.yellow(`Could not auto-open browser: ${openResult.message}`));
|
|
159
|
+
console.error(pc.dim('Open the URL above manually.'));
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return new Promise((resolve) => {
|
|
147
163
|
let resolved = false;
|
|
148
164
|
let server = null;
|
|
149
165
|
let rl = null;
|
|
166
|
+
function closeServer() {
|
|
167
|
+
if (server) {
|
|
168
|
+
server.closeAllConnections();
|
|
169
|
+
server.close();
|
|
170
|
+
}
|
|
171
|
+
}
|
|
150
172
|
function finish(code) {
|
|
151
173
|
if (resolved)
|
|
152
174
|
return;
|
|
153
175
|
resolved = true;
|
|
154
|
-
|
|
176
|
+
closeServer();
|
|
155
177
|
if (rl) {
|
|
156
178
|
rl.close();
|
|
157
179
|
process.stdin.unref();
|
|
@@ -162,12 +184,12 @@ async function getAuthCodeFromBrowser(oauth2Client) {
|
|
|
162
184
|
if (resolved)
|
|
163
185
|
return;
|
|
164
186
|
resolved = true;
|
|
165
|
-
|
|
187
|
+
closeServer();
|
|
166
188
|
rl?.close();
|
|
167
|
-
|
|
189
|
+
resolve(err);
|
|
168
190
|
}
|
|
169
191
|
server = http.createServer((req, res) => {
|
|
170
|
-
const url = new URL(req.url, `http://localhost:${
|
|
192
|
+
const url = new URL(req.url, `http://localhost:${port}`);
|
|
171
193
|
const code = url.searchParams.get('code');
|
|
172
194
|
const error = url.searchParams.get('error');
|
|
173
195
|
if (error) {
|
|
@@ -185,8 +207,11 @@ async function getAuthCodeFromBrowser(oauth2Client) {
|
|
|
185
207
|
res.writeHead(400, { 'Content-Type': 'text/html' });
|
|
186
208
|
res.end('<h1>No authorization code received</h1>');
|
|
187
209
|
});
|
|
188
|
-
server.listen(
|
|
189
|
-
|
|
210
|
+
server.listen(port);
|
|
211
|
+
server.on('error', (err) => {
|
|
212
|
+
fail(new Error(`Failed to start local auth callback server on port ${port}`, { cause: err }));
|
|
213
|
+
});
|
|
214
|
+
if (allowManualCodeEntry && process.stdin.isTTY) {
|
|
190
215
|
rl = readline.createInterface({ input: process.stdin, output: process.stderr });
|
|
191
216
|
rl.question(pc.dim('Paste redirect URL here (or wait for auto-redirect): '), (answer) => {
|
|
192
217
|
const code = extractCodeFromInput(answer);
|
|
@@ -194,8 +219,8 @@ async function getAuthCodeFromBrowser(oauth2Client) {
|
|
|
194
219
|
finish(code);
|
|
195
220
|
}
|
|
196
221
|
else {
|
|
197
|
-
|
|
198
|
-
|
|
222
|
+
console.error(pc.yellow('Could not extract authorization code from input.'));
|
|
223
|
+
console.error(pc.dim('Waiting for browser redirect...'));
|
|
199
224
|
}
|
|
200
225
|
});
|
|
201
226
|
}
|
|
@@ -206,42 +231,72 @@ async function getAuthCodeFromBrowser(oauth2Client) {
|
|
|
206
231
|
// ---------------------------------------------------------------------------
|
|
207
232
|
/**
|
|
208
233
|
* Run the full browser OAuth flow and save the account to the DB.
|
|
209
|
-
* Returns
|
|
234
|
+
* Returns either a successful login payload or an Error value.
|
|
210
235
|
*/
|
|
211
|
-
export async function login() {
|
|
212
|
-
const
|
|
213
|
-
const
|
|
214
|
-
|
|
215
|
-
|
|
236
|
+
export async function login(appId, options) {
|
|
237
|
+
const resolved = resolveOAuthClient(appId);
|
|
238
|
+
const oauth2Client = createOAuth2Client(appId);
|
|
239
|
+
const code = await getAuthCodeFromBrowser(oauth2Client, resolved.redirectPort, options);
|
|
240
|
+
if (code instanceof Error)
|
|
241
|
+
return code;
|
|
242
|
+
if (options?.showInstructions ?? true) {
|
|
243
|
+
console.error(pc.dim('Got authorization code, exchanging for tokens...'));
|
|
244
|
+
}
|
|
245
|
+
const tokenResponse = await errore.tryAsync({
|
|
246
|
+
try: () => oauth2Client.getToken(code),
|
|
247
|
+
catch: (err) => new Error('Failed to exchange authorization code for tokens', { cause: err }),
|
|
248
|
+
});
|
|
249
|
+
if (tokenResponse instanceof Error)
|
|
250
|
+
return tokenResponse;
|
|
251
|
+
const { tokens } = tokenResponse;
|
|
216
252
|
oauth2Client.setCredentials(tokens);
|
|
217
253
|
// Discover email
|
|
218
254
|
const client = new GmailClient({ auth: oauth2Client });
|
|
219
255
|
const profile = await client.getProfile();
|
|
256
|
+
if (profile instanceof Error)
|
|
257
|
+
return profile;
|
|
220
258
|
const email = profile.emailAddress;
|
|
221
259
|
// Upsert account in DB
|
|
222
260
|
const prisma = await getPrisma();
|
|
223
|
-
await
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
261
|
+
const upsertResult = await errore.tryAsync({
|
|
262
|
+
try: () => prisma.account.upsert({
|
|
263
|
+
where: { email_appId: { email, appId: resolved.clientId } },
|
|
264
|
+
create: {
|
|
265
|
+
email,
|
|
266
|
+
appId: resolved.clientId,
|
|
267
|
+
accountStatus: 'active',
|
|
268
|
+
tokens: JSON.stringify(tokens),
|
|
269
|
+
createdAt: new Date(),
|
|
270
|
+
updatedAt: new Date(),
|
|
271
|
+
},
|
|
272
|
+
update: { tokens: JSON.stringify(tokens), updatedAt: new Date() },
|
|
273
|
+
}),
|
|
274
|
+
catch: (err) => new Error(`Failed to save account ${email}`, { cause: err }),
|
|
227
275
|
});
|
|
228
|
-
|
|
276
|
+
if (upsertResult instanceof Error)
|
|
277
|
+
return upsertResult;
|
|
278
|
+
return { email, appId: resolved.clientId, client };
|
|
229
279
|
}
|
|
230
280
|
// ---------------------------------------------------------------------------
|
|
231
281
|
// Logout: remove account from DB
|
|
232
282
|
// ---------------------------------------------------------------------------
|
|
233
283
|
export async function logout(email) {
|
|
234
284
|
const prisma = await getPrisma();
|
|
235
|
-
|
|
285
|
+
// Delete all app_id entries for this email (logout removes all credentials for the email)
|
|
286
|
+
const result = await errore.tryAsync({
|
|
287
|
+
try: () => prisma.account.deleteMany({ where: { email } }),
|
|
288
|
+
catch: (err) => new Error(`Failed to remove credentials for ${email}`, { cause: err }),
|
|
289
|
+
});
|
|
290
|
+
if (result instanceof Error)
|
|
291
|
+
return result;
|
|
236
292
|
}
|
|
237
293
|
// ---------------------------------------------------------------------------
|
|
238
294
|
// Account listing
|
|
239
295
|
// ---------------------------------------------------------------------------
|
|
240
296
|
export async function listAccounts() {
|
|
241
|
-
await migrateLegacyTokens();
|
|
242
297
|
const prisma = await getPrisma();
|
|
243
|
-
const rows = await prisma.
|
|
244
|
-
return rows.map((r) => r.email);
|
|
298
|
+
const rows = await prisma.account.findMany({ select: { email: true, appId: true } });
|
|
299
|
+
return rows.map((r) => ({ email: r.email, appId: r.appId }));
|
|
245
300
|
}
|
|
246
301
|
// ---------------------------------------------------------------------------
|
|
247
302
|
// Get authenticated clients
|
|
@@ -249,26 +304,29 @@ export async function listAccounts() {
|
|
|
249
304
|
/**
|
|
250
305
|
* Create an authenticated OAuth2Client for a known account.
|
|
251
306
|
* Loads tokens from DB, refreshes if expired, saves refreshed tokens back.
|
|
307
|
+
* Uses the stored app_id to create the OAuth2 client with the correct credentials.
|
|
252
308
|
*/
|
|
253
|
-
async function authenticateAccount(
|
|
309
|
+
async function authenticateAccount(account) {
|
|
254
310
|
const prisma = await getPrisma();
|
|
255
|
-
const row = await prisma.
|
|
311
|
+
const row = await prisma.account.findUnique({
|
|
312
|
+
where: { email_appId: { email: account.email, appId: account.appId } },
|
|
313
|
+
});
|
|
256
314
|
if (!row) {
|
|
257
|
-
throw new Error(`No account found for ${email}. Run: zele login`);
|
|
315
|
+
throw new Error(`No account found for ${account.email}. Run: zele login`);
|
|
258
316
|
}
|
|
259
317
|
const tokens = JSON.parse(row.tokens);
|
|
260
|
-
const oauth2Client = createOAuth2Client();
|
|
318
|
+
const oauth2Client = createOAuth2Client(account.appId);
|
|
261
319
|
oauth2Client.setCredentials(tokens);
|
|
262
320
|
// Refresh if expired — merge to preserve refresh_token which Google
|
|
263
321
|
// often omits from refresh responses
|
|
264
322
|
if (tokens.expiry_date && tokens.expiry_date < Date.now()) {
|
|
265
|
-
|
|
323
|
+
console.error(pc.dim(`Token expired for ${account.email}, refreshing...`));
|
|
266
324
|
const { credentials } = await oauth2Client.refreshAccessToken();
|
|
267
325
|
const merged = { ...tokens, ...credentials };
|
|
268
326
|
oauth2Client.setCredentials(merged);
|
|
269
|
-
await prisma.
|
|
270
|
-
where: { email },
|
|
271
|
-
data: { tokens: JSON.stringify(merged),
|
|
327
|
+
await prisma.account.update({
|
|
328
|
+
where: { email_appId: { email: account.email, appId: account.appId } },
|
|
329
|
+
data: { tokens: JSON.stringify(merged), updatedAt: new Date() },
|
|
272
330
|
});
|
|
273
331
|
}
|
|
274
332
|
return oauth2Client;
|
|
@@ -278,21 +336,20 @@ async function authenticateAccount(email) {
|
|
|
278
336
|
* If no accounts are registered, throws with a helpful message.
|
|
279
337
|
*/
|
|
280
338
|
export async function getClients(accounts) {
|
|
281
|
-
await
|
|
282
|
-
|
|
283
|
-
if (allEmails.length === 0) {
|
|
339
|
+
const allAccounts = await listAccounts();
|
|
340
|
+
if (allAccounts.length === 0) {
|
|
284
341
|
throw new Error('No accounts registered. Run: zele login');
|
|
285
342
|
}
|
|
286
|
-
const
|
|
287
|
-
?
|
|
288
|
-
:
|
|
289
|
-
if (
|
|
290
|
-
const available =
|
|
343
|
+
const filtered = accounts && accounts.length > 0
|
|
344
|
+
? allAccounts.filter((a) => accounts.includes(a.email))
|
|
345
|
+
: allAccounts;
|
|
346
|
+
if (filtered.length === 0) {
|
|
347
|
+
const available = allAccounts.map((a) => a.email).join(', ');
|
|
291
348
|
throw new Error(`No matching accounts. Available: ${available}`);
|
|
292
349
|
}
|
|
293
|
-
const results = await Promise.all(
|
|
294
|
-
const auth = await authenticateAccount(
|
|
295
|
-
return { email, client: new GmailClient({ auth }) };
|
|
350
|
+
const results = await Promise.all(filtered.map(async (account) => {
|
|
351
|
+
const auth = await authenticateAccount(account);
|
|
352
|
+
return { email: account.email, appId: account.appId, client: new GmailClient({ auth, account }) };
|
|
296
353
|
}));
|
|
297
354
|
return results;
|
|
298
355
|
}
|
|
@@ -315,24 +372,23 @@ export async function getClient(accounts) {
|
|
|
315
372
|
* Get authenticated CalendarClient instances for all accounts (or filtered by email list).
|
|
316
373
|
*/
|
|
317
374
|
export async function getCalendarClients(accounts) {
|
|
318
|
-
await
|
|
319
|
-
|
|
320
|
-
if (allEmails.length === 0) {
|
|
375
|
+
const allAccounts = await listAccounts();
|
|
376
|
+
if (allAccounts.length === 0) {
|
|
321
377
|
throw new Error('No accounts registered. Run: zele login');
|
|
322
378
|
}
|
|
323
|
-
const
|
|
324
|
-
?
|
|
325
|
-
:
|
|
326
|
-
if (
|
|
327
|
-
const available =
|
|
379
|
+
const filtered = accounts && accounts.length > 0
|
|
380
|
+
? allAccounts.filter((a) => accounts.includes(a.email))
|
|
381
|
+
: allAccounts;
|
|
382
|
+
if (filtered.length === 0) {
|
|
383
|
+
const available = allAccounts.map((a) => a.email).join(', ');
|
|
328
384
|
throw new Error(`No matching accounts. Available: ${available}`);
|
|
329
385
|
}
|
|
330
|
-
const results = await Promise.all(
|
|
331
|
-
const auth = await authenticateAccount(
|
|
386
|
+
const results = await Promise.all(filtered.map(async (account) => {
|
|
387
|
+
const auth = await authenticateAccount(account);
|
|
332
388
|
const { token } = await auth.getAccessToken();
|
|
333
389
|
if (!token)
|
|
334
|
-
throw new Error(`Failed to get access token for ${email}`);
|
|
335
|
-
return { email, client: new CalendarClient({ accessToken: token, email }) };
|
|
390
|
+
throw new Error(`Failed to get access token for ${account.email}`);
|
|
391
|
+
return { email: account.email, appId: account.appId, client: new CalendarClient({ accessToken: token, email: account.email, appId: account.appId }) };
|
|
336
392
|
}));
|
|
337
393
|
return results;
|
|
338
394
|
}
|
|
@@ -349,13 +405,13 @@ export async function getCalendarClient(accounts) {
|
|
|
349
405
|
throw new Error(`Multiple accounts matched. Specify --account:\n ${emails}`);
|
|
350
406
|
}
|
|
351
407
|
export async function getAuthStatuses() {
|
|
352
|
-
await migrateLegacyTokens();
|
|
353
408
|
const prisma = await getPrisma();
|
|
354
|
-
const rows = await prisma.
|
|
409
|
+
const rows = await prisma.account.findMany();
|
|
355
410
|
return rows.map((row) => {
|
|
356
411
|
const tokens = JSON.parse(row.tokens);
|
|
357
412
|
return {
|
|
358
413
|
email: row.email,
|
|
414
|
+
appId: row.appId,
|
|
359
415
|
expiresAt: tokens.expiry_date ? new Date(tokens.expiry_date) : undefined,
|
|
360
416
|
};
|
|
361
417
|
});
|
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { AuthError, ApiError, NotFoundError, ParseError, MissingDataError } from './api-utils.js';
|
|
1
2
|
export interface CalendarListItem {
|
|
2
3
|
id: string;
|
|
3
4
|
summary: string;
|
|
@@ -57,19 +58,25 @@ export interface FreeBusyResult {
|
|
|
57
58
|
export declare class CalendarClient {
|
|
58
59
|
private headers;
|
|
59
60
|
private email;
|
|
61
|
+
private appId;
|
|
60
62
|
private calendarCache;
|
|
61
63
|
private timezoneCache;
|
|
62
|
-
constructor({ accessToken, email }: {
|
|
64
|
+
constructor({ accessToken, email, appId }: {
|
|
63
65
|
accessToken: string;
|
|
64
66
|
email: string;
|
|
67
|
+
appId: string;
|
|
65
68
|
});
|
|
66
69
|
/** Update the access token (e.g. after refresh) */
|
|
67
70
|
updateAccessToken(token: string): void;
|
|
71
|
+
private get account();
|
|
72
|
+
private getCachedCalendarList;
|
|
73
|
+
private cacheCalendarListData;
|
|
74
|
+
private invalidateCalendarLists;
|
|
68
75
|
private fetchDAVCalendars;
|
|
69
76
|
/** Resolve a calendarId to a DAVCalendar. 'primary' maps to the user's email. */
|
|
70
77
|
private resolveCalendar;
|
|
71
|
-
listCalendars(): Promise<CalendarListItem[]>;
|
|
72
|
-
getTimezone(calendarId?: string): Promise<string>;
|
|
78
|
+
listCalendars(): Promise<CalendarListItem[] | AuthError | ApiError>;
|
|
79
|
+
getTimezone(calendarId?: string): Promise<string | AuthError | ApiError | NotFoundError>;
|
|
73
80
|
listEvents({ calendarId, timeMin, timeMax, query, maxResults, pageToken, }?: {
|
|
74
81
|
calendarId?: string;
|
|
75
82
|
timeMin?: string;
|
|
@@ -77,11 +84,11 @@ export declare class CalendarClient {
|
|
|
77
84
|
query?: string;
|
|
78
85
|
maxResults?: number;
|
|
79
86
|
pageToken?: string;
|
|
80
|
-
}): Promise<EventListResult>;
|
|
87
|
+
}): Promise<EventListResult | AuthError | ApiError | NotFoundError>;
|
|
81
88
|
getEvent({ calendarId, eventId, }: {
|
|
82
89
|
calendarId?: string;
|
|
83
90
|
eventId: string;
|
|
84
|
-
}): Promise<CalendarEvent>;
|
|
91
|
+
}): Promise<CalendarEvent | AuthError | ApiError | NotFoundError>;
|
|
85
92
|
createEvent({ calendarId, summary, start, end, allDay, description, location, attendees, withMeet, recurrence, reminders, colorId, visibility, transparency, }: {
|
|
86
93
|
calendarId?: string;
|
|
87
94
|
summary: string;
|
|
@@ -100,7 +107,7 @@ export declare class CalendarClient {
|
|
|
100
107
|
colorId?: string;
|
|
101
108
|
visibility?: string;
|
|
102
109
|
transparency?: string;
|
|
103
|
-
}): Promise<CalendarEvent>;
|
|
110
|
+
}): Promise<CalendarEvent | AuthError | ApiError | NotFoundError | ParseError>;
|
|
104
111
|
updateEvent({ calendarId, eventId, summary, start, end, allDay, description, location, addAttendees, removeAttendees, withMeet, colorId, visibility, transparency, }: {
|
|
105
112
|
calendarId?: string;
|
|
106
113
|
eventId: string;
|
|
@@ -116,17 +123,17 @@ export declare class CalendarClient {
|
|
|
116
123
|
colorId?: string;
|
|
117
124
|
visibility?: string;
|
|
118
125
|
transparency?: string;
|
|
119
|
-
}): Promise<CalendarEvent>;
|
|
126
|
+
}): Promise<CalendarEvent | AuthError | ApiError | NotFoundError | MissingDataError | ParseError>;
|
|
120
127
|
deleteEvent({ calendarId, eventId, }: {
|
|
121
128
|
calendarId?: string;
|
|
122
129
|
eventId: string;
|
|
123
|
-
}): Promise<void>;
|
|
130
|
+
}): Promise<void | AuthError | ApiError | NotFoundError | MissingDataError>;
|
|
124
131
|
respondToEvent({ calendarId, eventId, status, comment, }: {
|
|
125
132
|
calendarId?: string;
|
|
126
133
|
eventId: string;
|
|
127
134
|
status: 'accepted' | 'declined' | 'tentative';
|
|
128
135
|
comment?: string;
|
|
129
|
-
}): Promise<CalendarEvent>;
|
|
136
|
+
}): Promise<CalendarEvent | AuthError | ApiError | NotFoundError | MissingDataError | ParseError>;
|
|
130
137
|
getFreeBusy({ calendarIds, timeMin, timeMax, }: {
|
|
131
138
|
calendarIds: string[];
|
|
132
139
|
timeMin: string;
|