@bobfrankston/rmfmail 1.1.152 → 1.1.154
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/client/styles/components.css +9 -0
- package/package.json +3 -3
- package/packages/mailx-imap/index.js +3 -3
- package/packages/mailx-imap/index.js.map +1 -1
- package/packages/mailx-imap/index.ts +3 -3
- package/packages/mailx-imap/package-lock.json +2 -2
- package/packages/mailx-imap/package.json +1 -1
- package/packages/mailx-settings/cloud.d.ts.map +1 -1
- package/packages/mailx-settings/cloud.js +94 -1
- package/packages/mailx-settings/cloud.js.map +1 -1
- package/packages/mailx-settings/cloud.ts +81 -1
- package/packages/mailx-settings/index.d.ts +19 -0
- package/packages/mailx-settings/index.d.ts.map +1 -1
- package/packages/mailx-settings/index.js +37 -0
- package/packages/mailx-settings/index.js.map +1 -1
- package/packages/mailx-settings/index.ts +37 -0
- package/packages/mailx-settings/package.json +1 -1
- /package/packages/mailx-imap/{node_modules.npmglobalize-stash-63236 → node_modules.npmglobalize-stash-48792}/.package-lock.json +0 -0
|
@@ -8,7 +8,7 @@ import { createAutoImapConfig, CompatImapClient } from "@bobfrankston/iflow-dire
|
|
|
8
8
|
import type { TransportFactory } from "@bobfrankston/tcp-transport";
|
|
9
9
|
import { authenticateOAuth } from "@bobfrankston/oauthsupport";
|
|
10
10
|
import { MailxDB, FileMessageStore, parseSerial, fixCharsetDeclString, storeBus, Store } from "@bobfrankston/mailx-store";
|
|
11
|
-
import { loadSettings, getStorePath, getConfigDir, getHistoryDays, getPrefetch } from "@bobfrankston/mailx-settings";
|
|
11
|
+
import { loadSettings, getStorePath, getConfigDir, getHistoryDays, getPrefetch, tokenDirName } from "@bobfrankston/mailx-settings";
|
|
12
12
|
import type { AccountConfig, MessageEnvelope, EmailAddress, Folder } from "@bobfrankston/mailx-types";
|
|
13
13
|
import { EventEmitter } from "node:events";
|
|
14
14
|
import * as fs from "node:fs";
|
|
@@ -349,7 +349,7 @@ export class ImapManager extends EventEmitter {
|
|
|
349
349
|
if (stopWatcher) { try { await stopWatcher(); } catch { /* */ } this.watchers.delete(accountId); }
|
|
350
350
|
|
|
351
351
|
// Delete only the IMAP token (not contacts — separate scope, separate consent)
|
|
352
|
-
const accountDir = account.imap.user
|
|
352
|
+
const accountDir = tokenDirName(account.imap.user);
|
|
353
353
|
const tokenDir = path.join(getConfigDir(), "tokens", accountDir);
|
|
354
354
|
const tokenPath = path.join(tokenDir, "token.json");
|
|
355
355
|
if (fs.existsSync(tokenPath)) { fs.unlinkSync(tokenPath); console.log(` [reauth] Deleted ${tokenPath}`); }
|
|
@@ -756,7 +756,7 @@ export class ImapManager extends EventEmitter {
|
|
|
756
756
|
}
|
|
757
757
|
} catch { /* iflow-direct not resolvable */ }
|
|
758
758
|
}
|
|
759
|
-
const tokenDir = path.join(getConfigDir(), "tokens", account.imap.user
|
|
759
|
+
const tokenDir = path.join(getConfigDir(), "tokens", tokenDirName(account.imap.user));
|
|
760
760
|
tokenProvider = async () => {
|
|
761
761
|
// Wall-clock timeout on OAuth. Use a longer timeout when no
|
|
762
762
|
// cached token exists (first auth needs user to click through
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bobfrankston/mailx-imap",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.63",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@bobfrankston/mailx-imap",
|
|
9
|
-
"version": "0.1.
|
|
9
|
+
"version": "0.1.63",
|
|
10
10
|
"license": "ISC",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@bobfrankston/iflow-direct": "^0.1.27",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud.d.ts","sourceRoot":"","sources":["cloud.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;
|
|
1
|
+
{"version":3,"file":"cloud.d.ts","sourceRoot":"","sources":["cloud.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAoPH;;;;;;;;;oDASoD;AACpD,wBAAsB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA8BnF;AAcD;;;;;;;;;;;;;;;;;6CAiB6C;AAC7C,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAwBvE;AA6FD,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE1D,MAAM,WAAW,SAAS;IACtB,kFAAkF;IAClF,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC/C,uGAAuG;IACvG,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,8BAA8B;IAC9B,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC9C;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAuBtF;AAED;;;;2DAI2D;AAC3D,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAoBvG"}
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
import fs from "node:fs";
|
|
20
20
|
import path from "node:path";
|
|
21
21
|
import { authenticateOAuth } from "@bobfrankston/oauthsupport";
|
|
22
|
+
import { loadAccounts, tokenDirName } from "./index.js";
|
|
22
23
|
const SETTINGS_DIR = path.join(process.env.USERPROFILE || process.env.HOME || ".", ".rmfmail");
|
|
23
24
|
// ── Credentials ──
|
|
24
25
|
// Google Drive: reuse iflow's OAuth credentials (same Google Cloud project)
|
|
@@ -55,19 +56,111 @@ const GDRIVE_TOKEN_DIR = path.join(SETTINGS_DIR, "tokens", "gdrive");
|
|
|
55
56
|
// bigger privacy ask. Token cache at tokens/gdrive/ will re-auth on scope change.
|
|
56
57
|
const GDRIVE_SCOPES = "https://www.googleapis.com/auth/drive";
|
|
57
58
|
// ── Token helpers ──
|
|
59
|
+
/** One-time-per-process archive pass: move every token directory that
|
|
60
|
+
* doesn't correspond to a currently-configured account into
|
|
61
|
+
* `tokens/.archive/<original-name>/`. Without this, `cloud.ts` would
|
|
62
|
+
* walk all token dirs in `~/.rmfmail/tokens/` — including leftovers from
|
|
63
|
+
* past setups (a Gmail address typed with a dot creates one dir, the
|
|
64
|
+
* same mailbox without the dot creates another) — and trigger a fresh
|
|
65
|
+
* OAuth flow on a stale dir that can't refresh, looping the user through
|
|
66
|
+
* consent forever (Bob 2026-05-25). Archived dirs are recoverable: move
|
|
67
|
+
* them back if I guessed wrong about which is stale. */
|
|
68
|
+
let _staleArchiveRun = false;
|
|
69
|
+
function archiveStaleTokenDirs(activeDirs) {
|
|
70
|
+
if (_staleArchiveRun)
|
|
71
|
+
return;
|
|
72
|
+
_staleArchiveRun = true;
|
|
73
|
+
const tokensDir = path.join(SETTINGS_DIR, "tokens");
|
|
74
|
+
if (!fs.existsSync(tokensDir))
|
|
75
|
+
return;
|
|
76
|
+
const archiveRoot = path.join(tokensDir, ".archive");
|
|
77
|
+
let archived = 0;
|
|
78
|
+
try {
|
|
79
|
+
for (const entry of fs.readdirSync(tokensDir)) {
|
|
80
|
+
// Preserve: special sub-dirs, the archive itself, all active entries.
|
|
81
|
+
if (entry === "gdrive" || entry === ".archive")
|
|
82
|
+
continue;
|
|
83
|
+
if (entry.startsWith("."))
|
|
84
|
+
continue;
|
|
85
|
+
if (activeDirs.has(entry))
|
|
86
|
+
continue;
|
|
87
|
+
const src = path.join(tokensDir, entry);
|
|
88
|
+
try {
|
|
89
|
+
if (!fs.statSync(src).isDirectory())
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
const stamp = new Date().toISOString().replace(/[:.]/g, "-").slice(0, 19);
|
|
96
|
+
const dst = path.join(archiveRoot, `${stamp}-${entry}`);
|
|
97
|
+
try {
|
|
98
|
+
fs.mkdirSync(archiveRoot, { recursive: true });
|
|
99
|
+
fs.renameSync(src, dst);
|
|
100
|
+
console.log(` [cloud] Archived stale token dir: ${entry} → .archive/${path.basename(dst)}`);
|
|
101
|
+
archived++;
|
|
102
|
+
}
|
|
103
|
+
catch (e) {
|
|
104
|
+
console.error(` [cloud] Failed to archive ${entry}: ${e?.message || e}`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
catch (e) {
|
|
109
|
+
console.error(` [cloud] tokens dir scan failed: ${e?.message || e}`);
|
|
110
|
+
}
|
|
111
|
+
if (archived > 0) {
|
|
112
|
+
console.log(` [cloud] Stale token cleanup: ${archived} dir(s) archived to tokens/.archive/`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/** Compute the set of token dir names corresponding to currently-configured
|
|
116
|
+
* accounts. Used to decide which token dirs are "active" vs orphans. */
|
|
117
|
+
function activeTokenDirs() {
|
|
118
|
+
const active = new Set();
|
|
119
|
+
try {
|
|
120
|
+
const accts = loadAccounts();
|
|
121
|
+
for (const a of accts) {
|
|
122
|
+
const u = a.imap?.user || a.email;
|
|
123
|
+
if (u)
|
|
124
|
+
active.add(tokenDirName(u));
|
|
125
|
+
// Also the email address itself — covers accounts where imap.user
|
|
126
|
+
// differs (e.g. iecc.com uses "bobf2" as user but the email is
|
|
127
|
+
// bob@bob.ma; tokens are keyed by the auth identity).
|
|
128
|
+
if (a.email)
|
|
129
|
+
active.add(tokenDirName(a.email));
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
catch { /* accounts.jsonc unreadable — treat all as active (safe default) */ }
|
|
133
|
+
return active;
|
|
134
|
+
}
|
|
58
135
|
/** Get a GDrive-capable token. Prefers the Gmail token (which now includes
|
|
59
136
|
* drive scope) — avoids a second OAuth consent prompt. Falls back to the
|
|
60
137
|
* dedicated GDrive token dir for non-Gmail setups or when Gmail token
|
|
61
138
|
* doesn't have drive scope yet. */
|
|
62
139
|
async function getGoogleDriveToken() {
|
|
140
|
+
// Archive stale token dirs once per process before iteration. Cheap and
|
|
141
|
+
// self-healing — any future stray dir gets stashed out of the loop.
|
|
142
|
+
const active = activeTokenDirs();
|
|
143
|
+
if (active.size > 0)
|
|
144
|
+
archiveStaleTokenDirs(active);
|
|
63
145
|
// Strategy 1: reuse a Gmail token that already has drive scope.
|
|
64
146
|
// Scan the tokens/ dir for any account token with drive in its scope.
|
|
65
147
|
const tokensDir = path.join(SETTINGS_DIR, "tokens");
|
|
66
148
|
if (fs.existsSync(tokensDir)) {
|
|
67
149
|
try {
|
|
68
150
|
for (const entry of fs.readdirSync(tokensDir)) {
|
|
69
|
-
if (entry === "gdrive")
|
|
151
|
+
if (entry === "gdrive" || entry === ".archive")
|
|
152
|
+
continue;
|
|
153
|
+
if (entry.startsWith("."))
|
|
70
154
|
continue;
|
|
155
|
+
// Only consider dirs that match a currently-configured account.
|
|
156
|
+
// Loads the gating logic before the iteration above (`active`)
|
|
157
|
+
// already excluded orphans by moving them — this is belt-and-
|
|
158
|
+
// braces for the case where loadAccounts() returned empty
|
|
159
|
+
// (e.g. accounts.jsonc unreadable) and we skipped archiving.
|
|
160
|
+
if (active.size > 0 && !active.has(entry)) {
|
|
161
|
+
console.log(` [cloud] Skipping non-configured token dir: ${entry}`);
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
71
164
|
const tokenPath = path.join(tokensDir, entry, "oauth-token.json");
|
|
72
165
|
if (!fs.existsSync(tokenPath))
|
|
73
166
|
continue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud.js","sourceRoot":"","sources":["cloud.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cloud.js","sourceRoot":"","sources":["cloud.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
import fs from "node:fs";
|
|
21
21
|
import path from "node:path";
|
|
22
22
|
import { authenticateOAuth } from "@bobfrankston/oauthsupport";
|
|
23
|
+
import { loadAccounts, tokenDirName } from "./index.js";
|
|
23
24
|
|
|
24
25
|
const SETTINGS_DIR = path.join(process.env.USERPROFILE || process.env.HOME || ".", ".rmfmail");
|
|
25
26
|
|
|
@@ -58,18 +59,97 @@ const GDRIVE_SCOPES = "https://www.googleapis.com/auth/drive";
|
|
|
58
59
|
|
|
59
60
|
// ── Token helpers ──
|
|
60
61
|
|
|
62
|
+
/** One-time-per-process archive pass: move every token directory that
|
|
63
|
+
* doesn't correspond to a currently-configured account into
|
|
64
|
+
* `tokens/.archive/<original-name>/`. Without this, `cloud.ts` would
|
|
65
|
+
* walk all token dirs in `~/.rmfmail/tokens/` — including leftovers from
|
|
66
|
+
* past setups (a Gmail address typed with a dot creates one dir, the
|
|
67
|
+
* same mailbox without the dot creates another) — and trigger a fresh
|
|
68
|
+
* OAuth flow on a stale dir that can't refresh, looping the user through
|
|
69
|
+
* consent forever (Bob 2026-05-25). Archived dirs are recoverable: move
|
|
70
|
+
* them back if I guessed wrong about which is stale. */
|
|
71
|
+
let _staleArchiveRun = false;
|
|
72
|
+
function archiveStaleTokenDirs(activeDirs: Set<string>): void {
|
|
73
|
+
if (_staleArchiveRun) return;
|
|
74
|
+
_staleArchiveRun = true;
|
|
75
|
+
const tokensDir = path.join(SETTINGS_DIR, "tokens");
|
|
76
|
+
if (!fs.existsSync(tokensDir)) return;
|
|
77
|
+
const archiveRoot = path.join(tokensDir, ".archive");
|
|
78
|
+
let archived = 0;
|
|
79
|
+
try {
|
|
80
|
+
for (const entry of fs.readdirSync(tokensDir)) {
|
|
81
|
+
// Preserve: special sub-dirs, the archive itself, all active entries.
|
|
82
|
+
if (entry === "gdrive" || entry === ".archive") continue;
|
|
83
|
+
if (entry.startsWith(".")) continue;
|
|
84
|
+
if (activeDirs.has(entry)) continue;
|
|
85
|
+
const src = path.join(tokensDir, entry);
|
|
86
|
+
try {
|
|
87
|
+
if (!fs.statSync(src).isDirectory()) continue;
|
|
88
|
+
} catch { continue; }
|
|
89
|
+
const stamp = new Date().toISOString().replace(/[:.]/g, "-").slice(0, 19);
|
|
90
|
+
const dst = path.join(archiveRoot, `${stamp}-${entry}`);
|
|
91
|
+
try {
|
|
92
|
+
fs.mkdirSync(archiveRoot, { recursive: true });
|
|
93
|
+
fs.renameSync(src, dst);
|
|
94
|
+
console.log(` [cloud] Archived stale token dir: ${entry} → .archive/${path.basename(dst)}`);
|
|
95
|
+
archived++;
|
|
96
|
+
} catch (e: any) {
|
|
97
|
+
console.error(` [cloud] Failed to archive ${entry}: ${e?.message || e}`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
} catch (e: any) {
|
|
101
|
+
console.error(` [cloud] tokens dir scan failed: ${e?.message || e}`);
|
|
102
|
+
}
|
|
103
|
+
if (archived > 0) {
|
|
104
|
+
console.log(` [cloud] Stale token cleanup: ${archived} dir(s) archived to tokens/.archive/`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/** Compute the set of token dir names corresponding to currently-configured
|
|
109
|
+
* accounts. Used to decide which token dirs are "active" vs orphans. */
|
|
110
|
+
function activeTokenDirs(): Set<string> {
|
|
111
|
+
const active = new Set<string>();
|
|
112
|
+
try {
|
|
113
|
+
const accts = loadAccounts();
|
|
114
|
+
for (const a of accts) {
|
|
115
|
+
const u = (a as any).imap?.user || (a as any).email;
|
|
116
|
+
if (u) active.add(tokenDirName(u));
|
|
117
|
+
// Also the email address itself — covers accounts where imap.user
|
|
118
|
+
// differs (e.g. iecc.com uses "bobf2" as user but the email is
|
|
119
|
+
// bob@bob.ma; tokens are keyed by the auth identity).
|
|
120
|
+
if ((a as any).email) active.add(tokenDirName((a as any).email));
|
|
121
|
+
}
|
|
122
|
+
} catch { /* accounts.jsonc unreadable — treat all as active (safe default) */ }
|
|
123
|
+
return active;
|
|
124
|
+
}
|
|
125
|
+
|
|
61
126
|
/** Get a GDrive-capable token. Prefers the Gmail token (which now includes
|
|
62
127
|
* drive scope) — avoids a second OAuth consent prompt. Falls back to the
|
|
63
128
|
* dedicated GDrive token dir for non-Gmail setups or when Gmail token
|
|
64
129
|
* doesn't have drive scope yet. */
|
|
65
130
|
async function getGoogleDriveToken(): Promise<string | null> {
|
|
131
|
+
// Archive stale token dirs once per process before iteration. Cheap and
|
|
132
|
+
// self-healing — any future stray dir gets stashed out of the loop.
|
|
133
|
+
const active = activeTokenDirs();
|
|
134
|
+
if (active.size > 0) archiveStaleTokenDirs(active);
|
|
135
|
+
|
|
66
136
|
// Strategy 1: reuse a Gmail token that already has drive scope.
|
|
67
137
|
// Scan the tokens/ dir for any account token with drive in its scope.
|
|
68
138
|
const tokensDir = path.join(SETTINGS_DIR, "tokens");
|
|
69
139
|
if (fs.existsSync(tokensDir)) {
|
|
70
140
|
try {
|
|
71
141
|
for (const entry of fs.readdirSync(tokensDir)) {
|
|
72
|
-
if (entry === "gdrive") continue;
|
|
142
|
+
if (entry === "gdrive" || entry === ".archive") continue;
|
|
143
|
+
if (entry.startsWith(".")) continue;
|
|
144
|
+
// Only consider dirs that match a currently-configured account.
|
|
145
|
+
// Loads the gating logic before the iteration above (`active`)
|
|
146
|
+
// already excluded orphans by moving them — this is belt-and-
|
|
147
|
+
// braces for the case where loadAccounts() returned empty
|
|
148
|
+
// (e.g. accounts.jsonc unreadable) and we skipped archiving.
|
|
149
|
+
if (active.size > 0 && !active.has(entry)) {
|
|
150
|
+
console.log(` [cloud] Skipping non-configured token dir: ${entry}`);
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
73
153
|
const tokenPath = path.join(tokensDir, entry, "oauth-token.json");
|
|
74
154
|
if (!fs.existsSync(tokenPath)) continue;
|
|
75
155
|
try {
|
|
@@ -43,6 +43,25 @@ export declare function getStorageInfo(): {
|
|
|
43
43
|
configDir?: string;
|
|
44
44
|
cloudError?: string;
|
|
45
45
|
};
|
|
46
|
+
/** Canonical form of an email address — applies provider-specific
|
|
47
|
+
* equivalences so two superficially-different strings that resolve to the
|
|
48
|
+
* SAME mailbox produce the same canonical key. Today: Gmail (and
|
|
49
|
+
* googlemail.com) ignores dots in the local-part and treats everything
|
|
50
|
+
* from `+` onward as a tag — `Bob.Frankston+work@Gmail.com`,
|
|
51
|
+
* `bobfrankston@gmail.com`, and `BOBFRANKSTON@GOOGLEMAIL.COM` all collapse
|
|
52
|
+
* to `bobfrankston@gmail.com`. Other domains: lowercase only. Used by the
|
|
53
|
+
* OAuth token cache so a Gmail account doesn't end up with two parallel
|
|
54
|
+
* token directories (one with dots, one without) racing each other and
|
|
55
|
+
* triggering full reauth (Bob 2026-05-25).
|
|
56
|
+
*
|
|
57
|
+
* Output is suitable for direct comparison; for filesystem dir names use
|
|
58
|
+
* `tokenDirName(email)` which applies the `[@.]/_` sanitization on top. */
|
|
59
|
+
export declare function canonicalEmail(email: string): string;
|
|
60
|
+
/** Compute the OAuth token-cache directory name for an email address.
|
|
61
|
+
* Canonicalizes first (so Gmail dot/`+tag`/case variants share one dir),
|
|
62
|
+
* then sanitizes `@`/`.` to `_`. Use everywhere a token cache path is
|
|
63
|
+
* derived from an email so all code paths land on the same directory. */
|
|
64
|
+
export declare function tokenDirName(email: string): string;
|
|
46
65
|
/** Fill in provider defaults for an account based on email domain.
|
|
47
66
|
* Exported so mailx-service's leanAccountsJsonc helper can reuse the same
|
|
48
67
|
* canonicalization rules that loadAccounts uses. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
|
|
@@ -489,6 +489,43 @@ const PROVIDERS = {
|
|
|
489
489
|
smtp: { host: "smtp.mail.me.com", port: 587, tls: true, auth: "password" },
|
|
490
490
|
},
|
|
491
491
|
};
|
|
492
|
+
/** Canonical form of an email address — applies provider-specific
|
|
493
|
+
* equivalences so two superficially-different strings that resolve to the
|
|
494
|
+
* SAME mailbox produce the same canonical key. Today: Gmail (and
|
|
495
|
+
* googlemail.com) ignores dots in the local-part and treats everything
|
|
496
|
+
* from `+` onward as a tag — `Bob.Frankston+work@Gmail.com`,
|
|
497
|
+
* `bobfrankston@gmail.com`, and `BOBFRANKSTON@GOOGLEMAIL.COM` all collapse
|
|
498
|
+
* to `bobfrankston@gmail.com`. Other domains: lowercase only. Used by the
|
|
499
|
+
* OAuth token cache so a Gmail account doesn't end up with two parallel
|
|
500
|
+
* token directories (one with dots, one without) racing each other and
|
|
501
|
+
* triggering full reauth (Bob 2026-05-25).
|
|
502
|
+
*
|
|
503
|
+
* Output is suitable for direct comparison; for filesystem dir names use
|
|
504
|
+
* `tokenDirName(email)` which applies the `[@.]/_` sanitization on top. */
|
|
505
|
+
export function canonicalEmail(email) {
|
|
506
|
+
const s = (email || "").trim().toLowerCase();
|
|
507
|
+
const at = s.indexOf("@");
|
|
508
|
+
if (at < 0)
|
|
509
|
+
return s;
|
|
510
|
+
let local = s.slice(0, at);
|
|
511
|
+
const domain = s.slice(at + 1);
|
|
512
|
+
const isGmail = domain === "gmail.com" || domain === "googlemail.com";
|
|
513
|
+
if (isGmail) {
|
|
514
|
+
const plus = local.indexOf("+");
|
|
515
|
+
if (plus >= 0)
|
|
516
|
+
local = local.slice(0, plus);
|
|
517
|
+
local = local.replace(/\./g, "");
|
|
518
|
+
return `${local}@gmail.com`;
|
|
519
|
+
}
|
|
520
|
+
return `${local}@${domain}`;
|
|
521
|
+
}
|
|
522
|
+
/** Compute the OAuth token-cache directory name for an email address.
|
|
523
|
+
* Canonicalizes first (so Gmail dot/`+tag`/case variants share one dir),
|
|
524
|
+
* then sanitizes `@`/`.` to `_`. Use everywhere a token cache path is
|
|
525
|
+
* derived from an email so all code paths land on the same directory. */
|
|
526
|
+
export function tokenDirName(email) {
|
|
527
|
+
return canonicalEmail(email).replace(/[@.]/g, "_");
|
|
528
|
+
}
|
|
492
529
|
/** Fill in provider defaults for an account based on email domain.
|
|
493
530
|
* Exported so mailx-service's leanAccountsJsonc helper can reuse the same
|
|
494
531
|
* canonicalization rules that loadAccounts uses. */
|