run402 2.20.1 → 2.21.0
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/lib/email.mjs +35 -16
- package/lib/webhooks.mjs +27 -16
- package/package.json +1 -1
- package/sdk/dist/namespaces/email.d.ts +65 -16
- package/sdk/dist/namespaces/email.d.ts.map +1 -1
- package/sdk/dist/namespaces/email.js +105 -106
- package/sdk/dist/namespaces/email.js.map +1 -1
package/lib/email.mjs
CHANGED
|
@@ -20,7 +20,7 @@ Subcommands:
|
|
|
20
20
|
Fetch raw RFC-822 bytes (inbound only)
|
|
21
21
|
reply <message_id> --html "..." [--text "..."] [--subject "..."] [--from-name "..."] [--project <id>]
|
|
22
22
|
Reply to an inbound message (threads via In-Reply-To)
|
|
23
|
-
delete [<mailbox_id>] --confirm [--project <id>]
|
|
23
|
+
delete [<slug|mailbox_id>] --confirm [--project <id>]
|
|
24
24
|
Delete the project's mailbox (irreversible)
|
|
25
25
|
webhooks <action> [args...] Manage webhooks (see below)
|
|
26
26
|
|
|
@@ -38,6 +38,13 @@ Send modes:
|
|
|
38
38
|
Raw HTML: --subject "..." --html "..." [--text "..."] (both --subject and --html required)
|
|
39
39
|
Both modes support: --from-name "Display Name" --project <id>
|
|
40
40
|
|
|
41
|
+
Choosing a mailbox:
|
|
42
|
+
--mailbox <slug|id> Target a specific mailbox. Accepted by send, list, get,
|
|
43
|
+
get-raw, reply, info, and webhooks. Required when the
|
|
44
|
+
project has more than one mailbox; omit it only when the
|
|
45
|
+
project has exactly one. (delete takes the target as its
|
|
46
|
+
positional <slug|mailbox_id>.)
|
|
47
|
+
|
|
41
48
|
Templates:
|
|
42
49
|
project_invite — requires --var project_name=... --var invite_url=...
|
|
43
50
|
magic_link — requires --var project_name=... --var link_url=... --var expires_in=...
|
|
@@ -58,7 +65,7 @@ Examples:
|
|
|
58
65
|
run402 email webhooks register --url https://example.com/hook --events delivery,bounced
|
|
59
66
|
|
|
60
67
|
Notes:
|
|
61
|
-
-
|
|
68
|
+
- Up to 5 mailboxes per project — pass --mailbox <slug|id> to pick one
|
|
62
69
|
- Single recipient per send (no CC/BCC)
|
|
63
70
|
- Slug: 3-63 chars, lowercase alphanumeric + hyphens, no consecutive hyphens
|
|
64
71
|
- --project defaults to the active project
|
|
@@ -82,12 +89,13 @@ Options:
|
|
|
82
89
|
--html "..." HTML body (raw HTML mode; required with --subject)
|
|
83
90
|
--text "..." Plain-text body (raw HTML mode; optional)
|
|
84
91
|
--from-name "..." Display name for the From header
|
|
92
|
+
--mailbox <slug|id> Target mailbox (required if the project has more than one)
|
|
85
93
|
--project <id> Project ID (defaults to the active project)
|
|
86
94
|
`,
|
|
87
95
|
list: `run402 email list — List messages in the mailbox
|
|
88
96
|
|
|
89
97
|
Usage:
|
|
90
|
-
run402 email list [--limit <n>] [--after <cursor>] [--project <id>]
|
|
98
|
+
run402 email list [--mailbox <slug|id>] [--limit <n>] [--after <cursor>] [--project <id>]
|
|
91
99
|
`,
|
|
92
100
|
reply: `run402 email reply — Reply to an inbound message (threaded via In-Reply-To)
|
|
93
101
|
|
|
@@ -97,7 +105,7 @@ Usage:
|
|
|
97
105
|
delete: `run402 email delete — Delete the project's mailbox (irreversible)
|
|
98
106
|
|
|
99
107
|
Usage:
|
|
100
|
-
run402 email delete [<mailbox_id>] --confirm [--project <id>]
|
|
108
|
+
run402 email delete [<slug|mailbox_id>] --confirm [--project <id>]
|
|
101
109
|
`,
|
|
102
110
|
info: `run402 email info — Show mailbox info (ID, address, slug)
|
|
103
111
|
|
|
@@ -131,7 +139,7 @@ Options:
|
|
|
131
139
|
--project <id> Project ID (defaults to the active project)
|
|
132
140
|
|
|
133
141
|
Notes:
|
|
134
|
-
-
|
|
142
|
+
- Up to 5 mailboxes per project (create distinct slugs, e.g. sign, support)
|
|
135
143
|
|
|
136
144
|
Examples:
|
|
137
145
|
run402 email create my-app
|
|
@@ -229,7 +237,7 @@ async function create(args) {
|
|
|
229
237
|
}
|
|
230
238
|
|
|
231
239
|
async function send(args) {
|
|
232
|
-
const valueFlags = ["--template", "--to", "--subject", "--html", "--text", "--from-name", "--project", "--vars", "--var"];
|
|
240
|
+
const valueFlags = ["--template", "--to", "--subject", "--html", "--text", "--from-name", "--project", "--vars", "--var", "--mailbox"];
|
|
233
241
|
validateArgs(args, valueFlags);
|
|
234
242
|
const template = strictFlagValue(args, "--template");
|
|
235
243
|
const to = strictFlagValue(args, "--to");
|
|
@@ -237,6 +245,7 @@ async function send(args) {
|
|
|
237
245
|
const html = strictFlagValue(args, "--html");
|
|
238
246
|
const text = strictFlagValue(args, "--text");
|
|
239
247
|
const fromName = strictFlagValue(args, "--from-name");
|
|
248
|
+
const mailbox = strictFlagValue(args, "--mailbox");
|
|
240
249
|
const projectId = resolveProjectId(strictFlagValue(args, "--project"));
|
|
241
250
|
const variables = parseVars(args);
|
|
242
251
|
|
|
@@ -253,6 +262,7 @@ async function send(args) {
|
|
|
253
262
|
html: html ?? undefined,
|
|
254
263
|
text: text ?? undefined,
|
|
255
264
|
from_name: fromName ?? undefined,
|
|
265
|
+
mailbox: mailbox ?? undefined,
|
|
256
266
|
});
|
|
257
267
|
console.log(JSON.stringify({ message_id: data.message_id, to: data.to, template: data.template, subject: data.subject, sent: true }));
|
|
258
268
|
} catch (err) {
|
|
@@ -261,15 +271,17 @@ async function send(args) {
|
|
|
261
271
|
}
|
|
262
272
|
|
|
263
273
|
async function list(args) {
|
|
264
|
-
const valueFlags = ["--project", "--limit", "--after"];
|
|
274
|
+
const valueFlags = ["--project", "--limit", "--after", "--mailbox"];
|
|
265
275
|
validateArgs(args, valueFlags);
|
|
266
276
|
const projectId = resolveProjectId(strictFlagValue(args, "--project"));
|
|
267
277
|
const limit = strictFlagValue(args, "--limit");
|
|
268
278
|
const after = strictFlagValue(args, "--after");
|
|
279
|
+
const mailbox = strictFlagValue(args, "--mailbox");
|
|
269
280
|
try {
|
|
270
281
|
const data = await getSdk().email.list(projectId, {
|
|
271
282
|
limit: limit ? parseIntegerFlag("--limit", limit) : undefined,
|
|
272
283
|
after: after ?? undefined,
|
|
284
|
+
mailbox: mailbox ?? undefined,
|
|
273
285
|
});
|
|
274
286
|
console.log(JSON.stringify(data, null, 2));
|
|
275
287
|
} catch (err) {
|
|
@@ -278,9 +290,11 @@ async function list(args) {
|
|
|
278
290
|
}
|
|
279
291
|
|
|
280
292
|
async function get(args) {
|
|
281
|
-
|
|
282
|
-
|
|
293
|
+
const valueFlags = ["--project", "--mailbox"];
|
|
294
|
+
validateArgs(args, valueFlags);
|
|
295
|
+
const messageId = positionalArgs(args, valueFlags)[0] ?? null;
|
|
283
296
|
const projectId = resolveProjectId(strictFlagValue(args, "--project"));
|
|
297
|
+
const mailbox = strictFlagValue(args, "--mailbox");
|
|
284
298
|
if (!messageId) {
|
|
285
299
|
fail({
|
|
286
300
|
code: "BAD_USAGE",
|
|
@@ -289,7 +303,7 @@ async function get(args) {
|
|
|
289
303
|
});
|
|
290
304
|
}
|
|
291
305
|
try {
|
|
292
|
-
const data = await getSdk().email.get(projectId, messageId);
|
|
306
|
+
const data = await getSdk().email.get(projectId, messageId, { mailbox: mailbox ?? undefined });
|
|
293
307
|
console.log(JSON.stringify(data, null, 2));
|
|
294
308
|
} catch (err) {
|
|
295
309
|
reportSdkError(err);
|
|
@@ -297,10 +311,11 @@ async function get(args) {
|
|
|
297
311
|
}
|
|
298
312
|
|
|
299
313
|
async function getRaw(args) {
|
|
300
|
-
const valueFlags = ["--project", "--output"];
|
|
314
|
+
const valueFlags = ["--project", "--output", "--mailbox"];
|
|
301
315
|
validateArgs(args, valueFlags);
|
|
302
316
|
const messageId = positionalArgs(args, valueFlags)[0] ?? null;
|
|
303
317
|
const outputFile = strictFlagValue(args, "--output");
|
|
318
|
+
const mailbox = strictFlagValue(args, "--mailbox");
|
|
304
319
|
const projectId = resolveProjectId(strictFlagValue(args, "--project"));
|
|
305
320
|
if (!messageId) {
|
|
306
321
|
fail({
|
|
@@ -311,7 +326,7 @@ async function getRaw(args) {
|
|
|
311
326
|
}
|
|
312
327
|
|
|
313
328
|
try {
|
|
314
|
-
const result = await getSdk().email.getRaw(projectId, messageId);
|
|
329
|
+
const result = await getSdk().email.getRaw(projectId, messageId, { mailbox: mailbox ?? undefined });
|
|
315
330
|
const buf = Buffer.from(result.bytes);
|
|
316
331
|
|
|
317
332
|
if (outputFile) {
|
|
@@ -327,13 +342,14 @@ async function getRaw(args) {
|
|
|
327
342
|
}
|
|
328
343
|
|
|
329
344
|
async function reply(args) {
|
|
330
|
-
const valueFlags = ["--project", "--html", "--text", "--subject", "--from-name"];
|
|
345
|
+
const valueFlags = ["--project", "--html", "--text", "--subject", "--from-name", "--mailbox"];
|
|
331
346
|
validateArgs(args, valueFlags);
|
|
332
347
|
const messageId = positionalArgs(args, valueFlags)[0] ?? null;
|
|
333
348
|
const html = strictFlagValue(args, "--html");
|
|
334
349
|
const text = strictFlagValue(args, "--text");
|
|
335
350
|
const subjectOverride = strictFlagValue(args, "--subject");
|
|
336
351
|
const fromName = strictFlagValue(args, "--from-name");
|
|
352
|
+
const mailbox = strictFlagValue(args, "--mailbox");
|
|
337
353
|
const projectId = resolveProjectId(strictFlagValue(args, "--project"));
|
|
338
354
|
|
|
339
355
|
if (!messageId) {
|
|
@@ -352,7 +368,7 @@ async function reply(args) {
|
|
|
352
368
|
|
|
353
369
|
try {
|
|
354
370
|
// Fetch the original message to derive the reply-to address and subject.
|
|
355
|
-
const original = await getSdk().email.get(projectId, messageId);
|
|
371
|
+
const original = await getSdk().email.get(projectId, messageId, { mailbox: mailbox ?? undefined });
|
|
356
372
|
const replyTo = original.from || original.from_address || original.sender || null;
|
|
357
373
|
if (!replyTo) {
|
|
358
374
|
fail({
|
|
@@ -374,6 +390,7 @@ async function reply(args) {
|
|
|
374
390
|
text: text ?? undefined,
|
|
375
391
|
from_name: fromName ?? undefined,
|
|
376
392
|
in_reply_to: messageId,
|
|
393
|
+
mailbox: mailbox ?? undefined,
|
|
377
394
|
});
|
|
378
395
|
console.log(JSON.stringify({ message_id: data.message_id, to: data.to, subject: replySubject, in_reply_to: messageId, sent: true }));
|
|
379
396
|
} catch (err) {
|
|
@@ -403,10 +420,12 @@ async function deleteMailbox(args) {
|
|
|
403
420
|
}
|
|
404
421
|
|
|
405
422
|
async function status(args) {
|
|
406
|
-
|
|
423
|
+
const valueFlags = ["--project", "--mailbox"];
|
|
424
|
+
validateArgs(args, valueFlags);
|
|
407
425
|
const projectId = resolveProjectId(strictFlagValue(args, "--project"));
|
|
426
|
+
const mailbox = strictFlagValue(args, "--mailbox");
|
|
408
427
|
try {
|
|
409
|
-
const mb = await getSdk().email.getMailbox(projectId);
|
|
428
|
+
const mb = await getSdk().email.getMailbox(projectId, mailbox ?? undefined);
|
|
410
429
|
console.log(JSON.stringify({ mailbox_id: mb.mailbox_id, address: mb.address, slug: mb.slug }));
|
|
411
430
|
} catch (err) {
|
|
412
431
|
reportSdkError(err);
|
package/lib/webhooks.mjs
CHANGED
|
@@ -9,14 +9,16 @@ Usage:
|
|
|
9
9
|
run402 email webhooks <action> [args...]
|
|
10
10
|
|
|
11
11
|
Actions:
|
|
12
|
-
list [--project <id>]
|
|
13
|
-
get <webhook_id> [--project <id>]
|
|
14
|
-
delete <webhook_id> [--project <id>]
|
|
15
|
-
update <webhook_id> [--url <url>] [--events <e1,e2>]
|
|
16
|
-
register --url <url> --events <e1,e2> [--project <id>]
|
|
12
|
+
list [--mailbox <slug|id>] [--project <id>] List webhooks
|
|
13
|
+
get <webhook_id> [--mailbox <slug|id>] [--project <id>] Get a webhook
|
|
14
|
+
delete <webhook_id> [--mailbox <slug|id>] [--project <id>] Delete a webhook
|
|
15
|
+
update <webhook_id> [--url <url>] [--events <e1,e2>] [--mailbox <slug|id>] Update a webhook
|
|
16
|
+
register --url <url> --events <e1,e2> [--mailbox <slug|id>] [--project <id>] Register a new webhook
|
|
17
17
|
|
|
18
18
|
Valid events: delivery, bounced, complained, reply_received
|
|
19
19
|
|
|
20
|
+
Pass --mailbox <slug|id> to target a specific mailbox when the project has more than one.
|
|
21
|
+
|
|
20
22
|
Examples:
|
|
21
23
|
run402 email webhooks list
|
|
22
24
|
run402 email webhooks register --url https://example.com/hook --events delivery,bounced
|
|
@@ -67,10 +69,12 @@ function validateArgs(args, knownFlags, flagsWithValues = knownFlags) {
|
|
|
67
69
|
}
|
|
68
70
|
|
|
69
71
|
async function list(args) {
|
|
70
|
-
|
|
72
|
+
const valueFlags = ["--project", "--mailbox"];
|
|
73
|
+
validateArgs(args, valueFlags);
|
|
71
74
|
const projectId = resolveProjectId(strictFlagValue(args, "--project"));
|
|
75
|
+
const mailbox = strictFlagValue(args, "--mailbox");
|
|
72
76
|
try {
|
|
73
|
-
const data = await getSdk().email.webhooks.list(projectId);
|
|
77
|
+
const data = await getSdk().email.webhooks.list(projectId, { mailbox: mailbox ?? undefined });
|
|
74
78
|
console.log(JSON.stringify(data, null, 2));
|
|
75
79
|
} catch (err) {
|
|
76
80
|
reportSdkError(err);
|
|
@@ -78,9 +82,11 @@ async function list(args) {
|
|
|
78
82
|
}
|
|
79
83
|
|
|
80
84
|
async function get(args) {
|
|
81
|
-
|
|
82
|
-
|
|
85
|
+
const valueFlags = ["--project", "--mailbox"];
|
|
86
|
+
validateArgs(args, valueFlags);
|
|
87
|
+
const webhookId = positionalArgs(args, valueFlags)[0] ?? null;
|
|
83
88
|
const projectId = resolveProjectId(strictFlagValue(args, "--project"));
|
|
89
|
+
const mailbox = strictFlagValue(args, "--mailbox");
|
|
84
90
|
if (!webhookId) {
|
|
85
91
|
fail({
|
|
86
92
|
code: "BAD_USAGE",
|
|
@@ -89,7 +95,7 @@ async function get(args) {
|
|
|
89
95
|
});
|
|
90
96
|
}
|
|
91
97
|
try {
|
|
92
|
-
const data = await getSdk().email.webhooks.get(projectId, webhookId);
|
|
98
|
+
const data = await getSdk().email.webhooks.get(projectId, webhookId, { mailbox: mailbox ?? undefined });
|
|
93
99
|
console.log(JSON.stringify(data, null, 2));
|
|
94
100
|
} catch (err) {
|
|
95
101
|
reportSdkError(err);
|
|
@@ -97,9 +103,11 @@ async function get(args) {
|
|
|
97
103
|
}
|
|
98
104
|
|
|
99
105
|
async function del(args) {
|
|
100
|
-
|
|
101
|
-
|
|
106
|
+
const valueFlags = ["--project", "--mailbox"];
|
|
107
|
+
validateArgs(args, valueFlags);
|
|
108
|
+
const webhookId = positionalArgs(args, valueFlags)[0] ?? null;
|
|
102
109
|
const projectId = resolveProjectId(strictFlagValue(args, "--project"));
|
|
110
|
+
const mailbox = strictFlagValue(args, "--mailbox");
|
|
103
111
|
if (!webhookId) {
|
|
104
112
|
fail({
|
|
105
113
|
code: "BAD_USAGE",
|
|
@@ -108,7 +116,7 @@ async function del(args) {
|
|
|
108
116
|
});
|
|
109
117
|
}
|
|
110
118
|
try {
|
|
111
|
-
await getSdk().email.webhooks.delete(projectId, webhookId);
|
|
119
|
+
await getSdk().email.webhooks.delete(projectId, webhookId, { mailbox: mailbox ?? undefined });
|
|
112
120
|
console.log(JSON.stringify({ webhook_id: webhookId, project_id: projectId, deleted: true }));
|
|
113
121
|
} catch (err) {
|
|
114
122
|
reportSdkError(err);
|
|
@@ -116,11 +124,12 @@ async function del(args) {
|
|
|
116
124
|
}
|
|
117
125
|
|
|
118
126
|
async function update(args) {
|
|
119
|
-
const valueFlags = ["--project", "--url", "--events"];
|
|
127
|
+
const valueFlags = ["--project", "--url", "--events", "--mailbox"];
|
|
120
128
|
validateArgs(args, valueFlags);
|
|
121
129
|
const webhookId = positionalArgs(args, valueFlags)[0] ?? null;
|
|
122
130
|
const url = strictFlagValue(args, "--url");
|
|
123
131
|
const eventsRaw = strictFlagValue(args, "--events");
|
|
132
|
+
const mailbox = strictFlagValue(args, "--mailbox");
|
|
124
133
|
const projectId = resolveProjectId(strictFlagValue(args, "--project"));
|
|
125
134
|
if (!webhookId) {
|
|
126
135
|
fail({
|
|
@@ -142,6 +151,7 @@ async function update(args) {
|
|
|
142
151
|
const data = await getSdk().email.webhooks.update(projectId, webhookId, {
|
|
143
152
|
url: url ?? undefined,
|
|
144
153
|
events: eventsRaw ? eventsRaw.split(",").map((e) => e.trim()) : undefined,
|
|
154
|
+
mailbox: mailbox ?? undefined,
|
|
145
155
|
});
|
|
146
156
|
console.log(JSON.stringify(data));
|
|
147
157
|
} catch (err) {
|
|
@@ -150,10 +160,11 @@ async function update(args) {
|
|
|
150
160
|
}
|
|
151
161
|
|
|
152
162
|
async function register(args) {
|
|
153
|
-
const valueFlags = ["--project", "--url", "--events"];
|
|
163
|
+
const valueFlags = ["--project", "--url", "--events", "--mailbox"];
|
|
154
164
|
validateArgs(args, valueFlags);
|
|
155
165
|
const url = strictFlagValue(args, "--url");
|
|
156
166
|
const eventsRaw = strictFlagValue(args, "--events");
|
|
167
|
+
const mailbox = strictFlagValue(args, "--mailbox");
|
|
157
168
|
const projectOpt = strictFlagValue(args, "--project");
|
|
158
169
|
const projectId = resolveProjectId(projectOpt);
|
|
159
170
|
|
|
@@ -178,7 +189,7 @@ async function register(args) {
|
|
|
178
189
|
|
|
179
190
|
const events = eventsRaw.split(",").map((e) => e.trim());
|
|
180
191
|
try {
|
|
181
|
-
const data = await getSdk().email.webhooks.register(projectId, { url, events });
|
|
192
|
+
const data = await getSdk().email.webhooks.register(projectId, { url, events, mailbox: mailbox ?? undefined });
|
|
182
193
|
console.log(JSON.stringify(data));
|
|
183
194
|
} catch (err) {
|
|
184
195
|
reportSdkError(err);
|
package/package.json
CHANGED
|
@@ -25,6 +25,8 @@ export interface DeleteMailboxResult {
|
|
|
25
25
|
address: string;
|
|
26
26
|
}
|
|
27
27
|
export type EmailTemplate = "project_invite" | "magic_link" | "notification";
|
|
28
|
+
/** Selects a target mailbox on a multi-mailbox project: a mailbox id (`mbx_…`) or a slug. */
|
|
29
|
+
export type MailboxSelector = string;
|
|
28
30
|
export interface SendEmailOptions {
|
|
29
31
|
to: string;
|
|
30
32
|
template?: EmailTemplate;
|
|
@@ -34,6 +36,16 @@ export interface SendEmailOptions {
|
|
|
34
36
|
text?: string;
|
|
35
37
|
from_name?: string;
|
|
36
38
|
in_reply_to?: string;
|
|
39
|
+
/**
|
|
40
|
+
* Target mailbox (slug or `mbx_…` id) on a project that has more than one.
|
|
41
|
+
* Omit only when the project has exactly one mailbox — otherwise the call
|
|
42
|
+
* throws an ambiguity error naming the available slugs.
|
|
43
|
+
*/
|
|
44
|
+
mailbox?: MailboxSelector;
|
|
45
|
+
}
|
|
46
|
+
/** Options carrying just a mailbox selector, for `get` / `getRaw` / webhook reads. */
|
|
47
|
+
export interface MailboxScopedOptions {
|
|
48
|
+
mailbox?: MailboxSelector;
|
|
37
49
|
}
|
|
38
50
|
export interface SendEmailResult {
|
|
39
51
|
message_id: string;
|
|
@@ -67,6 +79,8 @@ export interface EmailDetail {
|
|
|
67
79
|
export interface ListEmailsOptions {
|
|
68
80
|
limit?: number;
|
|
69
81
|
after?: string;
|
|
82
|
+
/** Target mailbox (slug or `mbx_…` id); omit only on single-mailbox projects. */
|
|
83
|
+
mailbox?: MailboxSelector;
|
|
70
84
|
}
|
|
71
85
|
export interface RawEmailResult {
|
|
72
86
|
content_type: string;
|
|
@@ -84,60 +98,95 @@ export interface MailboxWebhooksResult {
|
|
|
84
98
|
export interface RegisterWebhookOptions {
|
|
85
99
|
url: string;
|
|
86
100
|
events: string[];
|
|
101
|
+
/** Target mailbox (slug or `mbx_…` id); omit only on single-mailbox projects. */
|
|
102
|
+
mailbox?: MailboxSelector;
|
|
87
103
|
}
|
|
88
104
|
export interface UpdateWebhookOptions {
|
|
89
105
|
url?: string;
|
|
90
106
|
events?: string[];
|
|
107
|
+
/** Target mailbox (slug or `mbx_…` id); omit only on single-mailbox projects. */
|
|
108
|
+
mailbox?: MailboxSelector;
|
|
91
109
|
}
|
|
92
110
|
export declare class Webhooks {
|
|
93
111
|
private readonly client;
|
|
94
112
|
private readonly resolveMailbox;
|
|
95
|
-
constructor(client: Client, resolveMailbox: (projectId: string) => Promise<{
|
|
113
|
+
constructor(client: Client, resolveMailbox: (projectId: string, selector?: MailboxSelector) => Promise<{
|
|
96
114
|
id: string;
|
|
97
115
|
serviceKey: string;
|
|
98
116
|
}>);
|
|
99
117
|
register(projectId: string, opts: RegisterWebhookOptions): Promise<MailboxWebhookSummary>;
|
|
100
|
-
list(projectId: string): Promise<MailboxWebhooksResult>;
|
|
101
|
-
get(projectId: string, webhookId: string): Promise<MailboxWebhookSummary>;
|
|
118
|
+
list(projectId: string, opts?: MailboxScopedOptions): Promise<MailboxWebhooksResult>;
|
|
119
|
+
get(projectId: string, webhookId: string, opts?: MailboxScopedOptions): Promise<MailboxWebhookSummary>;
|
|
102
120
|
update(projectId: string, webhookId: string, opts: UpdateWebhookOptions): Promise<MailboxWebhookSummary>;
|
|
103
|
-
delete(projectId: string, webhookId: string): Promise<void>;
|
|
121
|
+
delete(projectId: string, webhookId: string, opts?: MailboxScopedOptions): Promise<void>;
|
|
104
122
|
}
|
|
105
123
|
export declare class Email {
|
|
106
124
|
private readonly client;
|
|
107
125
|
readonly webhooks: Webhooks;
|
|
108
126
|
readonly create: (projectId: string, slug: string) => Promise<CreateMailboxResult>;
|
|
109
|
-
readonly status: (projectId: string) => Promise<MailboxInfo>;
|
|
110
|
-
readonly info: (projectId: string) => Promise<MailboxInfo>;
|
|
111
|
-
readonly delete: (projectId: string,
|
|
127
|
+
readonly status: (projectId: string, mailbox?: MailboxSelector) => Promise<MailboxInfo>;
|
|
128
|
+
readonly info: (projectId: string, mailbox?: MailboxSelector) => Promise<MailboxInfo>;
|
|
129
|
+
readonly delete: (projectId: string, mailbox?: MailboxSelector) => Promise<DeleteMailboxResult>;
|
|
112
130
|
constructor(client: Client);
|
|
113
131
|
/**
|
|
114
|
-
* Resolve
|
|
115
|
-
*
|
|
116
|
-
*
|
|
132
|
+
* Resolve a project mailbox to `{ id, serviceKey }` for an operation.
|
|
133
|
+
*
|
|
134
|
+
* - `selector` is a mailbox id (`mbx_…`) → used directly; the gateway 403s
|
|
135
|
+
* if the id belongs to a different project, so no list call is needed.
|
|
136
|
+
* - `selector` is a slug → the project's mailboxes are listed and matched.
|
|
137
|
+
* - `selector` omitted → the project's mailboxes are listed:
|
|
138
|
+
* 0 → "create one first"; exactly 1 → that one (cache refreshed);
|
|
139
|
+
* 2+ → an ambiguity error naming the slugs (never a silent pick).
|
|
140
|
+
*
|
|
141
|
+
* The cached `mailbox_id` is intentionally NOT used to resolve when a
|
|
142
|
+
* selector is omitted — trusting it would silently target an arbitrary
|
|
143
|
+
* mailbox on a multi-mailbox project. It remains a best-effort convenience
|
|
144
|
+
* cache, refreshed only on the single-mailbox path.
|
|
117
145
|
*/
|
|
118
146
|
private resolveMailbox;
|
|
147
|
+
/**
|
|
148
|
+
* Choose a mailbox from a project's list given an optional selector.
|
|
149
|
+
* `selector` matches by exact mailbox id or slug. With no selector: 0 →
|
|
150
|
+
* "create one first" (404), 1 → that one, 2+ → ambiguity error (409) naming
|
|
151
|
+
* the available slugs.
|
|
152
|
+
*/
|
|
153
|
+
private pickMailbox;
|
|
154
|
+
/** Best-effort refresh of the single-mailbox convenience cache. */
|
|
155
|
+
private cacheMailbox;
|
|
119
156
|
private listMailboxes;
|
|
120
|
-
/**
|
|
157
|
+
/**
|
|
158
|
+
* Create a mailbox for a project.
|
|
159
|
+
*
|
|
160
|
+
* NOT idempotent. A 409 from the gateway now means `Slug already in use`,
|
|
161
|
+
* `Address is in cooldown period`, or `Project mailbox limit reached (5)` —
|
|
162
|
+
* none of which mean "you already own this slug" — so the 409 is surfaced
|
|
163
|
+
* verbatim rather than silently returning some other existing mailbox.
|
|
164
|
+
* Callers that want create-or-get should `list`/`getMailbox` explicitly.
|
|
165
|
+
*/
|
|
121
166
|
createMailbox(projectId: string, slug: string): Promise<CreateMailboxResult>;
|
|
122
167
|
/** Send an email via template or raw (subject + html) mode. */
|
|
123
168
|
send(projectId: string, opts: SendEmailOptions): Promise<SendEmailResult>;
|
|
124
169
|
/** List messages in the project's mailbox. */
|
|
125
170
|
list(projectId: string, opts?: ListEmailsOptions): Promise<EmailSummary[]>;
|
|
126
171
|
/** Get a single message by id, including any replies. */
|
|
127
|
-
get(projectId: string, messageId: string): Promise<EmailDetail>;
|
|
172
|
+
get(projectId: string, messageId: string, opts?: MailboxScopedOptions): Promise<EmailDetail>;
|
|
128
173
|
/**
|
|
129
174
|
* Fetch the raw RFC-822 bytes of an inbound message. Returns `Uint8Array`
|
|
130
175
|
* so the consumer can decode / store / forward without re-encoding.
|
|
131
176
|
*/
|
|
132
|
-
getRaw(projectId: string, messageId: string): Promise<RawEmailResult>;
|
|
133
|
-
/**
|
|
134
|
-
|
|
177
|
+
getRaw(projectId: string, messageId: string, opts?: MailboxScopedOptions): Promise<RawEmailResult>;
|
|
178
|
+
/**
|
|
179
|
+
* Get a project mailbox's info. With a `selector` (slug or `mbx_…` id),
|
|
180
|
+
* returns that mailbox; without one, returns the project's only mailbox or
|
|
181
|
+
* throws an ambiguity error when it has more than one.
|
|
182
|
+
*/
|
|
183
|
+
getMailbox(projectId: string, selector?: MailboxSelector): Promise<MailboxInfo>;
|
|
135
184
|
/**
|
|
136
185
|
* Delete the project's mailbox. Destructive — drops all messages and
|
|
137
186
|
* webhook subscriptions. Pass `mailboxId` explicitly to delete a specific
|
|
138
187
|
* mailbox; otherwise the project's current mailbox is resolved. Returns
|
|
139
188
|
* the deleted record echoed by the gateway.
|
|
140
189
|
*/
|
|
141
|
-
deleteMailbox(projectId: string,
|
|
190
|
+
deleteMailbox(projectId: string, selector?: MailboxSelector): Promise<DeleteMailboxResult>;
|
|
142
191
|
}
|
|
143
192
|
//# sourceMappingURL=email.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../src/namespaces/email.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAa3C,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAC;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,mBAAmB,GAAG,aAAa,CAAC;AAEhD,MAAM,MAAM,WAAW,GAAG,aAAa,CAAC;AAExC,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,aAAa,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,aAAa,GAAG,gBAAgB,GAAG,YAAY,GAAG,cAAc,CAAC;AAE7E,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../src/namespaces/email.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,7 @@ export class Webhooks {
|
|
|
16
16
|
}
|
|
17
17
|
async register(projectId, opts) {
|
|
18
18
|
validateRegisterWebhookOptions(opts);
|
|
19
|
-
const { id, serviceKey } = await this.resolveMailbox(projectId);
|
|
19
|
+
const { id, serviceKey } = await this.resolveMailbox(projectId, opts.mailbox);
|
|
20
20
|
return this.client.request(`/mailboxes/v1/${id}/webhooks`, {
|
|
21
21
|
method: "POST",
|
|
22
22
|
headers: { Authorization: `Bearer ${serviceKey}` },
|
|
@@ -24,15 +24,15 @@ export class Webhooks {
|
|
|
24
24
|
context: "registering webhook",
|
|
25
25
|
});
|
|
26
26
|
}
|
|
27
|
-
async list(projectId) {
|
|
28
|
-
const { id, serviceKey } = await this.resolveMailbox(projectId);
|
|
27
|
+
async list(projectId, opts = {}) {
|
|
28
|
+
const { id, serviceKey } = await this.resolveMailbox(projectId, opts.mailbox);
|
|
29
29
|
return this.client.request(`/mailboxes/v1/${id}/webhooks`, {
|
|
30
30
|
headers: { Authorization: `Bearer ${serviceKey}` },
|
|
31
31
|
context: "listing webhooks",
|
|
32
32
|
});
|
|
33
33
|
}
|
|
34
|
-
async get(projectId, webhookId) {
|
|
35
|
-
const { id, serviceKey } = await this.resolveMailbox(projectId);
|
|
34
|
+
async get(projectId, webhookId, opts = {}) {
|
|
35
|
+
const { id, serviceKey } = await this.resolveMailbox(projectId, opts.mailbox);
|
|
36
36
|
const encodedWebhookId = encodePathSegment(webhookId, "webhookId", "getting webhook");
|
|
37
37
|
return this.client.request(`/mailboxes/v1/${id}/webhooks/${encodedWebhookId}`, {
|
|
38
38
|
headers: { Authorization: `Bearer ${serviceKey}` },
|
|
@@ -44,7 +44,7 @@ export class Webhooks {
|
|
|
44
44
|
if (!patch.hasUrl && !patch.hasEvents) {
|
|
45
45
|
throw new LocalError("Provide at least `url` or `events` to update a webhook.", "updating webhook");
|
|
46
46
|
}
|
|
47
|
-
const { id, serviceKey } = await this.resolveMailbox(projectId);
|
|
47
|
+
const { id, serviceKey } = await this.resolveMailbox(projectId, opts.mailbox);
|
|
48
48
|
const encodedWebhookId = encodePathSegment(webhookId, "webhookId", "updating webhook");
|
|
49
49
|
const body = {};
|
|
50
50
|
if (patch.hasUrl)
|
|
@@ -58,8 +58,8 @@ export class Webhooks {
|
|
|
58
58
|
context: "updating webhook",
|
|
59
59
|
});
|
|
60
60
|
}
|
|
61
|
-
async delete(projectId, webhookId) {
|
|
62
|
-
const { id, serviceKey } = await this.resolveMailbox(projectId);
|
|
61
|
+
async delete(projectId, webhookId, opts = {}) {
|
|
62
|
+
const { id, serviceKey } = await this.resolveMailbox(projectId, opts.mailbox);
|
|
63
63
|
const encodedWebhookId = encodePathSegment(webhookId, "webhookId", "deleting webhook");
|
|
64
64
|
await this.client.request(`/mailboxes/v1/${id}/webhooks/${encodedWebhookId}`, {
|
|
65
65
|
method: "DELETE",
|
|
@@ -77,42 +77,77 @@ export class Email {
|
|
|
77
77
|
delete;
|
|
78
78
|
constructor(client) {
|
|
79
79
|
this.client = client;
|
|
80
|
-
this.webhooks = new Webhooks(client, (projectId) => this.resolveMailbox(projectId));
|
|
80
|
+
this.webhooks = new Webhooks(client, (projectId, selector) => this.resolveMailbox(projectId, selector));
|
|
81
81
|
this.create = this.createMailbox.bind(this);
|
|
82
82
|
this.status = this.getMailbox.bind(this);
|
|
83
83
|
this.info = this.getMailbox.bind(this);
|
|
84
84
|
this.delete = this.deleteMailbox.bind(this);
|
|
85
85
|
}
|
|
86
86
|
/**
|
|
87
|
-
* Resolve
|
|
88
|
-
*
|
|
89
|
-
*
|
|
87
|
+
* Resolve a project mailbox to `{ id, serviceKey }` for an operation.
|
|
88
|
+
*
|
|
89
|
+
* - `selector` is a mailbox id (`mbx_…`) → used directly; the gateway 403s
|
|
90
|
+
* if the id belongs to a different project, so no list call is needed.
|
|
91
|
+
* - `selector` is a slug → the project's mailboxes are listed and matched.
|
|
92
|
+
* - `selector` omitted → the project's mailboxes are listed:
|
|
93
|
+
* 0 → "create one first"; exactly 1 → that one (cache refreshed);
|
|
94
|
+
* 2+ → an ambiguity error naming the slugs (never a silent pick).
|
|
95
|
+
*
|
|
96
|
+
* The cached `mailbox_id` is intentionally NOT used to resolve when a
|
|
97
|
+
* selector is omitted — trusting it would silently target an arbitrary
|
|
98
|
+
* mailbox on a multi-mailbox project. It remains a best-effort convenience
|
|
99
|
+
* cache, refreshed only on the single-mailbox path.
|
|
90
100
|
*/
|
|
91
|
-
async resolveMailbox(projectId) {
|
|
101
|
+
async resolveMailbox(projectId, selector) {
|
|
92
102
|
const project = await this.client.getProject(projectId);
|
|
93
103
|
if (!project)
|
|
94
104
|
throw new ProjectNotFound(projectId, "resolving mailbox");
|
|
95
|
-
if (
|
|
96
|
-
return { id:
|
|
105
|
+
if (selector && /^mbx_/.test(selector)) {
|
|
106
|
+
return { id: selector, serviceKey: project.service_key };
|
|
97
107
|
}
|
|
98
108
|
const list = await this.listMailboxes(project.service_key);
|
|
109
|
+
const mb = this.pickMailbox(list, selector, "resolving mailbox");
|
|
110
|
+
if (!selector && list.length === 1)
|
|
111
|
+
await this.cacheMailbox(projectId, mb);
|
|
112
|
+
return { id: mb.mailbox_id, serviceKey: project.service_key };
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Choose a mailbox from a project's list given an optional selector.
|
|
116
|
+
* `selector` matches by exact mailbox id or slug. With no selector: 0 →
|
|
117
|
+
* "create one first" (404), 1 → that one, 2+ → ambiguity error (409) naming
|
|
118
|
+
* the available slugs.
|
|
119
|
+
*/
|
|
120
|
+
pickMailbox(list, selector, context) {
|
|
121
|
+
if (selector) {
|
|
122
|
+
const hit = list.find((m) => m.mailbox_id === selector || m.slug === selector);
|
|
123
|
+
if (!hit) {
|
|
124
|
+
throw new ApiError(`No mailbox matching "${selector}" (slug or id) in this project.`, 404, null, context);
|
|
125
|
+
}
|
|
126
|
+
return hit;
|
|
127
|
+
}
|
|
99
128
|
if (list.length === 0) {
|
|
100
|
-
throw new ApiError("No mailbox found for this project. Use `create_mailbox` to create one first.", 404, null,
|
|
129
|
+
throw new ApiError("No mailbox found for this project. Use `create_mailbox` to create one first.", 404, null, context);
|
|
130
|
+
}
|
|
131
|
+
if (list.length > 1) {
|
|
132
|
+
const slugs = list.map((m) => m.slug).join(", ");
|
|
133
|
+
throw new ApiError(`Project has ${list.length} mailboxes (${slugs}). Specify which one via the "mailbox" parameter (slug or id).`, 409, null, context);
|
|
101
134
|
}
|
|
102
|
-
|
|
135
|
+
return list[0];
|
|
136
|
+
}
|
|
137
|
+
/** Best-effort refresh of the single-mailbox convenience cache. */
|
|
138
|
+
async cacheMailbox(projectId, mb) {
|
|
103
139
|
const updater = this.client.credentials.updateProject;
|
|
104
|
-
if (updater)
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
140
|
+
if (!updater)
|
|
141
|
+
return;
|
|
142
|
+
try {
|
|
143
|
+
await updater.call(this.client.credentials, projectId, {
|
|
144
|
+
mailbox_id: mb.mailbox_id,
|
|
145
|
+
mailbox_address: mb.address,
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
catch {
|
|
149
|
+
// best-effort cache — ignore failures
|
|
114
150
|
}
|
|
115
|
-
return { id: first.mailbox_id, serviceKey: project.service_key };
|
|
116
151
|
}
|
|
117
152
|
async listMailboxes(serviceKey) {
|
|
118
153
|
const raw = await this.client.request(`/mailboxes/v1`, {
|
|
@@ -121,7 +156,15 @@ export class Email {
|
|
|
121
156
|
});
|
|
122
157
|
return raw.mailboxes ?? [];
|
|
123
158
|
}
|
|
124
|
-
/**
|
|
159
|
+
/**
|
|
160
|
+
* Create a mailbox for a project.
|
|
161
|
+
*
|
|
162
|
+
* NOT idempotent. A 409 from the gateway now means `Slug already in use`,
|
|
163
|
+
* `Address is in cooldown period`, or `Project mailbox limit reached (5)` —
|
|
164
|
+
* none of which mean "you already own this slug" — so the 409 is surfaced
|
|
165
|
+
* verbatim rather than silently returning some other existing mailbox.
|
|
166
|
+
* Callers that want create-or-get should `list`/`getMailbox` explicitly.
|
|
167
|
+
*/
|
|
125
168
|
async createMailbox(projectId, slug) {
|
|
126
169
|
const project = await this.client.getProject(projectId);
|
|
127
170
|
if (!project)
|
|
@@ -135,47 +178,14 @@ export class Email {
|
|
|
135
178
|
if (slug.includes("--")) {
|
|
136
179
|
throw new LocalError("Slug must not contain consecutive hyphens.", "creating mailbox");
|
|
137
180
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
if (updater) {
|
|
147
|
-
await updater.call(this.client.credentials, projectId, {
|
|
148
|
-
mailbox_id: result.mailbox_id,
|
|
149
|
-
mailbox_address: result.address,
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
|
-
return result;
|
|
153
|
-
}
|
|
154
|
-
catch (err) {
|
|
155
|
-
if (err instanceof ApiError && err.status === 409) {
|
|
156
|
-
// Existing mailbox — try to discover and cache it. If discovery
|
|
157
|
-
// fails or returns empty, re-throw the original 409 so the caller
|
|
158
|
-
// sees the server's "already has a mailbox" message.
|
|
159
|
-
try {
|
|
160
|
-
const list = await this.listMailboxes(project.service_key);
|
|
161
|
-
if (list.length > 0) {
|
|
162
|
-
const existing = list[0];
|
|
163
|
-
const updater = this.client.credentials.updateProject;
|
|
164
|
-
if (updater) {
|
|
165
|
-
await updater.call(this.client.credentials, projectId, {
|
|
166
|
-
mailbox_id: existing.mailbox_id,
|
|
167
|
-
mailbox_address: existing.address,
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
return existing;
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
catch {
|
|
174
|
-
// fall through to re-throw the original 409
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
throw err;
|
|
178
|
-
}
|
|
181
|
+
const result = await this.client.request("/mailboxes/v1", {
|
|
182
|
+
method: "POST",
|
|
183
|
+
headers: { Authorization: `Bearer ${project.service_key}` },
|
|
184
|
+
body: { slug, project_id: projectId },
|
|
185
|
+
context: "creating mailbox",
|
|
186
|
+
});
|
|
187
|
+
await this.cacheMailbox(projectId, result);
|
|
188
|
+
return result;
|
|
179
189
|
}
|
|
180
190
|
/** Send an email via template or raw (subject + html) mode. */
|
|
181
191
|
async send(projectId, opts) {
|
|
@@ -197,7 +207,7 @@ export class Email {
|
|
|
197
207
|
const missing = hasSubject ? "html" : "subject";
|
|
198
208
|
throw new LocalError(`Raw mode requires both \`subject\` and \`html\` (missing \`${missing}\`).`, "sending email");
|
|
199
209
|
}
|
|
200
|
-
const { id, serviceKey } = await this.resolveMailbox(projectId);
|
|
210
|
+
const { id, serviceKey } = await this.resolveMailbox(projectId, opts.mailbox);
|
|
201
211
|
const body = { to: opts.to };
|
|
202
212
|
if (isTemplate) {
|
|
203
213
|
body.template = opts.template;
|
|
@@ -225,7 +235,7 @@ export class Email {
|
|
|
225
235
|
if (opts.limit !== undefined) {
|
|
226
236
|
assertPositiveSafeInteger(opts.limit, "limit", "listing emails");
|
|
227
237
|
}
|
|
228
|
-
const { id, serviceKey } = await this.resolveMailbox(projectId);
|
|
238
|
+
const { id, serviceKey } = await this.resolveMailbox(projectId, opts.mailbox);
|
|
229
239
|
const qs = new URLSearchParams();
|
|
230
240
|
if (opts.limit !== undefined)
|
|
231
241
|
qs.set("limit", String(opts.limit));
|
|
@@ -238,8 +248,8 @@ export class Email {
|
|
|
238
248
|
});
|
|
239
249
|
}
|
|
240
250
|
/** Get a single message by id, including any replies. */
|
|
241
|
-
async get(projectId, messageId) {
|
|
242
|
-
const { id, serviceKey } = await this.resolveMailbox(projectId);
|
|
251
|
+
async get(projectId, messageId, opts = {}) {
|
|
252
|
+
const { id, serviceKey } = await this.resolveMailbox(projectId, opts.mailbox);
|
|
243
253
|
const encodedMessageId = encodePathSegment(messageId, "messageId", "getting email");
|
|
244
254
|
return this.client.request(`/mailboxes/v1/${id}/messages/${encodedMessageId}`, {
|
|
245
255
|
headers: { Authorization: `Bearer ${serviceKey}` },
|
|
@@ -250,8 +260,8 @@ export class Email {
|
|
|
250
260
|
* Fetch the raw RFC-822 bytes of an inbound message. Returns `Uint8Array`
|
|
251
261
|
* so the consumer can decode / store / forward without re-encoding.
|
|
252
262
|
*/
|
|
253
|
-
async getRaw(projectId, messageId) {
|
|
254
|
-
const { id, serviceKey } = await this.resolveMailbox(projectId);
|
|
263
|
+
async getRaw(projectId, messageId, opts = {}) {
|
|
264
|
+
const { id, serviceKey } = await this.resolveMailbox(projectId, opts.mailbox);
|
|
255
265
|
const encodedMessageId = encodePathSegment(messageId, "messageId", "fetching raw MIME");
|
|
256
266
|
const url = `${this.client.apiBase}/mailboxes/v1/${id}/messages/${encodedMessageId}/raw`;
|
|
257
267
|
const res = await this.client.fetch(url, {
|
|
@@ -273,28 +283,19 @@ export class Email {
|
|
|
273
283
|
bytes: new Uint8Array(buf),
|
|
274
284
|
};
|
|
275
285
|
}
|
|
276
|
-
/**
|
|
277
|
-
|
|
286
|
+
/**
|
|
287
|
+
* Get a project mailbox's info. With a `selector` (slug or `mbx_…` id),
|
|
288
|
+
* returns that mailbox; without one, returns the project's only mailbox or
|
|
289
|
+
* throws an ambiguity error when it has more than one.
|
|
290
|
+
*/
|
|
291
|
+
async getMailbox(projectId, selector) {
|
|
278
292
|
const project = await this.client.getProject(projectId);
|
|
279
293
|
if (!project)
|
|
280
294
|
throw new ProjectNotFound(projectId, "getting mailbox");
|
|
281
295
|
const list = await this.listMailboxes(project.service_key);
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
const mb = list[0];
|
|
286
|
-
const updater = this.client.credentials.updateProject;
|
|
287
|
-
if (updater) {
|
|
288
|
-
try {
|
|
289
|
-
await updater.call(this.client.credentials, projectId, {
|
|
290
|
-
mailbox_id: mb.mailbox_id,
|
|
291
|
-
mailbox_address: mb.address,
|
|
292
|
-
});
|
|
293
|
-
}
|
|
294
|
-
catch {
|
|
295
|
-
// best-effort
|
|
296
|
-
}
|
|
297
|
-
}
|
|
296
|
+
const mb = this.pickMailbox(list, selector, "getting mailbox");
|
|
297
|
+
if (!selector && list.length === 1)
|
|
298
|
+
await this.cacheMailbox(projectId, mb);
|
|
298
299
|
return mb;
|
|
299
300
|
}
|
|
300
301
|
/**
|
|
@@ -303,22 +304,20 @@ export class Email {
|
|
|
303
304
|
* mailbox; otherwise the project's current mailbox is resolved. Returns
|
|
304
305
|
* the deleted record echoed by the gateway.
|
|
305
306
|
*/
|
|
306
|
-
async deleteMailbox(projectId,
|
|
307
|
+
async deleteMailbox(projectId, selector) {
|
|
307
308
|
const project = await this.client.getProject(projectId);
|
|
308
309
|
if (!project)
|
|
309
310
|
throw new ProjectNotFound(projectId, "deleting mailbox");
|
|
310
|
-
let id
|
|
311
|
-
if (
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
throw new ApiError("No mailbox found for this project — nothing to delete.", 404, null, "deleting mailbox");
|
|
319
|
-
}
|
|
320
|
-
id = list[0].mailbox_id;
|
|
311
|
+
let id;
|
|
312
|
+
if (selector && /^mbx_/.test(selector)) {
|
|
313
|
+
id = selector;
|
|
314
|
+
}
|
|
315
|
+
else {
|
|
316
|
+
const list = await this.listMailboxes(project.service_key);
|
|
317
|
+
if (!selector && list.length === 0) {
|
|
318
|
+
throw new ApiError("No mailbox found for this project — nothing to delete.", 404, null, "deleting mailbox");
|
|
321
319
|
}
|
|
320
|
+
id = this.pickMailbox(list, selector, "deleting mailbox").mailbox_id;
|
|
322
321
|
}
|
|
323
322
|
const result = await this.client.request(`/mailboxes/v1/${id}`, {
|
|
324
323
|
method: "DELETE",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email.js","sourceRoot":"","sources":["../../src/namespaces/email.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"email.js","sourceRoot":"","sources":["../../src/namespaces/email.ts"],"names":[],"mappings":"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"}
|