run402 1.40.0 → 1.40.2
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/sdk.mjs +1 -1
- package/package.json +4 -3
- package/sdk/core-dist/allowance-auth.js +129 -0
- package/sdk/core-dist/allowance.js +25 -0
- package/sdk/core-dist/client.js +42 -0
- package/sdk/core-dist/config.js +26 -0
- package/sdk/core-dist/keystore.js +97 -0
- package/sdk/core-dist/wallet-auth.js +62 -0
- package/sdk/core-dist/wallet.js +25 -0
- package/sdk/dist/credentials.d.ts +70 -0
- package/sdk/dist/credentials.d.ts.map +1 -0
- package/sdk/dist/credentials.js +19 -0
- package/sdk/dist/credentials.js.map +1 -0
- package/sdk/dist/errors.d.ts +34 -0
- package/sdk/dist/errors.d.ts.map +1 -0
- package/sdk/dist/errors.js +46 -0
- package/sdk/dist/errors.js.map +1 -0
- package/sdk/dist/index.d.ts +68 -0
- package/sdk/dist/index.d.ts.map +1 -0
- package/sdk/dist/index.js +81 -0
- package/sdk/dist/index.js.map +1 -0
- package/sdk/dist/kernel.d.ts +47 -0
- package/sdk/dist/kernel.d.ts.map +1 -0
- package/sdk/dist/kernel.js +76 -0
- package/sdk/dist/kernel.js.map +1 -0
- package/sdk/dist/namespaces/admin.d.ts +30 -0
- package/sdk/dist/namespaces/admin.d.ts.map +1 -0
- package/sdk/dist/namespaces/admin.js +36 -0
- package/sdk/dist/namespaces/admin.js.map +1 -0
- package/sdk/dist/namespaces/ai.d.ts +57 -0
- package/sdk/dist/namespaces/ai.d.ts.map +1 -0
- package/sdk/dist/namespaces/ai.js +62 -0
- package/sdk/dist/namespaces/ai.js.map +1 -0
- package/sdk/dist/namespaces/allowance.d.ts +51 -0
- package/sdk/dist/namespaces/allowance.d.ts.map +1 -0
- package/sdk/dist/namespaces/allowance.js +116 -0
- package/sdk/dist/namespaces/allowance.js.map +1 -0
- package/sdk/dist/namespaces/apps.d.ts +158 -0
- package/sdk/dist/namespaces/apps.d.ts.map +1 -0
- package/sdk/dist/namespaces/apps.js +150 -0
- package/sdk/dist/namespaces/apps.js.map +1 -0
- package/sdk/dist/namespaces/auth.d.ts +53 -0
- package/sdk/dist/namespaces/auth.d.ts.map +1 -0
- package/sdk/dist/namespaces/auth.js +106 -0
- package/sdk/dist/namespaces/auth.js.map +1 -0
- package/sdk/dist/namespaces/billing.d.ts +64 -0
- package/sdk/dist/namespaces/billing.d.ts.map +1 -0
- package/sdk/dist/namespaces/billing.js +105 -0
- package/sdk/dist/namespaces/billing.js.map +1 -0
- package/sdk/dist/namespaces/blobs.d.ts +41 -0
- package/sdk/dist/namespaces/blobs.d.ts.map +1 -0
- package/sdk/dist/namespaces/blobs.js +202 -0
- package/sdk/dist/namespaces/blobs.js.map +1 -0
- package/sdk/dist/namespaces/blobs.types.d.ts +58 -0
- package/sdk/dist/namespaces/blobs.types.d.ts.map +1 -0
- package/sdk/dist/namespaces/blobs.types.js +9 -0
- package/sdk/dist/namespaces/blobs.types.js.map +1 -0
- package/sdk/dist/namespaces/contracts.d.ts +65 -0
- package/sdk/dist/namespaces/contracts.d.ts.map +1 -0
- package/sdk/dist/namespaces/contracts.js +163 -0
- package/sdk/dist/namespaces/contracts.js.map +1 -0
- package/sdk/dist/namespaces/domains.d.ts +57 -0
- package/sdk/dist/namespaces/domains.d.ts.map +1 -0
- package/sdk/dist/namespaces/domains.js +60 -0
- package/sdk/dist/namespaces/domains.js.map +1 -0
- package/sdk/dist/namespaces/email.d.ts +131 -0
- package/sdk/dist/namespaces/email.d.ts.map +1 -0
- package/sdk/dist/namespaces/email.js +318 -0
- package/sdk/dist/namespaces/email.js.map +1 -0
- package/sdk/dist/namespaces/functions.d.ts +43 -0
- package/sdk/dist/namespaces/functions.d.ts.map +1 -0
- package/sdk/dist/namespaces/functions.js +146 -0
- package/sdk/dist/namespaces/functions.js.map +1 -0
- package/sdk/dist/namespaces/functions.types.d.ts +96 -0
- package/sdk/dist/namespaces/functions.types.d.ts.map +1 -0
- package/sdk/dist/namespaces/functions.types.js +6 -0
- package/sdk/dist/namespaces/functions.types.js.map +1 -0
- package/sdk/dist/namespaces/projects.d.ts +97 -0
- package/sdk/dist/namespaces/projects.d.ts.map +1 -0
- package/sdk/dist/namespaces/projects.js +214 -0
- package/sdk/dist/namespaces/projects.js.map +1 -0
- package/sdk/dist/namespaces/projects.types.d.ts +112 -0
- package/sdk/dist/namespaces/projects.types.d.ts.map +1 -0
- package/sdk/dist/namespaces/projects.types.js +9 -0
- package/sdk/dist/namespaces/projects.types.js.map +1 -0
- package/sdk/dist/namespaces/secrets.d.ts +23 -0
- package/sdk/dist/namespaces/secrets.d.ts.map +1 -0
- package/sdk/dist/namespaces/secrets.js +45 -0
- package/sdk/dist/namespaces/secrets.js.map +1 -0
- package/sdk/dist/namespaces/sender-domain.d.ts +40 -0
- package/sdk/dist/namespaces/sender-domain.d.ts.map +1 -0
- package/sdk/dist/namespaces/sender-domain.js +69 -0
- package/sdk/dist/namespaces/sender-domain.js.map +1 -0
- package/sdk/dist/namespaces/service.d.ts +51 -0
- package/sdk/dist/namespaces/service.d.ts.map +1 -0
- package/sdk/dist/namespaces/service.js +25 -0
- package/sdk/dist/namespaces/service.js.map +1 -0
- package/sdk/dist/namespaces/sites.d.ts +50 -0
- package/sdk/dist/namespaces/sites.d.ts.map +1 -0
- package/sdk/dist/namespaces/sites.js +38 -0
- package/sdk/dist/namespaces/sites.js.map +1 -0
- package/sdk/dist/namespaces/subdomains.d.ts +36 -0
- package/sdk/dist/namespaces/subdomains.d.ts.map +1 -0
- package/sdk/dist/namespaces/subdomains.js +54 -0
- package/sdk/dist/namespaces/subdomains.js.map +1 -0
- package/sdk/dist/namespaces/tier.d.ts +36 -0
- package/sdk/dist/namespaces/tier.d.ts.map +1 -0
- package/sdk/dist/namespaces/tier.js +31 -0
- package/sdk/dist/namespaces/tier.js.map +1 -0
- package/sdk/dist/node/credentials.d.ts +26 -0
- package/sdk/dist/node/credentials.d.ts.map +1 -0
- package/sdk/dist/node/credentials.js +69 -0
- package/sdk/dist/node/credentials.js.map +1 -0
- package/sdk/dist/node/index.d.ts +44 -0
- package/sdk/dist/node/index.d.ts.map +1 -0
- package/sdk/dist/node/index.js +43 -0
- package/sdk/dist/node/index.js.map +1 -0
- package/sdk/dist/node/paid-fetch.d.ts +22 -0
- package/sdk/dist/node/paid-fetch.d.ts.map +1 -0
- package/sdk/dist/node/paid-fetch.js +116 -0
- package/sdk/dist/node/paid-fetch.js.map +1 -0
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `email` namespace — project mailboxes (send / list / get / raw / delete)
|
|
3
|
+
* and mailbox webhooks. Most operations auto-resolve the project's mailbox
|
|
4
|
+
* via the provider cache, falling back to a discovery GET when absent.
|
|
5
|
+
*/
|
|
6
|
+
import { ApiError, ProjectNotFound } from "../errors.js";
|
|
7
|
+
const SLUG_RE = /^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/;
|
|
8
|
+
export class Webhooks {
|
|
9
|
+
client;
|
|
10
|
+
resolveMailbox;
|
|
11
|
+
constructor(client, resolveMailbox) {
|
|
12
|
+
this.client = client;
|
|
13
|
+
this.resolveMailbox = resolveMailbox;
|
|
14
|
+
}
|
|
15
|
+
async register(projectId, opts) {
|
|
16
|
+
const { id, serviceKey } = await this.resolveMailbox(projectId);
|
|
17
|
+
return this.client.request(`/mailboxes/v1/${id}/webhooks`, {
|
|
18
|
+
method: "POST",
|
|
19
|
+
headers: { Authorization: `Bearer ${serviceKey}` },
|
|
20
|
+
body: { url: opts.url, events: opts.events },
|
|
21
|
+
context: "registering webhook",
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
async list(projectId) {
|
|
25
|
+
const { id, serviceKey } = await this.resolveMailbox(projectId);
|
|
26
|
+
return this.client.request(`/mailboxes/v1/${id}/webhooks`, {
|
|
27
|
+
headers: { Authorization: `Bearer ${serviceKey}` },
|
|
28
|
+
context: "listing webhooks",
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
async get(projectId, webhookId) {
|
|
32
|
+
const { id, serviceKey } = await this.resolveMailbox(projectId);
|
|
33
|
+
return this.client.request(`/mailboxes/v1/${id}/webhooks/${webhookId}`, {
|
|
34
|
+
headers: { Authorization: `Bearer ${serviceKey}` },
|
|
35
|
+
context: "getting webhook",
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
async update(projectId, webhookId, opts) {
|
|
39
|
+
if (!opts.url && !opts.events) {
|
|
40
|
+
throw new Error("Provide at least `url` or `events` to update a webhook.");
|
|
41
|
+
}
|
|
42
|
+
const { id, serviceKey } = await this.resolveMailbox(projectId);
|
|
43
|
+
const body = {};
|
|
44
|
+
if (opts.url)
|
|
45
|
+
body.url = opts.url;
|
|
46
|
+
if (opts.events)
|
|
47
|
+
body.events = opts.events;
|
|
48
|
+
return this.client.request(`/mailboxes/v1/${id}/webhooks/${webhookId}`, {
|
|
49
|
+
method: "PATCH",
|
|
50
|
+
headers: { Authorization: `Bearer ${serviceKey}` },
|
|
51
|
+
body,
|
|
52
|
+
context: "updating webhook",
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
async delete(projectId, webhookId) {
|
|
56
|
+
const { id, serviceKey } = await this.resolveMailbox(projectId);
|
|
57
|
+
await this.client.request(`/mailboxes/v1/${id}/webhooks/${webhookId}`, {
|
|
58
|
+
method: "DELETE",
|
|
59
|
+
headers: { Authorization: `Bearer ${serviceKey}` },
|
|
60
|
+
context: "deleting webhook",
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
export class Email {
|
|
65
|
+
client;
|
|
66
|
+
webhooks;
|
|
67
|
+
constructor(client) {
|
|
68
|
+
this.client = client;
|
|
69
|
+
this.webhooks = new Webhooks(client, (projectId) => this.resolveMailbox(projectId));
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Resolve the project's mailbox id + service key. Prefers the provider's
|
|
73
|
+
* cached value; falls back to a discovery GET and persists the result
|
|
74
|
+
* when the provider supports `updateProject`.
|
|
75
|
+
*/
|
|
76
|
+
async resolveMailbox(projectId) {
|
|
77
|
+
const project = await this.client.getProject(projectId);
|
|
78
|
+
if (!project)
|
|
79
|
+
throw new ProjectNotFound(projectId, "resolving mailbox");
|
|
80
|
+
if (project.mailbox_id) {
|
|
81
|
+
return { id: project.mailbox_id, serviceKey: project.service_key };
|
|
82
|
+
}
|
|
83
|
+
const list = await this.listMailboxes(project.service_key);
|
|
84
|
+
if (list.length === 0) {
|
|
85
|
+
throw new ApiError("No mailbox found for this project. Use `create_mailbox` to create one first.", 404, null, "resolving mailbox");
|
|
86
|
+
}
|
|
87
|
+
const first = list[0];
|
|
88
|
+
const updater = this.client.credentials.updateProject;
|
|
89
|
+
if (updater) {
|
|
90
|
+
try {
|
|
91
|
+
await updater.call(this.client.credentials, projectId, {
|
|
92
|
+
mailbox_id: first.mailbox_id,
|
|
93
|
+
mailbox_address: first.address,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
// best-effort cache — ignore failures
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return { id: first.mailbox_id, serviceKey: project.service_key };
|
|
101
|
+
}
|
|
102
|
+
async listMailboxes(serviceKey) {
|
|
103
|
+
const raw = await this.client.request(`/mailboxes/v1`, {
|
|
104
|
+
headers: { Authorization: `Bearer ${serviceKey}` },
|
|
105
|
+
context: "listing mailboxes",
|
|
106
|
+
});
|
|
107
|
+
return Array.isArray(raw) ? raw : raw.mailboxes ?? [];
|
|
108
|
+
}
|
|
109
|
+
/** Create a mailbox for a project. Idempotent: returns the existing one on 409. */
|
|
110
|
+
async createMailbox(projectId, slug) {
|
|
111
|
+
const project = await this.client.getProject(projectId);
|
|
112
|
+
if (!project)
|
|
113
|
+
throw new ProjectNotFound(projectId, "creating mailbox");
|
|
114
|
+
if (slug.length < 3 || slug.length > 63) {
|
|
115
|
+
throw new Error("Slug must be 3-63 characters.");
|
|
116
|
+
}
|
|
117
|
+
if (!SLUG_RE.test(slug)) {
|
|
118
|
+
throw new Error("Slug must be lowercase alphanumeric + hyphens, start/end with alphanumeric.");
|
|
119
|
+
}
|
|
120
|
+
if (slug.includes("--")) {
|
|
121
|
+
throw new Error("Slug must not contain consecutive hyphens.");
|
|
122
|
+
}
|
|
123
|
+
try {
|
|
124
|
+
const result = await this.client.request("/mailboxes/v1", {
|
|
125
|
+
method: "POST",
|
|
126
|
+
headers: { Authorization: `Bearer ${project.service_key}` },
|
|
127
|
+
body: { slug, project_id: projectId },
|
|
128
|
+
context: "creating mailbox",
|
|
129
|
+
});
|
|
130
|
+
const updater = this.client.credentials.updateProject;
|
|
131
|
+
if (updater) {
|
|
132
|
+
await updater.call(this.client.credentials, projectId, {
|
|
133
|
+
mailbox_id: result.mailbox_id,
|
|
134
|
+
mailbox_address: result.address,
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
return result;
|
|
138
|
+
}
|
|
139
|
+
catch (err) {
|
|
140
|
+
if (err instanceof ApiError && err.status === 409) {
|
|
141
|
+
// Existing mailbox — try to discover and cache it. If discovery
|
|
142
|
+
// fails or returns empty, re-throw the original 409 so the caller
|
|
143
|
+
// sees the server's "already has a mailbox" message.
|
|
144
|
+
try {
|
|
145
|
+
const list = await this.listMailboxes(project.service_key);
|
|
146
|
+
if (list.length > 0) {
|
|
147
|
+
const existing = list[0];
|
|
148
|
+
const updater = this.client.credentials.updateProject;
|
|
149
|
+
if (updater) {
|
|
150
|
+
await updater.call(this.client.credentials, projectId, {
|
|
151
|
+
mailbox_id: existing.mailbox_id,
|
|
152
|
+
mailbox_address: existing.address,
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
return existing;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
// fall through to re-throw the original 409
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
throw err;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
/** Send an email via template or raw (subject + html) mode. */
|
|
166
|
+
async send(projectId, opts) {
|
|
167
|
+
const hasSubject = !!opts.subject;
|
|
168
|
+
const hasHtml = !!opts.html;
|
|
169
|
+
const isRaw = hasSubject || hasHtml;
|
|
170
|
+
const isTemplate = !!opts.template;
|
|
171
|
+
if (!isRaw && !isTemplate) {
|
|
172
|
+
throw new Error("Provide either `template` + `variables` or both `subject` + `html`.");
|
|
173
|
+
}
|
|
174
|
+
if (isRaw && isTemplate) {
|
|
175
|
+
throw new Error("Provide `template` OR raw mode (`subject` + `html`), not both.");
|
|
176
|
+
}
|
|
177
|
+
if (isRaw && !(hasSubject && hasHtml)) {
|
|
178
|
+
const missing = hasSubject ? "html" : "subject";
|
|
179
|
+
throw new Error(`Raw mode requires both \`subject\` and \`html\` (missing \`${missing}\`).`);
|
|
180
|
+
}
|
|
181
|
+
const { id, serviceKey } = await this.resolveMailbox(projectId);
|
|
182
|
+
const body = { to: opts.to };
|
|
183
|
+
if (isTemplate) {
|
|
184
|
+
body.template = opts.template;
|
|
185
|
+
body.variables = opts.variables;
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
body.subject = opts.subject;
|
|
189
|
+
body.html = opts.html;
|
|
190
|
+
if (opts.text)
|
|
191
|
+
body.text = opts.text;
|
|
192
|
+
}
|
|
193
|
+
if (opts.from_name)
|
|
194
|
+
body.from_name = opts.from_name;
|
|
195
|
+
if (opts.in_reply_to)
|
|
196
|
+
body.in_reply_to = opts.in_reply_to;
|
|
197
|
+
return this.client.request(`/mailboxes/v1/${id}/messages`, {
|
|
198
|
+
method: "POST",
|
|
199
|
+
headers: { Authorization: `Bearer ${serviceKey}` },
|
|
200
|
+
body,
|
|
201
|
+
context: "sending email",
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
/** List messages in the project's mailbox. */
|
|
205
|
+
async list(projectId, opts = {}) {
|
|
206
|
+
const { id, serviceKey } = await this.resolveMailbox(projectId);
|
|
207
|
+
const qs = new URLSearchParams();
|
|
208
|
+
if (opts.limit !== undefined)
|
|
209
|
+
qs.set("limit", String(opts.limit));
|
|
210
|
+
if (opts.after)
|
|
211
|
+
qs.set("after", opts.after);
|
|
212
|
+
const path = `/mailboxes/v1/${id}/messages${qs.toString() ? "?" + qs.toString() : ""}`;
|
|
213
|
+
return this.client.request(path, {
|
|
214
|
+
headers: { Authorization: `Bearer ${serviceKey}` },
|
|
215
|
+
context: "listing emails",
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
/** Get a single message by id, including any replies. */
|
|
219
|
+
async get(projectId, messageId) {
|
|
220
|
+
const { id, serviceKey } = await this.resolveMailbox(projectId);
|
|
221
|
+
return this.client.request(`/mailboxes/v1/${id}/messages/${messageId}`, {
|
|
222
|
+
headers: { Authorization: `Bearer ${serviceKey}` },
|
|
223
|
+
context: "getting email",
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Fetch the raw RFC-822 bytes of an inbound message. Returns `Uint8Array`
|
|
228
|
+
* so the consumer can decode / store / forward without re-encoding.
|
|
229
|
+
*/
|
|
230
|
+
async getRaw(projectId, messageId) {
|
|
231
|
+
const { id, serviceKey } = await this.resolveMailbox(projectId);
|
|
232
|
+
const url = `${this.client.apiBase}/mailboxes/v1/${id}/messages/${messageId}/raw`;
|
|
233
|
+
const res = await this.client.fetch(url, {
|
|
234
|
+
headers: { Authorization: `Bearer ${serviceKey}` },
|
|
235
|
+
});
|
|
236
|
+
if (!res.ok) {
|
|
237
|
+
let body;
|
|
238
|
+
try {
|
|
239
|
+
body = await res.json();
|
|
240
|
+
}
|
|
241
|
+
catch {
|
|
242
|
+
body = await res.text().catch(() => "");
|
|
243
|
+
}
|
|
244
|
+
throw new ApiError(`Fetching raw MIME failed (HTTP ${res.status})`, res.status, body, "fetching raw MIME");
|
|
245
|
+
}
|
|
246
|
+
const buf = await res.arrayBuffer();
|
|
247
|
+
return {
|
|
248
|
+
content_type: res.headers.get("content-type") ?? "message/rfc822",
|
|
249
|
+
bytes: new Uint8Array(buf),
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
/** Get the project's mailbox info. Uses the cached mailbox_id when available. */
|
|
253
|
+
async getMailbox(projectId) {
|
|
254
|
+
const project = await this.client.getProject(projectId);
|
|
255
|
+
if (!project)
|
|
256
|
+
throw new ProjectNotFound(projectId, "getting mailbox");
|
|
257
|
+
const list = await this.listMailboxes(project.service_key);
|
|
258
|
+
if (list.length === 0) {
|
|
259
|
+
throw new ApiError("No mailbox found for this project. Use `create_mailbox` to create one first.", 404, null, "getting mailbox");
|
|
260
|
+
}
|
|
261
|
+
const mb = list[0];
|
|
262
|
+
const updater = this.client.credentials.updateProject;
|
|
263
|
+
if (updater) {
|
|
264
|
+
try {
|
|
265
|
+
await updater.call(this.client.credentials, projectId, {
|
|
266
|
+
mailbox_id: mb.mailbox_id,
|
|
267
|
+
mailbox_address: mb.address,
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
catch {
|
|
271
|
+
// best-effort
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
return mb;
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Delete the project's mailbox. Destructive — drops all messages and
|
|
278
|
+
* webhook subscriptions. Pass `mailboxId` explicitly to delete a specific
|
|
279
|
+
* mailbox; otherwise the project's current mailbox is resolved.
|
|
280
|
+
*/
|
|
281
|
+
async deleteMailbox(projectId, mailboxId) {
|
|
282
|
+
const project = await this.client.getProject(projectId);
|
|
283
|
+
if (!project)
|
|
284
|
+
throw new ProjectNotFound(projectId, "deleting mailbox");
|
|
285
|
+
let id = mailboxId;
|
|
286
|
+
if (!id) {
|
|
287
|
+
if (project.mailbox_id) {
|
|
288
|
+
id = project.mailbox_id;
|
|
289
|
+
}
|
|
290
|
+
else {
|
|
291
|
+
const list = await this.listMailboxes(project.service_key);
|
|
292
|
+
if (list.length === 0) {
|
|
293
|
+
throw new ApiError("No mailbox found for this project — nothing to delete.", 404, null, "deleting mailbox");
|
|
294
|
+
}
|
|
295
|
+
id = list[0].mailbox_id;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
await this.client.request(`/mailboxes/v1/${id}`, {
|
|
299
|
+
method: "DELETE",
|
|
300
|
+
headers: { Authorization: `Bearer ${project.service_key}` },
|
|
301
|
+
context: "deleting mailbox",
|
|
302
|
+
});
|
|
303
|
+
// Clear the cached mailbox_id so future calls re-discover.
|
|
304
|
+
const updater = this.client.credentials.updateProject;
|
|
305
|
+
if (updater) {
|
|
306
|
+
try {
|
|
307
|
+
await updater.call(this.client.credentials, projectId, {
|
|
308
|
+
mailbox_id: undefined,
|
|
309
|
+
mailbox_address: undefined,
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
catch {
|
|
313
|
+
// best-effort
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
//# sourceMappingURL=email.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email.js","sourceRoot":"","sources":["../../src/namespaces/email.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `functions` namespace — serverless function lifecycle.
|
|
3
|
+
*
|
|
4
|
+
* Covers deploy/invoke/logs/list/delete/update against
|
|
5
|
+
* `/projects/v1/admin/:id/functions*` and `/functions/v1/:name`.
|
|
6
|
+
*/
|
|
7
|
+
import type { Client } from "../kernel.js";
|
|
8
|
+
import type { FunctionDeployOptions, FunctionDeployResult, FunctionInvokeOptions, FunctionInvokeResult, FunctionListResult, FunctionLogsOptions, FunctionLogsResult, FunctionUpdateOptions, FunctionUpdateResult } from "./functions.types.js";
|
|
9
|
+
export declare class Functions {
|
|
10
|
+
private readonly client;
|
|
11
|
+
constructor(client: Client);
|
|
12
|
+
/**
|
|
13
|
+
* Deploy a serverless function. Pre-bundled packages include `stripe`,
|
|
14
|
+
* `openai`, `@anthropic-ai/sdk`, `resend`, `zod`, `uuid`, `jsonwebtoken`,
|
|
15
|
+
* `bcryptjs`, `cheerio`, `csv-parse`. Additional deps are bundled when
|
|
16
|
+
* listed in `opts.deps`.
|
|
17
|
+
*
|
|
18
|
+
* @throws {PaymentRequired} when the project lease has expired.
|
|
19
|
+
*/
|
|
20
|
+
deploy(projectId: string, opts: FunctionDeployOptions): Promise<FunctionDeployResult>;
|
|
21
|
+
/**
|
|
22
|
+
* Invoke a deployed function via HTTP. Uses the project's service key as
|
|
23
|
+
* the API key. The returned `body` is parsed JSON when the response was
|
|
24
|
+
* JSON, otherwise the raw text.
|
|
25
|
+
*/
|
|
26
|
+
invoke(projectId: string, name: string, opts?: FunctionInvokeOptions): Promise<FunctionInvokeResult>;
|
|
27
|
+
/**
|
|
28
|
+
* Get recent logs for a function. Default tail 50; `since` accepts an ISO
|
|
29
|
+
* 8601 timestamp for incremental polling.
|
|
30
|
+
*/
|
|
31
|
+
logs(projectId: string, name: string, opts?: FunctionLogsOptions): Promise<FunctionLogsResult>;
|
|
32
|
+
/** List deployed functions for a project. */
|
|
33
|
+
list(projectId: string): Promise<FunctionListResult>;
|
|
34
|
+
/** Delete a deployed function. */
|
|
35
|
+
delete(projectId: string, name: string): Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
* Update a function's schedule / timeout / memory without re-deploying.
|
|
38
|
+
* Pass `schedule: null` to remove an existing schedule; `undefined`
|
|
39
|
+
* leaves it unchanged.
|
|
40
|
+
*/
|
|
41
|
+
update(projectId: string, name: string, opts: FunctionUpdateOptions): Promise<FunctionUpdateResult>;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=functions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../../src/namespaces/functions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,KAAK,EACV,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACrB,MAAM,sBAAsB,CAAC;AAE9B,qBAAa,SAAS;IACR,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAE3C;;;;;;;OAOG;IACG,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAuB3F;;;;OAIG;IACG,MAAM,CACV,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,qBAA0B,GAC/B,OAAO,CAAC,oBAAoB,CAAC;IAgChC;;;OAGG;IACG,IAAI,CACR,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,mBAAwB,GAC7B,OAAO,CAAC,kBAAkB,CAAC;IAiB9B,6CAA6C;IACvC,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAa1D,kCAAkC;IAC5B,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc5D;;;;OAIG;IACG,MAAM,CACV,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,oBAAoB,CAAC;CAuBjC"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `functions` namespace — serverless function lifecycle.
|
|
3
|
+
*
|
|
4
|
+
* Covers deploy/invoke/logs/list/delete/update against
|
|
5
|
+
* `/projects/v1/admin/:id/functions*` and `/functions/v1/:name`.
|
|
6
|
+
*/
|
|
7
|
+
import { ProjectNotFound } from "../errors.js";
|
|
8
|
+
export class Functions {
|
|
9
|
+
client;
|
|
10
|
+
constructor(client) {
|
|
11
|
+
this.client = client;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Deploy a serverless function. Pre-bundled packages include `stripe`,
|
|
15
|
+
* `openai`, `@anthropic-ai/sdk`, `resend`, `zod`, `uuid`, `jsonwebtoken`,
|
|
16
|
+
* `bcryptjs`, `cheerio`, `csv-parse`. Additional deps are bundled when
|
|
17
|
+
* listed in `opts.deps`.
|
|
18
|
+
*
|
|
19
|
+
* @throws {PaymentRequired} when the project lease has expired.
|
|
20
|
+
*/
|
|
21
|
+
async deploy(projectId, opts) {
|
|
22
|
+
const project = await this.client.getProject(projectId);
|
|
23
|
+
if (!project)
|
|
24
|
+
throw new ProjectNotFound(projectId, "deploying function");
|
|
25
|
+
const body = {
|
|
26
|
+
name: opts.name,
|
|
27
|
+
code: opts.code,
|
|
28
|
+
};
|
|
29
|
+
if (opts.config !== undefined)
|
|
30
|
+
body.config = opts.config;
|
|
31
|
+
if (opts.deps !== undefined)
|
|
32
|
+
body.deps = opts.deps;
|
|
33
|
+
if (opts.schedule !== undefined)
|
|
34
|
+
body.schedule = opts.schedule;
|
|
35
|
+
return this.client.request(`/projects/v1/admin/${projectId}/functions`, {
|
|
36
|
+
method: "POST",
|
|
37
|
+
headers: { Authorization: `Bearer ${project.service_key}` },
|
|
38
|
+
body,
|
|
39
|
+
context: "deploying function",
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Invoke a deployed function via HTTP. Uses the project's service key as
|
|
44
|
+
* the API key. The returned `body` is parsed JSON when the response was
|
|
45
|
+
* JSON, otherwise the raw text.
|
|
46
|
+
*/
|
|
47
|
+
async invoke(projectId, name, opts = {}) {
|
|
48
|
+
const project = await this.client.getProject(projectId);
|
|
49
|
+
if (!project)
|
|
50
|
+
throw new ProjectNotFound(projectId, "invoking function");
|
|
51
|
+
const method = opts.method ?? "POST";
|
|
52
|
+
const headers = {
|
|
53
|
+
apikey: project.service_key,
|
|
54
|
+
...(opts.headers ?? {}),
|
|
55
|
+
};
|
|
56
|
+
const requestOpts = {
|
|
57
|
+
method,
|
|
58
|
+
headers,
|
|
59
|
+
context: "invoking function",
|
|
60
|
+
};
|
|
61
|
+
if (method !== "GET" && method !== "HEAD" && opts.body !== undefined) {
|
|
62
|
+
if (typeof opts.body === "string") {
|
|
63
|
+
requestOpts.rawBody = opts.body;
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
requestOpts.body = opts.body;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
const start = Date.now();
|
|
70
|
+
const body = await this.client.request(`/functions/v1/${name}`, requestOpts);
|
|
71
|
+
return {
|
|
72
|
+
status: 200,
|
|
73
|
+
body,
|
|
74
|
+
duration_ms: Date.now() - start,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Get recent logs for a function. Default tail 50; `since` accepts an ISO
|
|
79
|
+
* 8601 timestamp for incremental polling.
|
|
80
|
+
*/
|
|
81
|
+
async logs(projectId, name, opts = {}) {
|
|
82
|
+
const project = await this.client.getProject(projectId);
|
|
83
|
+
if (!project)
|
|
84
|
+
throw new ProjectNotFound(projectId, "fetching function logs");
|
|
85
|
+
const tail = opts.tail ?? 50;
|
|
86
|
+
let path = `/projects/v1/admin/${projectId}/functions/${encodeURIComponent(name)}/logs?tail=${tail}`;
|
|
87
|
+
if (opts.since) {
|
|
88
|
+
const sinceMs = new Date(opts.since).getTime();
|
|
89
|
+
if (!Number.isNaN(sinceMs))
|
|
90
|
+
path += `&since=${sinceMs}`;
|
|
91
|
+
}
|
|
92
|
+
return this.client.request(path, {
|
|
93
|
+
headers: { Authorization: `Bearer ${project.service_key}` },
|
|
94
|
+
context: "fetching function logs",
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
/** List deployed functions for a project. */
|
|
98
|
+
async list(projectId) {
|
|
99
|
+
const project = await this.client.getProject(projectId);
|
|
100
|
+
if (!project)
|
|
101
|
+
throw new ProjectNotFound(projectId, "listing functions");
|
|
102
|
+
return this.client.request(`/projects/v1/admin/${projectId}/functions`, {
|
|
103
|
+
headers: { Authorization: `Bearer ${project.service_key}` },
|
|
104
|
+
context: "listing functions",
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
/** Delete a deployed function. */
|
|
108
|
+
async delete(projectId, name) {
|
|
109
|
+
const project = await this.client.getProject(projectId);
|
|
110
|
+
if (!project)
|
|
111
|
+
throw new ProjectNotFound(projectId, "deleting function");
|
|
112
|
+
await this.client.request(`/projects/v1/admin/${projectId}/functions/${encodeURIComponent(name)}`, {
|
|
113
|
+
method: "DELETE",
|
|
114
|
+
headers: { Authorization: `Bearer ${project.service_key}` },
|
|
115
|
+
context: "deleting function",
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Update a function's schedule / timeout / memory without re-deploying.
|
|
120
|
+
* Pass `schedule: null` to remove an existing schedule; `undefined`
|
|
121
|
+
* leaves it unchanged.
|
|
122
|
+
*/
|
|
123
|
+
async update(projectId, name, opts) {
|
|
124
|
+
const project = await this.client.getProject(projectId);
|
|
125
|
+
if (!project)
|
|
126
|
+
throw new ProjectNotFound(projectId, "updating function");
|
|
127
|
+
const body = {};
|
|
128
|
+
if (opts.schedule !== undefined)
|
|
129
|
+
body.schedule = opts.schedule;
|
|
130
|
+
if (opts.timeout !== undefined || opts.memory !== undefined) {
|
|
131
|
+
const config = {};
|
|
132
|
+
if (opts.timeout !== undefined)
|
|
133
|
+
config.timeout = opts.timeout;
|
|
134
|
+
if (opts.memory !== undefined)
|
|
135
|
+
config.memory = opts.memory;
|
|
136
|
+
body.config = config;
|
|
137
|
+
}
|
|
138
|
+
return this.client.request(`/projects/v1/admin/${projectId}/functions/${encodeURIComponent(name)}`, {
|
|
139
|
+
method: "PATCH",
|
|
140
|
+
headers: { Authorization: `Bearer ${project.service_key}` },
|
|
141
|
+
body,
|
|
142
|
+
context: "updating function",
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=functions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../../src/namespaces/functions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Request and response types for the `functions` namespace.
|
|
3
|
+
* Maps to `/projects/v1/admin/:id/functions*` and `/functions/v1/:name`.
|
|
4
|
+
*/
|
|
5
|
+
export interface FunctionConfig {
|
|
6
|
+
/** Timeout in seconds. Tier limits apply. */
|
|
7
|
+
timeout?: number;
|
|
8
|
+
/** Memory in MB. Tier limits apply. */
|
|
9
|
+
memory?: number;
|
|
10
|
+
}
|
|
11
|
+
export interface FunctionDeployOptions {
|
|
12
|
+
/** Function name — URL-safe slug, used in the invoke path. */
|
|
13
|
+
name: string;
|
|
14
|
+
/** Source code. TypeScript or JavaScript. Must `export default async (req: Request) => Response`. */
|
|
15
|
+
code: string;
|
|
16
|
+
config?: FunctionConfig;
|
|
17
|
+
/** Additional npm packages to bundle with the function (beyond the pre-bundled set). */
|
|
18
|
+
deps?: string[];
|
|
19
|
+
/** Cron schedule (5-field). Omit to deploy without a schedule. */
|
|
20
|
+
schedule?: string | null;
|
|
21
|
+
}
|
|
22
|
+
export interface FunctionDeployResult {
|
|
23
|
+
name: string;
|
|
24
|
+
url: string;
|
|
25
|
+
status: string;
|
|
26
|
+
runtime: string;
|
|
27
|
+
timeout: number;
|
|
28
|
+
memory: number;
|
|
29
|
+
schedule?: string | null;
|
|
30
|
+
created_at: string;
|
|
31
|
+
}
|
|
32
|
+
export interface FunctionInvokeOptions {
|
|
33
|
+
/** HTTP method. Default `POST`. */
|
|
34
|
+
method?: string;
|
|
35
|
+
/** Request body. Sent as JSON when an object, as-is when a string. */
|
|
36
|
+
body?: string | Record<string, unknown>;
|
|
37
|
+
/** Extra headers to forward. */
|
|
38
|
+
headers?: Record<string, string>;
|
|
39
|
+
}
|
|
40
|
+
export interface FunctionInvokeResult {
|
|
41
|
+
status: number;
|
|
42
|
+
/** Parsed JSON body if the response was JSON, otherwise the raw text. */
|
|
43
|
+
body: unknown;
|
|
44
|
+
/** Wall-clock duration in milliseconds. */
|
|
45
|
+
duration_ms: number;
|
|
46
|
+
}
|
|
47
|
+
export interface FunctionLogEntry {
|
|
48
|
+
timestamp: string;
|
|
49
|
+
message: string;
|
|
50
|
+
}
|
|
51
|
+
export interface FunctionLogsOptions {
|
|
52
|
+
/** Number of log lines. Server clamps to 200. Default 50. */
|
|
53
|
+
tail?: number;
|
|
54
|
+
/** Only return logs at or after this ISO 8601 timestamp. */
|
|
55
|
+
since?: string;
|
|
56
|
+
}
|
|
57
|
+
export interface FunctionLogsResult {
|
|
58
|
+
logs: FunctionLogEntry[];
|
|
59
|
+
}
|
|
60
|
+
export interface FunctionScheduleMeta {
|
|
61
|
+
last_run_at?: string;
|
|
62
|
+
last_status?: number;
|
|
63
|
+
next_run_at?: string;
|
|
64
|
+
run_count?: number;
|
|
65
|
+
last_error?: string | null;
|
|
66
|
+
}
|
|
67
|
+
export interface FunctionSummary {
|
|
68
|
+
name: string;
|
|
69
|
+
url: string;
|
|
70
|
+
runtime: string;
|
|
71
|
+
timeout: number;
|
|
72
|
+
memory: number;
|
|
73
|
+
schedule?: string | null;
|
|
74
|
+
schedule_meta?: FunctionScheduleMeta | null;
|
|
75
|
+
created_at: string;
|
|
76
|
+
updated_at: string;
|
|
77
|
+
}
|
|
78
|
+
export interface FunctionListResult {
|
|
79
|
+
functions: FunctionSummary[];
|
|
80
|
+
}
|
|
81
|
+
export interface FunctionUpdateOptions {
|
|
82
|
+
/** Pass `null` to remove an existing schedule. `undefined` leaves the schedule unchanged. */
|
|
83
|
+
schedule?: string | null;
|
|
84
|
+
timeout?: number;
|
|
85
|
+
memory?: number;
|
|
86
|
+
}
|
|
87
|
+
export interface FunctionUpdateResult {
|
|
88
|
+
name: string;
|
|
89
|
+
runtime: string;
|
|
90
|
+
timeout: number;
|
|
91
|
+
memory: number;
|
|
92
|
+
schedule: string | null;
|
|
93
|
+
schedule_meta: Record<string, unknown> | null;
|
|
94
|
+
updated_at: string;
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=functions.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"functions.types.d.ts","sourceRoot":"","sources":["../../src/namespaces/functions.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"functions.types.js","sourceRoot":"","sources":["../../src/namespaces/functions.types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|