@eusend_dev/sdk 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -0
- package/dist/index.cjs +11 -5
- package/dist/index.d.cts +10 -0
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +10 -0
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +11 -5
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -463,6 +463,20 @@ const { data } = await client.broadcasts.create({
|
|
|
463
463
|
})
|
|
464
464
|
```
|
|
465
465
|
|
|
466
|
+
You can also pass a React Email component via `react`, a saved template via `templateId`, or plain HTML. With `react`, the SDK renders to HTML locally before submitting:
|
|
467
|
+
|
|
468
|
+
```tsx
|
|
469
|
+
import { MayNewsletter } from './emails/may-newsletter'
|
|
470
|
+
|
|
471
|
+
await client.broadcasts.create({
|
|
472
|
+
name: 'May newsletter',
|
|
473
|
+
audienceId: 'aud_...',
|
|
474
|
+
from: 'Sivert <hello@yourdomain.com>',
|
|
475
|
+
subject: 'May update',
|
|
476
|
+
react: <MayNewsletter />,
|
|
477
|
+
})
|
|
478
|
+
```
|
|
479
|
+
|
|
466
480
|
`{{first_name}}`, `{{last_name}}`, `{{full_name}}`, and `{{email}}` are automatically available per recipient. Custom variables can be defined on the broadcast and are merged with per-recipient data.
|
|
467
481
|
|
|
468
482
|
### Send a broadcast
|
package/dist/index.cjs
CHANGED
|
@@ -275,17 +275,22 @@ var Webhooks = class {
|
|
|
275
275
|
};
|
|
276
276
|
//#endregion
|
|
277
277
|
//#region src/broadcasts.ts
|
|
278
|
+
async function resolveBroadcastHtml(options) {
|
|
279
|
+
if (options.html) return options.html;
|
|
280
|
+
if (options.react) return renderReactEmail(options.react);
|
|
281
|
+
}
|
|
278
282
|
var Broadcasts = class {
|
|
279
283
|
constructor(client) {
|
|
280
284
|
this.client = client;
|
|
281
285
|
}
|
|
282
|
-
create(options) {
|
|
286
|
+
async create(options) {
|
|
287
|
+
const html = await resolveBroadcastHtml(options);
|
|
283
288
|
return this.client.post("/broadcasts", {
|
|
284
289
|
name: options.name,
|
|
285
290
|
audience_id: options.audienceId,
|
|
286
291
|
from: options.from,
|
|
287
292
|
subject: options.subject,
|
|
288
|
-
html
|
|
293
|
+
html,
|
|
289
294
|
template_id: options.templateId,
|
|
290
295
|
template_variables: options.templateVariables
|
|
291
296
|
});
|
|
@@ -302,13 +307,14 @@ var Broadcasts = class {
|
|
|
302
307
|
get(id) {
|
|
303
308
|
return this.client.get(`/broadcasts/${id}`);
|
|
304
309
|
}
|
|
305
|
-
update(id, options) {
|
|
310
|
+
async update(id, options) {
|
|
311
|
+
const html = await resolveBroadcastHtml(options);
|
|
306
312
|
return this.client.patch(`/broadcasts/${id}`, {
|
|
307
313
|
name: options.name,
|
|
308
314
|
audience_id: options.audienceId,
|
|
309
315
|
from: options.from,
|
|
310
316
|
subject: options.subject,
|
|
311
|
-
html
|
|
317
|
+
html,
|
|
312
318
|
template_id: options.templateId,
|
|
313
319
|
template_variables: options.templateVariables,
|
|
314
320
|
scheduled_at: options.scheduledAt
|
|
@@ -327,7 +333,7 @@ var Broadcasts = class {
|
|
|
327
333
|
//#endregion
|
|
328
334
|
//#region src/eusend.ts
|
|
329
335
|
const DEFAULT_BASE_URL = "https://api.eusend.dev";
|
|
330
|
-
const SDK_VERSION = "0.3.
|
|
336
|
+
const SDK_VERSION = "0.3.1";
|
|
331
337
|
var Eusend = class {
|
|
332
338
|
constructor(key, options) {
|
|
333
339
|
const apiKey = key ?? (typeof process !== "undefined" ? process.env["EUSEND_API_KEY"] : void 0);
|
package/dist/index.d.cts
CHANGED
|
@@ -342,6 +342,12 @@ interface CreateBroadcastOptions {
|
|
|
342
342
|
from: string;
|
|
343
343
|
subject: string;
|
|
344
344
|
html?: string;
|
|
345
|
+
/**
|
|
346
|
+
* A React Email component. The SDK renders it to HTML locally before sending —
|
|
347
|
+
* the JSX source never travels over the wire. Requires `@react-email/render`
|
|
348
|
+
* and `react` as peer dependencies. Ignored when `html` is also provided.
|
|
349
|
+
*/
|
|
350
|
+
react?: ReactEmailElement;
|
|
345
351
|
templateId?: string;
|
|
346
352
|
templateVariables?: Record<string, string>;
|
|
347
353
|
}
|
|
@@ -351,6 +357,10 @@ interface UpdateBroadcastOptions {
|
|
|
351
357
|
from?: string;
|
|
352
358
|
subject?: string;
|
|
353
359
|
html?: string;
|
|
360
|
+
/**
|
|
361
|
+
* See `react` on CreateBroadcastOptions. Rendered to HTML locally before sending.
|
|
362
|
+
*/
|
|
363
|
+
react?: ReactEmailElement;
|
|
354
364
|
templateId?: string | null;
|
|
355
365
|
templateVariables?: Record<string, string> | null;
|
|
356
366
|
scheduledAt?: string | null;
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/interfaces.ts","../src/react-render.ts","../src/emails.ts","../src/domains.ts","../src/api-keys.ts","../src/audiences.ts","../src/templates.ts","../src/webhooks.ts","../src/broadcasts.ts","../src/eusend.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/interfaces.ts","../src/react-render.ts","../src/emails.ts","../src/domains.ts","../src/api-keys.ts","../src/audiences.ts","../src/templates.ts","../src/webhooks.ts","../src/broadcasts.ts","../src/eusend.ts"],"mappings":"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"}
|
package/dist/index.d.mts
CHANGED
|
@@ -342,6 +342,12 @@ interface CreateBroadcastOptions {
|
|
|
342
342
|
from: string;
|
|
343
343
|
subject: string;
|
|
344
344
|
html?: string;
|
|
345
|
+
/**
|
|
346
|
+
* A React Email component. The SDK renders it to HTML locally before sending —
|
|
347
|
+
* the JSX source never travels over the wire. Requires `@react-email/render`
|
|
348
|
+
* and `react` as peer dependencies. Ignored when `html` is also provided.
|
|
349
|
+
*/
|
|
350
|
+
react?: ReactEmailElement;
|
|
345
351
|
templateId?: string;
|
|
346
352
|
templateVariables?: Record<string, string>;
|
|
347
353
|
}
|
|
@@ -351,6 +357,10 @@ interface UpdateBroadcastOptions {
|
|
|
351
357
|
from?: string;
|
|
352
358
|
subject?: string;
|
|
353
359
|
html?: string;
|
|
360
|
+
/**
|
|
361
|
+
* See `react` on CreateBroadcastOptions. Rendered to HTML locally before sending.
|
|
362
|
+
*/
|
|
363
|
+
react?: ReactEmailElement;
|
|
354
364
|
templateId?: string | null;
|
|
355
365
|
templateVariables?: Record<string, string> | null;
|
|
356
366
|
scheduledAt?: string | null;
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/interfaces.ts","../src/react-render.ts","../src/emails.ts","../src/domains.ts","../src/api-keys.ts","../src/audiences.ts","../src/templates.ts","../src/webhooks.ts","../src/broadcasts.ts","../src/eusend.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/interfaces.ts","../src/react-render.ts","../src/emails.ts","../src/domains.ts","../src/api-keys.ts","../src/audiences.ts","../src/templates.ts","../src/webhooks.ts","../src/broadcasts.ts","../src/eusend.ts"],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -274,17 +274,22 @@ var Webhooks = class {
|
|
|
274
274
|
};
|
|
275
275
|
//#endregion
|
|
276
276
|
//#region src/broadcasts.ts
|
|
277
|
+
async function resolveBroadcastHtml(options) {
|
|
278
|
+
if (options.html) return options.html;
|
|
279
|
+
if (options.react) return renderReactEmail(options.react);
|
|
280
|
+
}
|
|
277
281
|
var Broadcasts = class {
|
|
278
282
|
constructor(client) {
|
|
279
283
|
this.client = client;
|
|
280
284
|
}
|
|
281
|
-
create(options) {
|
|
285
|
+
async create(options) {
|
|
286
|
+
const html = await resolveBroadcastHtml(options);
|
|
282
287
|
return this.client.post("/broadcasts", {
|
|
283
288
|
name: options.name,
|
|
284
289
|
audience_id: options.audienceId,
|
|
285
290
|
from: options.from,
|
|
286
291
|
subject: options.subject,
|
|
287
|
-
html
|
|
292
|
+
html,
|
|
288
293
|
template_id: options.templateId,
|
|
289
294
|
template_variables: options.templateVariables
|
|
290
295
|
});
|
|
@@ -301,13 +306,14 @@ var Broadcasts = class {
|
|
|
301
306
|
get(id) {
|
|
302
307
|
return this.client.get(`/broadcasts/${id}`);
|
|
303
308
|
}
|
|
304
|
-
update(id, options) {
|
|
309
|
+
async update(id, options) {
|
|
310
|
+
const html = await resolveBroadcastHtml(options);
|
|
305
311
|
return this.client.patch(`/broadcasts/${id}`, {
|
|
306
312
|
name: options.name,
|
|
307
313
|
audience_id: options.audienceId,
|
|
308
314
|
from: options.from,
|
|
309
315
|
subject: options.subject,
|
|
310
|
-
html
|
|
316
|
+
html,
|
|
311
317
|
template_id: options.templateId,
|
|
312
318
|
template_variables: options.templateVariables,
|
|
313
319
|
scheduled_at: options.scheduledAt
|
|
@@ -326,7 +332,7 @@ var Broadcasts = class {
|
|
|
326
332
|
//#endregion
|
|
327
333
|
//#region src/eusend.ts
|
|
328
334
|
const DEFAULT_BASE_URL = "https://api.eusend.dev";
|
|
329
|
-
const SDK_VERSION = "0.3.
|
|
335
|
+
const SDK_VERSION = "0.3.1";
|
|
330
336
|
var Eusend = class {
|
|
331
337
|
constructor(key, options) {
|
|
332
338
|
const apiKey = key ?? (typeof process !== "undefined" ? process.env["EUSEND_API_KEY"] : void 0);
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../src/react-render.ts","../src/emails.ts","../src/domains.ts","../src/api-keys.ts","../src/audiences.ts","../src/templates.ts","../src/webhooks.ts","../src/broadcasts.ts","../src/eusend.ts"],"sourcesContent":["// Minimal structural type so the SDK doesn't take a hard dependency on `react`.\n// Real React elements assignable to this; users who pass `react:` are expected to\n// have `react` and `@react-email/render` installed (declared as optional peers).\nexport type ReactEmailElement = {\n readonly type: unknown;\n readonly props: unknown;\n readonly key: string | number | null;\n};\n\nlet renderPromise: Promise<(element: ReactEmailElement) => Promise<string>> | null = null;\n\nasync function getRender(): Promise<(element: ReactEmailElement) => Promise<string>> {\n if (!renderPromise) {\n renderPromise = (async () => {\n try {\n const mod = (await import('@react-email/render')) as {\n render: (element: unknown, options?: { plainText?: boolean }) => Promise<string> | string;\n };\n return (element: ReactEmailElement) => Promise.resolve(mod.render(element));\n } catch {\n throw new Error(\n \"Passing `react:` requires `@react-email/render` and `react` to be installed. \" +\n 'Run: npm install @react-email/render react',\n );\n }\n })();\n }\n return renderPromise;\n}\n\nexport async function renderReactEmail(element: ReactEmailElement): Promise<string> {\n const render = await getRender();\n return render(element);\n}\n","import type { Eusend } from './eusend';\r\nimport type { EusendResponse } from './interfaces';\r\nimport { renderReactEmail, type ReactEmailElement } from './react-render';\r\n\r\nexport type EmailStatus =\r\n | 'queued'\r\n | 'sending'\r\n | 'sent'\r\n | 'delivered'\r\n | 'bounced'\r\n | 'complained'\r\n | 'suppressed'\r\n | 'failed';\r\n\r\nexport type EmailEventType =\r\n | 'sent'\r\n | 'delivered'\r\n | 'opened'\r\n | 'clicked'\r\n | 'bounced'\r\n | 'complained';\r\n\r\nexport interface SendEmailOptions {\r\n from: string;\r\n to: string | string[];\r\n cc?: string | string[];\r\n bcc?: string | string[];\r\n replyTo?: string | string[];\r\n subject?: string;\r\n html?: string;\r\n text?: string;\r\n /**\r\n * A React Email component. The SDK renders it to HTML locally before sending\r\n * — the JSX source never travels over the wire. Requires `@react-email/render`\r\n * and `react` as peer dependencies. Ignored when `html` is also provided.\r\n */\r\n react?: ReactEmailElement;\r\n templateId?: string;\r\n variables?: Record<string, unknown>;\r\n headers?: Record<string, string>;\r\n trackOpens?: boolean;\r\n trackClicks?: boolean;\r\n}\r\n\r\nexport interface SendEmailRequestOptions {\r\n idempotencyKey?: string;\r\n}\r\n\r\nexport interface SendEmailResponse {\r\n id: string;\r\n}\r\n\r\nexport interface BatchSendResponse {\r\n data: SendEmailResponse[];\r\n}\r\n\r\nexport interface EmailEvent {\r\n id: string;\r\n type: EmailEventType;\r\n metadata: Record<string, unknown>;\r\n createdAt: string;\r\n}\r\n\r\nexport interface Email {\r\n id: string;\r\n from: string;\r\n to: string[];\r\n cc: string[];\r\n bcc: string[];\r\n replyTo: string[];\r\n subject: string;\r\n html: string | null;\r\n text: string | null;\r\n status: EmailStatus;\r\n testMode: boolean;\r\n templateId: string | null;\r\n createdAt: string;\r\n events: EmailEvent[];\r\n}\r\n\r\nexport interface EmailListItem {\r\n id: string;\r\n from: string;\r\n to: string[];\r\n subject: string;\r\n status: EmailStatus;\r\n testMode: boolean;\r\n createdAt: string;\r\n}\r\n\r\nexport interface ListEmailsOptions {\r\n limit?: number;\r\n cursor?: string;\r\n status?: EmailStatus;\r\n from?: string;\r\n to?: string;\r\n}\r\n\r\nexport interface ListEmailsResponse {\r\n data: EmailListItem[];\r\n nextCursor: string | null;\r\n}\r\n\r\nasync function resolveHtml(options: SendEmailOptions): Promise<string | undefined> {\r\n if (options.html) return options.html;\r\n if (options.react) return renderReactEmail(options.react);\r\n return undefined;\r\n}\r\n\r\nasync function toApiPayload(options: SendEmailOptions) {\r\n const html = await resolveHtml(options);\r\n return {\r\n from: options.from,\r\n to: options.to,\r\n cc: options.cc,\r\n bcc: options.bcc,\r\n reply_to: options.replyTo,\r\n subject: options.subject,\r\n html,\r\n text: options.text,\r\n template_id: options.templateId,\r\n variables: options.variables,\r\n headers: options.headers,\r\n track_opens: options.trackOpens,\r\n track_clicks: options.trackClicks,\r\n };\r\n}\r\n\r\nexport class Emails {\r\n constructor(private readonly client: Eusend) {}\r\n\r\n async send(\r\n options: SendEmailOptions,\r\n requestOptions?: SendEmailRequestOptions,\r\n ): Promise<EusendResponse<SendEmailResponse>> {\r\n const extraHeaders: Record<string, string> = {};\r\n if (requestOptions?.idempotencyKey) {\r\n extraHeaders['Idempotency-Key'] = requestOptions.idempotencyKey;\r\n }\r\n const payload = await toApiPayload(options);\r\n return this.client.post<SendEmailResponse>('/emails', payload, extraHeaders);\r\n }\r\n\r\n async batch(\r\n emails: SendEmailOptions[],\r\n ): Promise<EusendResponse<BatchSendResponse>> {\r\n const payloads = await Promise.all(emails.map(toApiPayload));\r\n return this.client.post<BatchSendResponse>('/emails/batch', {\r\n emails: payloads,\r\n });\r\n }\r\n\r\n async list(options: ListEmailsOptions = {}): Promise<EusendResponse<ListEmailsResponse>> {\r\n const params = new URLSearchParams();\r\n if (options.limit != null) params.set('limit', String(options.limit));\r\n if (options.cursor) params.set('cursor', options.cursor);\r\n if (options.status) params.set('status', options.status);\r\n if (options.from) params.set('from', options.from);\r\n if (options.to) params.set('to', options.to);\r\n const qs = params.toString();\r\n\r\n const res = await this.client.get<{ data: EmailListItem[]; next_cursor: string | null }>(\r\n qs ? `/emails?${qs}` : '/emails',\r\n );\r\n if (res.error) return res;\r\n return {\r\n data: { data: res.data.data, nextCursor: res.data.next_cursor },\r\n error: null,\r\n headers: res.headers,\r\n };\r\n }\r\n\r\n get(id: string): Promise<EusendResponse<Email>> {\r\n return this.client.get<Email>(`/emails/${id}`);\r\n }\r\n}\r\n","import type { Eusend } from './eusend';\r\nimport type { EusendResponse } from './interfaces';\r\n\r\nexport type DomainStatus = 'pending' | 'verified' | 'failed';\r\n\r\nexport interface DnsRecord {\r\n type: string;\r\n name: string;\r\n value: string;\r\n}\r\n\r\nexport interface CreateDomainResponse {\r\n id: string;\r\n name: string;\r\n dkim: DnsRecord;\r\n spf: DnsRecord;\r\n dmarc: DnsRecord;\r\n}\r\n\r\nexport interface DomainListItem {\r\n id: string;\r\n name: string;\r\n status: DomainStatus;\r\n createdAt: string;\r\n}\r\n\r\nexport interface Domain {\r\n id: string;\r\n name: string;\r\n dkimPublicKey: string;\r\n dkimSelector: string;\r\n status: DomainStatus;\r\n createdAt: string;\r\n verifiedAt: string | null;\r\n}\r\n\r\nexport class Domains {\r\n constructor(private readonly client: Eusend) {}\r\n\r\n create(name: string): Promise<EusendResponse<CreateDomainResponse>> {\r\n return this.client.post<CreateDomainResponse>('/domains', { name });\r\n }\r\n\r\n list(): Promise<EusendResponse<DomainListItem[]>> {\r\n return this.client.get<DomainListItem[]>('/domains');\r\n }\r\n\r\n get(id: string): Promise<EusendResponse<Domain>> {\r\n return this.client.get<Domain>(`/domains/${id}`);\r\n }\r\n\r\n delete(id: string): Promise<EusendResponse<{ message: string }>> {\r\n return this.client.delete<{ message: string }>(`/domains/${id}`);\r\n }\r\n\r\n verify(id: string): Promise<EusendResponse<{ message: string }>> {\r\n return this.client.post<{ message: string }>(`/domains/${id}/verify`);\r\n }\r\n}\r\n","import type { Eusend } from './eusend';\r\nimport type { EusendResponse } from './interfaces';\r\n\r\nexport interface CreateApiKeyOptions {\r\n name: string;\r\n testMode?: boolean;\r\n}\r\n\r\nexport interface CreateApiKeyResponse {\r\n id: string;\r\n name: string;\r\n key: string;\r\n prefix: string;\r\n testMode: boolean;\r\n createdAt: string;\r\n}\r\n\r\nexport interface ApiKey {\r\n id: string;\r\n name: string;\r\n prefix: string;\r\n testMode: boolean;\r\n createdAt: string;\r\n lastUsedAt: string | null;\r\n}\r\n\r\ntype CreateApiKeyApiResponse = {\r\n id: string;\r\n name: string;\r\n key: string;\r\n prefix: string;\r\n test_mode: boolean;\r\n created_at: string;\r\n};\r\n\r\nexport class ApiKeys {\r\n constructor(private readonly client: Eusend) {}\r\n\r\n async create(options: CreateApiKeyOptions): Promise<EusendResponse<CreateApiKeyResponse>> {\r\n const res = await this.client.post<CreateApiKeyApiResponse>('/api-keys', {\r\n name: options.name,\r\n test_mode: options.testMode ?? false,\r\n });\r\n if (res.error) return res;\r\n return {\r\n data: {\r\n id: res.data.id,\r\n name: res.data.name,\r\n key: res.data.key,\r\n prefix: res.data.prefix,\r\n testMode: res.data.test_mode,\r\n createdAt: res.data.created_at,\r\n },\r\n error: null,\r\n headers: res.headers,\r\n };\r\n }\r\n\r\n list(): Promise<EusendResponse<ApiKey[]>> {\r\n return this.client.get<ApiKey[]>('/api-keys');\r\n }\r\n\r\n delete(id: string): Promise<EusendResponse<{ message: string }>> {\r\n return this.client.delete<{ message: string }>(`/api-keys/${id}`);\r\n }\r\n}\r\n","import type { Eusend } from './eusend';\r\nimport type { EusendResponse } from './interfaces';\r\n\r\nexport type ContactStatus = 'subscribed' | 'unsubscribed';\r\n\r\nexport interface Audience {\r\n id: string;\r\n name: string;\r\n organizationId: string;\r\n createdAt: string;\r\n updatedAt: string;\r\n}\r\n\r\nexport interface AudienceListItem {\r\n id: string;\r\n name: string;\r\n createdAt: string;\r\n contactCount: number;\r\n}\r\n\r\nexport interface Contact {\r\n id: string;\r\n audienceId: string;\r\n email: string;\r\n firstName: string | null;\r\n lastName: string | null;\r\n status: ContactStatus;\r\n unsubscribedAt: string | null;\r\n createdAt: string;\r\n updatedAt: string;\r\n}\r\n\r\nexport interface CreateContactOptions {\r\n email: string;\r\n firstName?: string;\r\n lastName?: string;\r\n}\r\n\r\nexport interface UpdateContactOptions {\r\n firstName?: string;\r\n lastName?: string;\r\n unsubscribed?: boolean;\r\n}\r\n\r\nexport interface ListContactsOptions {\r\n limit?: number;\r\n cursor?: string;\r\n search?: string;\r\n subscribed?: boolean;\r\n}\r\n\r\nexport interface ListContactsResponse {\r\n data: Contact[];\r\n nextCursor: string | null;\r\n}\r\n\r\nexport interface BatchCreateContactsOptions {\r\n contacts: CreateContactOptions[];\r\n}\r\n\r\nexport class Audiences {\r\n constructor(private readonly client: Eusend) {}\r\n\r\n create(name: string): Promise<EusendResponse<Audience>> {\r\n return this.client.post<Audience>('/audiences', { name });\r\n }\r\n\r\n async list(): Promise<EusendResponse<AudienceListItem[]>> {\r\n const res = await this.client.get<{ data: AudienceListItem[] }>('/audiences');\r\n if (res.error) return res;\r\n return { data: res.data.data, error: null, headers: res.headers };\r\n }\r\n\r\n delete(id: string): Promise<EusendResponse<Record<string, never>>> {\r\n return this.client.delete<Record<string, never>>(`/audiences/${id}`);\r\n }\r\n\r\n createContact(\r\n audienceId: string,\r\n options: CreateContactOptions,\r\n ): Promise<EusendResponse<Contact>> {\r\n return this.client.post<Contact>(`/audiences/${audienceId}/contacts`, {\r\n email: options.email,\r\n first_name: options.firstName,\r\n last_name: options.lastName,\r\n });\r\n }\r\n\r\n async listContacts(\r\n audienceId: string,\r\n options: ListContactsOptions = {},\r\n ): Promise<EusendResponse<ListContactsResponse>> {\r\n const params = new URLSearchParams();\r\n if (options.limit != null) params.set('limit', String(options.limit));\r\n if (options.cursor) params.set('cursor', options.cursor);\r\n if (options.search) params.set('search', options.search);\r\n if (options.subscribed != null) params.set('subscribed', String(options.subscribed));\r\n const qs = params.toString();\r\n return this.client.get<ListContactsResponse>(\r\n qs ? `/audiences/${audienceId}/contacts?${qs}` : `/audiences/${audienceId}/contacts`,\r\n );\r\n }\r\n\r\n getContact(audienceId: string, contactId: string): Promise<EusendResponse<Contact>> {\r\n return this.client.get<Contact>(`/audiences/${audienceId}/contacts/${contactId}`);\r\n }\r\n\r\n updateContact(\r\n audienceId: string,\r\n contactId: string,\r\n options: UpdateContactOptions,\r\n ): Promise<EusendResponse<Contact>> {\r\n return this.client.patch<Contact>(`/audiences/${audienceId}/contacts/${contactId}`, {\r\n first_name: options.firstName,\r\n last_name: options.lastName,\r\n unsubscribed: options.unsubscribed,\r\n });\r\n }\r\n\r\n deleteContact(\r\n audienceId: string,\r\n contactId: string,\r\n ): Promise<EusendResponse<Record<string, never>>> {\r\n return this.client.delete<Record<string, never>>(\r\n `/audiences/${audienceId}/contacts/${contactId}`,\r\n );\r\n }\r\n\r\n batchCreateContacts(\r\n audienceId: string,\r\n options: BatchCreateContactsOptions,\r\n ): Promise<EusendResponse<{ count: number }>> {\r\n return this.client.post<{ count: number }>(`/audiences/${audienceId}/contacts/batch`, {\r\n contacts: options.contacts.map((c) => ({\r\n email: c.email,\r\n first_name: c.firstName,\r\n last_name: c.lastName,\r\n })),\r\n });\r\n }\r\n}\r\n","import type { Eusend } from './eusend';\nimport type { EusendResponse } from './interfaces';\nimport { renderReactEmail, type ReactEmailElement } from './react-render';\n\ninterface TemplateHtmlOrReact {\n /**\n * A React Email component. The SDK renders it to HTML locally before sending.\n * Requires `@react-email/render` and `react` as peer dependencies.\n * Ignored when `html` is also provided.\n */\n react?: ReactEmailElement;\n}\n\nexport interface CreateTemplateOptions extends TemplateHtmlOrReact {\n name: string;\n subject: string;\n html?: string;\n}\n\nexport interface UpdateTemplateOptions extends TemplateHtmlOrReact {\n name?: string;\n subject?: string;\n html?: string;\n}\n\nexport interface Template {\n id: string;\n name: string;\n subject: string;\n html: string | null;\n reactSource: string | null;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface TemplateListItem {\n id: string;\n name: string;\n subject: string;\n createdAt: string;\n updatedAt: string;\n}\n\nasync function resolveTemplateHtml(\n options: TemplateHtmlOrReact & { html?: string },\n): Promise<string | undefined> {\n if (options.html) return options.html;\n if (options.react) return renderReactEmail(options.react);\n return undefined;\n}\n\nexport class Templates {\n constructor(private readonly client: Eusend) {}\n\n async create(options: CreateTemplateOptions): Promise<EusendResponse<Template>> {\n const html = await resolveTemplateHtml(options);\n if (!html) {\n return {\n data: null,\n error: {\n message: 'Either html or react is required',\n statusCode: null,\n name: 'VALIDATION_ERROR',\n },\n headers: null,\n };\n }\n return this.client.post<Template>('/templates', {\n name: options.name,\n subject: options.subject,\n html,\n });\n }\n\n async list(): Promise<EusendResponse<TemplateListItem[]>> {\n const res = await this.client.get<{ data: TemplateListItem[] }>('/templates');\n if (res.error) return res;\n return { data: res.data.data, error: null, headers: res.headers };\n }\n\n get(id: string): Promise<EusendResponse<Template>> {\n return this.client.get<Template>(`/templates/${id}`);\n }\n\n async update(id: string, options: UpdateTemplateOptions): Promise<EusendResponse<Template>> {\n const html = await resolveTemplateHtml(options);\n return this.client.patch<Template>(`/templates/${id}`, {\n name: options.name,\n subject: options.subject,\n html,\n });\n }\n\n delete(id: string): Promise<EusendResponse<Record<string, never>>> {\n return this.client.delete<Record<string, never>>(`/templates/${id}`);\n }\n}\n","import type { Eusend } from './eusend';\r\nimport type { EusendResponse } from './interfaces';\r\n\r\nexport type WebhookEvent =\r\n | 'email.sent'\r\n | 'email.delivered'\r\n | 'email.bounced'\r\n | 'email.complained'\r\n | 'email.opened'\r\n | 'email.clicked'\r\n | '*';\r\n\r\nexport interface CreateWebhookOptions {\r\n url: string;\r\n events: WebhookEvent[];\r\n}\r\n\r\nexport interface UpdateWebhookOptions {\r\n url?: string;\r\n events?: WebhookEvent[];\r\n}\r\n\r\nexport interface WebhookDelivery {\r\n id: string;\r\n webhookId: string;\r\n emailId: string | null;\r\n eventType: string;\r\n payload: Record<string, unknown>;\r\n status: 'pending' | 'success' | 'failed';\r\n responseStatus: number | null;\r\n attempts: number;\r\n createdAt: string;\r\n lastAttemptAt: string | null;\r\n}\r\n\r\nexport interface Webhook {\r\n id: string;\r\n url: string;\r\n events: WebhookEvent[];\r\n createdAt: string;\r\n}\r\n\r\nexport interface WebhookWithDeliveries extends Webhook {\r\n deliveries: WebhookDelivery[];\r\n}\r\n\r\nexport interface CreateWebhookResponse extends Webhook {\r\n secret: string;\r\n}\r\n\r\nexport class Webhooks {\r\n constructor(private readonly client: Eusend) {}\r\n\r\n create(options: CreateWebhookOptions): Promise<EusendResponse<CreateWebhookResponse>> {\r\n return this.client.post<CreateWebhookResponse>('/webhooks', {\r\n url: options.url,\r\n events: options.events,\r\n });\r\n }\r\n\r\n async list(): Promise<EusendResponse<Webhook[]>> {\r\n const res = await this.client.get<{ data: Webhook[] }>('/webhooks');\r\n if (res.error) return res;\r\n return { data: res.data.data, error: null, headers: res.headers };\r\n }\r\n\r\n get(id: string): Promise<EusendResponse<WebhookWithDeliveries>> {\r\n return this.client.get<WebhookWithDeliveries>(`/webhooks/${id}`);\r\n }\r\n\r\n update(id: string, options: UpdateWebhookOptions): Promise<EusendResponse<Webhook>> {\r\n return this.client.patch<Webhook>(`/webhooks/${id}`, {\r\n url: options.url,\r\n events: options.events,\r\n });\r\n }\r\n\r\n delete(id: string): Promise<EusendResponse<Record<string, never>>> {\r\n return this.client.delete<Record<string, never>>(`/webhooks/${id}`);\r\n }\r\n}\r\n","import type { Eusend } from './eusend';\r\nimport type { EusendResponse } from './interfaces';\r\n\r\nexport type BroadcastStatus =\r\n | 'draft'\r\n | 'scheduled'\r\n | 'sending'\r\n | 'sent'\r\n | 'paused'\r\n | 'cancelled';\r\n\r\nexport interface CreateBroadcastOptions {\r\n name: string;\r\n audienceId: string;\r\n from: string;\r\n subject: string;\r\n html?: string;\r\n templateId?: string;\r\n templateVariables?: Record<string, string>;\r\n}\r\n\r\nexport interface UpdateBroadcastOptions {\r\n name?: string;\r\n audienceId?: string;\r\n from?: string;\r\n subject?: string;\r\n html?: string;\r\n templateId?: string | null;\r\n templateVariables?: Record<string, string> | null;\r\n scheduledAt?: string | null;\r\n}\r\n\r\nexport interface SendBroadcastOptions {\r\n scheduledAt?: string;\r\n}\r\n\r\nexport interface Broadcast {\r\n id: string;\r\n name: string;\r\n status: BroadcastStatus;\r\n audienceId: string;\r\n fromAddress: string;\r\n subject: string;\r\n html: string | null;\r\n templateId: string | null;\r\n templateVariables: Record<string, string> | null;\r\n scheduledAt: string | null;\r\n createdAt: string;\r\n updatedAt: string;\r\n}\r\n\r\nexport interface BroadcastListItem {\r\n id: string;\r\n name: string;\r\n status: BroadcastStatus;\r\n audienceId: string;\r\n fromAddress: string;\r\n subject: string;\r\n recipientCount: number | null;\r\n sentCount: number | null;\r\n scheduledAt: string | null;\r\n startedAt: string | null;\r\n completedAt: string | null;\r\n createdAt: string;\r\n audienceName: string | null;\r\n}\r\n\r\nexport interface BroadcastDetail extends Broadcast {\r\n recipientCount: number | null;\r\n sentCount: number | null;\r\n startedAt: string | null;\r\n completedAt: string | null;\r\n stats: Record<string, number>;\r\n}\r\n\r\nexport interface SendBroadcastResponse {\r\n id: string;\r\n status: 'sending' | 'scheduled';\r\n scheduledAt: string | null;\r\n}\r\n\r\nexport class Broadcasts {\r\n constructor(private readonly client: Eusend) {}\r\n\r\n create(options: CreateBroadcastOptions): Promise<EusendResponse<Broadcast>> {\r\n return this.client.post<Broadcast>('/broadcasts', {\r\n name: options.name,\r\n audience_id: options.audienceId,\r\n from: options.from,\r\n subject: options.subject,\r\n html: options.html,\r\n template_id: options.templateId,\r\n template_variables: options.templateVariables,\r\n });\r\n }\r\n\r\n async list(): Promise<EusendResponse<BroadcastListItem[]>> {\r\n const res = await this.client.get<{ data: BroadcastListItem[] }>('/broadcasts');\r\n if (res.error) return res;\r\n return { data: res.data.data, error: null, headers: res.headers };\r\n }\r\n\r\n get(id: string): Promise<EusendResponse<BroadcastDetail>> {\r\n return this.client.get<BroadcastDetail>(`/broadcasts/${id}`);\r\n }\r\n\r\n update(id: string, options: UpdateBroadcastOptions): Promise<EusendResponse<Broadcast>> {\r\n return this.client.patch<Broadcast>(`/broadcasts/${id}`, {\r\n name: options.name,\r\n audience_id: options.audienceId,\r\n from: options.from,\r\n subject: options.subject,\r\n html: options.html,\r\n template_id: options.templateId,\r\n template_variables: options.templateVariables,\r\n scheduled_at: options.scheduledAt,\r\n });\r\n }\r\n\r\n send(id: string, options: SendBroadcastOptions = {}): Promise<EusendResponse<SendBroadcastResponse>> {\r\n return this.client.post<SendBroadcastResponse>(`/broadcasts/${id}/send`, {\r\n scheduled_at: options.scheduledAt,\r\n });\r\n }\r\n\r\n cancel(id: string): Promise<EusendResponse<Broadcast>> {\r\n return this.client.post<Broadcast>(`/broadcasts/${id}/cancel`);\r\n }\r\n\r\n delete(id: string): Promise<EusendResponse<Record<string, never>>> {\r\n return this.client.delete<Record<string, never>>(`/broadcasts/${id}`);\r\n }\r\n}\r\n","import type { EusendError, EusendResponse } from './interfaces';\r\nimport { Emails } from './emails';\r\nimport { Domains } from './domains';\r\nimport { ApiKeys } from './api-keys';\r\nimport { Audiences } from './audiences';\r\nimport { Templates } from './templates';\r\nimport { Webhooks } from './webhooks';\r\nimport { Broadcasts } from './broadcasts';\r\n\r\nconst DEFAULT_BASE_URL = 'https://api.eusend.dev';\r\nconst SDK_VERSION = '0.3.0';\r\n\r\nexport interface EusendOptions {\r\n baseUrl?: string;\r\n}\r\n\r\nexport class Eusend {\r\n readonly baseUrl: string;\r\n private readonly apiKey: string;\r\n\r\n readonly emails: Emails;\r\n readonly domains: Domains;\r\n readonly apiKeys: ApiKeys;\r\n readonly audiences: Audiences;\r\n readonly templates: Templates;\r\n readonly webhooks: Webhooks;\r\n readonly broadcasts: Broadcasts;\r\n\r\n constructor(key?: string, options?: EusendOptions) {\r\n const apiKey =\r\n key ?? (typeof process !== 'undefined' ? process.env['EUSEND_API_KEY'] : undefined);\r\n if (!apiKey) {\r\n throw new Error(\r\n 'Missing Eusend API key. Pass it to the constructor or set the EUSEND_API_KEY environment variable.',\r\n );\r\n }\r\n this.apiKey = apiKey;\r\n this.baseUrl = options?.baseUrl ?? DEFAULT_BASE_URL;\r\n\r\n this.emails = new Emails(this);\r\n this.domains = new Domains(this);\r\n this.apiKeys = new ApiKeys(this);\r\n this.audiences = new Audiences(this);\r\n this.templates = new Templates(this);\r\n this.webhooks = new Webhooks(this);\r\n this.broadcasts = new Broadcasts(this);\r\n }\r\n\r\n async fetchRequest<T>(\r\n path: string,\r\n init: RequestInit = {},\r\n extraHeaders: Record<string, string> = {},\r\n ): Promise<EusendResponse<T>> {\r\n const headers: Record<string, string> = {\r\n Authorization: `Bearer ${this.apiKey}`,\r\n 'Content-Type': 'application/json',\r\n 'User-Agent': `eusend-node/${SDK_VERSION}`,\r\n ...extraHeaders,\r\n };\r\n\r\n try {\r\n const res = await fetch(`${this.baseUrl}${path}`, { ...init, headers });\r\n const responseHeaders = Object.fromEntries(res.headers.entries());\r\n\r\n if (!res.ok) {\r\n let error: EusendError;\r\n try {\r\n const json = (await res.json()) as { error?: string; code?: string };\r\n error = {\r\n message: json.error ?? 'Unknown error',\r\n statusCode: res.status,\r\n name: ((json.code as EusendError['name']) ?? 'INTERNAL_ERROR'),\r\n };\r\n } catch {\r\n error = { message: 'Request failed', statusCode: res.status, name: 'INTERNAL_ERROR' };\r\n }\r\n return { data: null, error, headers: responseHeaders };\r\n }\r\n\r\n if (res.status === 204 || res.headers.get('content-length') === '0') {\r\n return { data: {} as T, error: null, headers: responseHeaders };\r\n }\r\n\r\n const data = (await res.json()) as T;\r\n return { data, error: null, headers: responseHeaders };\r\n } catch {\r\n return {\r\n data: null,\r\n error: {\r\n message: 'Network request failed. The request could not be resolved.',\r\n statusCode: null,\r\n name: 'application_error',\r\n },\r\n headers: null,\r\n };\r\n }\r\n }\r\n\r\n get<T>(path: string, extraHeaders?: Record<string, string>): Promise<EusendResponse<T>> {\r\n return this.fetchRequest<T>(path, { method: 'GET' }, extraHeaders);\r\n }\r\n\r\n post<T>(\r\n path: string,\r\n body?: unknown,\r\n extraHeaders?: Record<string, string>,\r\n ): Promise<EusendResponse<T>> {\r\n return this.fetchRequest<T>(\r\n path,\r\n { method: 'POST', body: body != null ? JSON.stringify(body) : undefined },\r\n extraHeaders,\r\n );\r\n }\r\n\r\n patch<T>(path: string, body?: unknown): Promise<EusendResponse<T>> {\r\n return this.fetchRequest<T>(path, {\r\n method: 'PATCH',\r\n body: body != null ? JSON.stringify(body) : undefined,\r\n });\r\n }\r\n\r\n delete<T>(path: string): Promise<EusendResponse<T>> {\r\n return this.fetchRequest<T>(path, { method: 'DELETE' });\r\n }\r\n}\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../src/react-render.ts","../src/emails.ts","../src/domains.ts","../src/api-keys.ts","../src/audiences.ts","../src/templates.ts","../src/webhooks.ts","../src/broadcasts.ts","../src/eusend.ts"],"sourcesContent":["// Minimal structural type so the SDK doesn't take a hard dependency on `react`.\n// Real React elements assignable to this; users who pass `react:` are expected to\n// have `react` and `@react-email/render` installed (declared as optional peers).\nexport type ReactEmailElement = {\n readonly type: unknown;\n readonly props: unknown;\n readonly key: string | number | null;\n};\n\nlet renderPromise: Promise<(element: ReactEmailElement) => Promise<string>> | null = null;\n\nasync function getRender(): Promise<(element: ReactEmailElement) => Promise<string>> {\n if (!renderPromise) {\n renderPromise = (async () => {\n try {\n const mod = (await import('@react-email/render')) as {\n render: (element: unknown, options?: { plainText?: boolean }) => Promise<string> | string;\n };\n return (element: ReactEmailElement) => Promise.resolve(mod.render(element));\n } catch {\n throw new Error(\n \"Passing `react:` requires `@react-email/render` and `react` to be installed. \" +\n 'Run: npm install @react-email/render react',\n );\n }\n })();\n }\n return renderPromise;\n}\n\nexport async function renderReactEmail(element: ReactEmailElement): Promise<string> {\n const render = await getRender();\n return render(element);\n}\n","import type { Eusend } from './eusend';\r\nimport type { EusendResponse } from './interfaces';\r\nimport { renderReactEmail, type ReactEmailElement } from './react-render';\r\n\r\nexport type EmailStatus =\r\n | 'queued'\r\n | 'sending'\r\n | 'sent'\r\n | 'delivered'\r\n | 'bounced'\r\n | 'complained'\r\n | 'suppressed'\r\n | 'failed';\r\n\r\nexport type EmailEventType =\r\n | 'sent'\r\n | 'delivered'\r\n | 'opened'\r\n | 'clicked'\r\n | 'bounced'\r\n | 'complained';\r\n\r\nexport interface SendEmailOptions {\r\n from: string;\r\n to: string | string[];\r\n cc?: string | string[];\r\n bcc?: string | string[];\r\n replyTo?: string | string[];\r\n subject?: string;\r\n html?: string;\r\n text?: string;\r\n /**\r\n * A React Email component. The SDK renders it to HTML locally before sending\r\n * — the JSX source never travels over the wire. Requires `@react-email/render`\r\n * and `react` as peer dependencies. Ignored when `html` is also provided.\r\n */\r\n react?: ReactEmailElement;\r\n templateId?: string;\r\n variables?: Record<string, unknown>;\r\n headers?: Record<string, string>;\r\n trackOpens?: boolean;\r\n trackClicks?: boolean;\r\n}\r\n\r\nexport interface SendEmailRequestOptions {\r\n idempotencyKey?: string;\r\n}\r\n\r\nexport interface SendEmailResponse {\r\n id: string;\r\n}\r\n\r\nexport interface BatchSendResponse {\r\n data: SendEmailResponse[];\r\n}\r\n\r\nexport interface EmailEvent {\r\n id: string;\r\n type: EmailEventType;\r\n metadata: Record<string, unknown>;\r\n createdAt: string;\r\n}\r\n\r\nexport interface Email {\r\n id: string;\r\n from: string;\r\n to: string[];\r\n cc: string[];\r\n bcc: string[];\r\n replyTo: string[];\r\n subject: string;\r\n html: string | null;\r\n text: string | null;\r\n status: EmailStatus;\r\n testMode: boolean;\r\n templateId: string | null;\r\n createdAt: string;\r\n events: EmailEvent[];\r\n}\r\n\r\nexport interface EmailListItem {\r\n id: string;\r\n from: string;\r\n to: string[];\r\n subject: string;\r\n status: EmailStatus;\r\n testMode: boolean;\r\n createdAt: string;\r\n}\r\n\r\nexport interface ListEmailsOptions {\r\n limit?: number;\r\n cursor?: string;\r\n status?: EmailStatus;\r\n from?: string;\r\n to?: string;\r\n}\r\n\r\nexport interface ListEmailsResponse {\r\n data: EmailListItem[];\r\n nextCursor: string | null;\r\n}\r\n\r\nasync function resolveHtml(options: SendEmailOptions): Promise<string | undefined> {\r\n if (options.html) return options.html;\r\n if (options.react) return renderReactEmail(options.react);\r\n return undefined;\r\n}\r\n\r\nasync function toApiPayload(options: SendEmailOptions) {\r\n const html = await resolveHtml(options);\r\n return {\r\n from: options.from,\r\n to: options.to,\r\n cc: options.cc,\r\n bcc: options.bcc,\r\n reply_to: options.replyTo,\r\n subject: options.subject,\r\n html,\r\n text: options.text,\r\n template_id: options.templateId,\r\n variables: options.variables,\r\n headers: options.headers,\r\n track_opens: options.trackOpens,\r\n track_clicks: options.trackClicks,\r\n };\r\n}\r\n\r\nexport class Emails {\r\n constructor(private readonly client: Eusend) {}\r\n\r\n async send(\r\n options: SendEmailOptions,\r\n requestOptions?: SendEmailRequestOptions,\r\n ): Promise<EusendResponse<SendEmailResponse>> {\r\n const extraHeaders: Record<string, string> = {};\r\n if (requestOptions?.idempotencyKey) {\r\n extraHeaders['Idempotency-Key'] = requestOptions.idempotencyKey;\r\n }\r\n const payload = await toApiPayload(options);\r\n return this.client.post<SendEmailResponse>('/emails', payload, extraHeaders);\r\n }\r\n\r\n async batch(\r\n emails: SendEmailOptions[],\r\n ): Promise<EusendResponse<BatchSendResponse>> {\r\n const payloads = await Promise.all(emails.map(toApiPayload));\r\n return this.client.post<BatchSendResponse>('/emails/batch', {\r\n emails: payloads,\r\n });\r\n }\r\n\r\n async list(options: ListEmailsOptions = {}): Promise<EusendResponse<ListEmailsResponse>> {\r\n const params = new URLSearchParams();\r\n if (options.limit != null) params.set('limit', String(options.limit));\r\n if (options.cursor) params.set('cursor', options.cursor);\r\n if (options.status) params.set('status', options.status);\r\n if (options.from) params.set('from', options.from);\r\n if (options.to) params.set('to', options.to);\r\n const qs = params.toString();\r\n\r\n const res = await this.client.get<{ data: EmailListItem[]; next_cursor: string | null }>(\r\n qs ? `/emails?${qs}` : '/emails',\r\n );\r\n if (res.error) return res;\r\n return {\r\n data: { data: res.data.data, nextCursor: res.data.next_cursor },\r\n error: null,\r\n headers: res.headers,\r\n };\r\n }\r\n\r\n get(id: string): Promise<EusendResponse<Email>> {\r\n return this.client.get<Email>(`/emails/${id}`);\r\n }\r\n}\r\n","import type { Eusend } from './eusend';\r\nimport type { EusendResponse } from './interfaces';\r\n\r\nexport type DomainStatus = 'pending' | 'verified' | 'failed';\r\n\r\nexport interface DnsRecord {\r\n type: string;\r\n name: string;\r\n value: string;\r\n}\r\n\r\nexport interface CreateDomainResponse {\r\n id: string;\r\n name: string;\r\n dkim: DnsRecord;\r\n spf: DnsRecord;\r\n dmarc: DnsRecord;\r\n}\r\n\r\nexport interface DomainListItem {\r\n id: string;\r\n name: string;\r\n status: DomainStatus;\r\n createdAt: string;\r\n}\r\n\r\nexport interface Domain {\r\n id: string;\r\n name: string;\r\n dkimPublicKey: string;\r\n dkimSelector: string;\r\n status: DomainStatus;\r\n createdAt: string;\r\n verifiedAt: string | null;\r\n}\r\n\r\nexport class Domains {\r\n constructor(private readonly client: Eusend) {}\r\n\r\n create(name: string): Promise<EusendResponse<CreateDomainResponse>> {\r\n return this.client.post<CreateDomainResponse>('/domains', { name });\r\n }\r\n\r\n list(): Promise<EusendResponse<DomainListItem[]>> {\r\n return this.client.get<DomainListItem[]>('/domains');\r\n }\r\n\r\n get(id: string): Promise<EusendResponse<Domain>> {\r\n return this.client.get<Domain>(`/domains/${id}`);\r\n }\r\n\r\n delete(id: string): Promise<EusendResponse<{ message: string }>> {\r\n return this.client.delete<{ message: string }>(`/domains/${id}`);\r\n }\r\n\r\n verify(id: string): Promise<EusendResponse<{ message: string }>> {\r\n return this.client.post<{ message: string }>(`/domains/${id}/verify`);\r\n }\r\n}\r\n","import type { Eusend } from './eusend';\r\nimport type { EusendResponse } from './interfaces';\r\n\r\nexport interface CreateApiKeyOptions {\r\n name: string;\r\n testMode?: boolean;\r\n}\r\n\r\nexport interface CreateApiKeyResponse {\r\n id: string;\r\n name: string;\r\n key: string;\r\n prefix: string;\r\n testMode: boolean;\r\n createdAt: string;\r\n}\r\n\r\nexport interface ApiKey {\r\n id: string;\r\n name: string;\r\n prefix: string;\r\n testMode: boolean;\r\n createdAt: string;\r\n lastUsedAt: string | null;\r\n}\r\n\r\ntype CreateApiKeyApiResponse = {\r\n id: string;\r\n name: string;\r\n key: string;\r\n prefix: string;\r\n test_mode: boolean;\r\n created_at: string;\r\n};\r\n\r\nexport class ApiKeys {\r\n constructor(private readonly client: Eusend) {}\r\n\r\n async create(options: CreateApiKeyOptions): Promise<EusendResponse<CreateApiKeyResponse>> {\r\n const res = await this.client.post<CreateApiKeyApiResponse>('/api-keys', {\r\n name: options.name,\r\n test_mode: options.testMode ?? false,\r\n });\r\n if (res.error) return res;\r\n return {\r\n data: {\r\n id: res.data.id,\r\n name: res.data.name,\r\n key: res.data.key,\r\n prefix: res.data.prefix,\r\n testMode: res.data.test_mode,\r\n createdAt: res.data.created_at,\r\n },\r\n error: null,\r\n headers: res.headers,\r\n };\r\n }\r\n\r\n list(): Promise<EusendResponse<ApiKey[]>> {\r\n return this.client.get<ApiKey[]>('/api-keys');\r\n }\r\n\r\n delete(id: string): Promise<EusendResponse<{ message: string }>> {\r\n return this.client.delete<{ message: string }>(`/api-keys/${id}`);\r\n }\r\n}\r\n","import type { Eusend } from './eusend';\r\nimport type { EusendResponse } from './interfaces';\r\n\r\nexport type ContactStatus = 'subscribed' | 'unsubscribed';\r\n\r\nexport interface Audience {\r\n id: string;\r\n name: string;\r\n organizationId: string;\r\n createdAt: string;\r\n updatedAt: string;\r\n}\r\n\r\nexport interface AudienceListItem {\r\n id: string;\r\n name: string;\r\n createdAt: string;\r\n contactCount: number;\r\n}\r\n\r\nexport interface Contact {\r\n id: string;\r\n audienceId: string;\r\n email: string;\r\n firstName: string | null;\r\n lastName: string | null;\r\n status: ContactStatus;\r\n unsubscribedAt: string | null;\r\n createdAt: string;\r\n updatedAt: string;\r\n}\r\n\r\nexport interface CreateContactOptions {\r\n email: string;\r\n firstName?: string;\r\n lastName?: string;\r\n}\r\n\r\nexport interface UpdateContactOptions {\r\n firstName?: string;\r\n lastName?: string;\r\n unsubscribed?: boolean;\r\n}\r\n\r\nexport interface ListContactsOptions {\r\n limit?: number;\r\n cursor?: string;\r\n search?: string;\r\n subscribed?: boolean;\r\n}\r\n\r\nexport interface ListContactsResponse {\r\n data: Contact[];\r\n nextCursor: string | null;\r\n}\r\n\r\nexport interface BatchCreateContactsOptions {\r\n contacts: CreateContactOptions[];\r\n}\r\n\r\nexport class Audiences {\r\n constructor(private readonly client: Eusend) {}\r\n\r\n create(name: string): Promise<EusendResponse<Audience>> {\r\n return this.client.post<Audience>('/audiences', { name });\r\n }\r\n\r\n async list(): Promise<EusendResponse<AudienceListItem[]>> {\r\n const res = await this.client.get<{ data: AudienceListItem[] }>('/audiences');\r\n if (res.error) return res;\r\n return { data: res.data.data, error: null, headers: res.headers };\r\n }\r\n\r\n delete(id: string): Promise<EusendResponse<Record<string, never>>> {\r\n return this.client.delete<Record<string, never>>(`/audiences/${id}`);\r\n }\r\n\r\n createContact(\r\n audienceId: string,\r\n options: CreateContactOptions,\r\n ): Promise<EusendResponse<Contact>> {\r\n return this.client.post<Contact>(`/audiences/${audienceId}/contacts`, {\r\n email: options.email,\r\n first_name: options.firstName,\r\n last_name: options.lastName,\r\n });\r\n }\r\n\r\n async listContacts(\r\n audienceId: string,\r\n options: ListContactsOptions = {},\r\n ): Promise<EusendResponse<ListContactsResponse>> {\r\n const params = new URLSearchParams();\r\n if (options.limit != null) params.set('limit', String(options.limit));\r\n if (options.cursor) params.set('cursor', options.cursor);\r\n if (options.search) params.set('search', options.search);\r\n if (options.subscribed != null) params.set('subscribed', String(options.subscribed));\r\n const qs = params.toString();\r\n return this.client.get<ListContactsResponse>(\r\n qs ? `/audiences/${audienceId}/contacts?${qs}` : `/audiences/${audienceId}/contacts`,\r\n );\r\n }\r\n\r\n getContact(audienceId: string, contactId: string): Promise<EusendResponse<Contact>> {\r\n return this.client.get<Contact>(`/audiences/${audienceId}/contacts/${contactId}`);\r\n }\r\n\r\n updateContact(\r\n audienceId: string,\r\n contactId: string,\r\n options: UpdateContactOptions,\r\n ): Promise<EusendResponse<Contact>> {\r\n return this.client.patch<Contact>(`/audiences/${audienceId}/contacts/${contactId}`, {\r\n first_name: options.firstName,\r\n last_name: options.lastName,\r\n unsubscribed: options.unsubscribed,\r\n });\r\n }\r\n\r\n deleteContact(\r\n audienceId: string,\r\n contactId: string,\r\n ): Promise<EusendResponse<Record<string, never>>> {\r\n return this.client.delete<Record<string, never>>(\r\n `/audiences/${audienceId}/contacts/${contactId}`,\r\n );\r\n }\r\n\r\n batchCreateContacts(\r\n audienceId: string,\r\n options: BatchCreateContactsOptions,\r\n ): Promise<EusendResponse<{ count: number }>> {\r\n return this.client.post<{ count: number }>(`/audiences/${audienceId}/contacts/batch`, {\r\n contacts: options.contacts.map((c) => ({\r\n email: c.email,\r\n first_name: c.firstName,\r\n last_name: c.lastName,\r\n })),\r\n });\r\n }\r\n}\r\n","import type { Eusend } from './eusend';\nimport type { EusendResponse } from './interfaces';\nimport { renderReactEmail, type ReactEmailElement } from './react-render';\n\ninterface TemplateHtmlOrReact {\n /**\n * A React Email component. The SDK renders it to HTML locally before sending.\n * Requires `@react-email/render` and `react` as peer dependencies.\n * Ignored when `html` is also provided.\n */\n react?: ReactEmailElement;\n}\n\nexport interface CreateTemplateOptions extends TemplateHtmlOrReact {\n name: string;\n subject: string;\n html?: string;\n}\n\nexport interface UpdateTemplateOptions extends TemplateHtmlOrReact {\n name?: string;\n subject?: string;\n html?: string;\n}\n\nexport interface Template {\n id: string;\n name: string;\n subject: string;\n html: string | null;\n reactSource: string | null;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface TemplateListItem {\n id: string;\n name: string;\n subject: string;\n createdAt: string;\n updatedAt: string;\n}\n\nasync function resolveTemplateHtml(\n options: TemplateHtmlOrReact & { html?: string },\n): Promise<string | undefined> {\n if (options.html) return options.html;\n if (options.react) return renderReactEmail(options.react);\n return undefined;\n}\n\nexport class Templates {\n constructor(private readonly client: Eusend) {}\n\n async create(options: CreateTemplateOptions): Promise<EusendResponse<Template>> {\n const html = await resolveTemplateHtml(options);\n if (!html) {\n return {\n data: null,\n error: {\n message: 'Either html or react is required',\n statusCode: null,\n name: 'VALIDATION_ERROR',\n },\n headers: null,\n };\n }\n return this.client.post<Template>('/templates', {\n name: options.name,\n subject: options.subject,\n html,\n });\n }\n\n async list(): Promise<EusendResponse<TemplateListItem[]>> {\n const res = await this.client.get<{ data: TemplateListItem[] }>('/templates');\n if (res.error) return res;\n return { data: res.data.data, error: null, headers: res.headers };\n }\n\n get(id: string): Promise<EusendResponse<Template>> {\n return this.client.get<Template>(`/templates/${id}`);\n }\n\n async update(id: string, options: UpdateTemplateOptions): Promise<EusendResponse<Template>> {\n const html = await resolveTemplateHtml(options);\n return this.client.patch<Template>(`/templates/${id}`, {\n name: options.name,\n subject: options.subject,\n html,\n });\n }\n\n delete(id: string): Promise<EusendResponse<Record<string, never>>> {\n return this.client.delete<Record<string, never>>(`/templates/${id}`);\n }\n}\n","import type { Eusend } from './eusend';\r\nimport type { EusendResponse } from './interfaces';\r\n\r\nexport type WebhookEvent =\r\n | 'email.sent'\r\n | 'email.delivered'\r\n | 'email.bounced'\r\n | 'email.complained'\r\n | 'email.opened'\r\n | 'email.clicked'\r\n | '*';\r\n\r\nexport interface CreateWebhookOptions {\r\n url: string;\r\n events: WebhookEvent[];\r\n}\r\n\r\nexport interface UpdateWebhookOptions {\r\n url?: string;\r\n events?: WebhookEvent[];\r\n}\r\n\r\nexport interface WebhookDelivery {\r\n id: string;\r\n webhookId: string;\r\n emailId: string | null;\r\n eventType: string;\r\n payload: Record<string, unknown>;\r\n status: 'pending' | 'success' | 'failed';\r\n responseStatus: number | null;\r\n attempts: number;\r\n createdAt: string;\r\n lastAttemptAt: string | null;\r\n}\r\n\r\nexport interface Webhook {\r\n id: string;\r\n url: string;\r\n events: WebhookEvent[];\r\n createdAt: string;\r\n}\r\n\r\nexport interface WebhookWithDeliveries extends Webhook {\r\n deliveries: WebhookDelivery[];\r\n}\r\n\r\nexport interface CreateWebhookResponse extends Webhook {\r\n secret: string;\r\n}\r\n\r\nexport class Webhooks {\r\n constructor(private readonly client: Eusend) {}\r\n\r\n create(options: CreateWebhookOptions): Promise<EusendResponse<CreateWebhookResponse>> {\r\n return this.client.post<CreateWebhookResponse>('/webhooks', {\r\n url: options.url,\r\n events: options.events,\r\n });\r\n }\r\n\r\n async list(): Promise<EusendResponse<Webhook[]>> {\r\n const res = await this.client.get<{ data: Webhook[] }>('/webhooks');\r\n if (res.error) return res;\r\n return { data: res.data.data, error: null, headers: res.headers };\r\n }\r\n\r\n get(id: string): Promise<EusendResponse<WebhookWithDeliveries>> {\r\n return this.client.get<WebhookWithDeliveries>(`/webhooks/${id}`);\r\n }\r\n\r\n update(id: string, options: UpdateWebhookOptions): Promise<EusendResponse<Webhook>> {\r\n return this.client.patch<Webhook>(`/webhooks/${id}`, {\r\n url: options.url,\r\n events: options.events,\r\n });\r\n }\r\n\r\n delete(id: string): Promise<EusendResponse<Record<string, never>>> {\r\n return this.client.delete<Record<string, never>>(`/webhooks/${id}`);\r\n }\r\n}\r\n","import type { Eusend } from './eusend';\r\nimport type { EusendResponse } from './interfaces';\r\nimport { renderReactEmail, type ReactEmailElement } from './react-render';\r\n\r\nexport type BroadcastStatus =\r\n | 'draft'\r\n | 'scheduled'\r\n | 'sending'\r\n | 'sent'\r\n | 'paused'\r\n | 'cancelled';\r\n\r\nexport interface CreateBroadcastOptions {\r\n name: string;\r\n audienceId: string;\r\n from: string;\r\n subject: string;\r\n html?: string;\r\n /**\r\n * A React Email component. The SDK renders it to HTML locally before sending —\r\n * the JSX source never travels over the wire. Requires `@react-email/render`\r\n * and `react` as peer dependencies. Ignored when `html` is also provided.\r\n */\r\n react?: ReactEmailElement;\r\n templateId?: string;\r\n templateVariables?: Record<string, string>;\r\n}\r\n\r\nexport interface UpdateBroadcastOptions {\r\n name?: string;\r\n audienceId?: string;\r\n from?: string;\r\n subject?: string;\r\n html?: string;\r\n /**\r\n * See `react` on CreateBroadcastOptions. Rendered to HTML locally before sending.\r\n */\r\n react?: ReactEmailElement;\r\n templateId?: string | null;\r\n templateVariables?: Record<string, string> | null;\r\n scheduledAt?: string | null;\r\n}\r\n\r\nexport interface SendBroadcastOptions {\r\n scheduledAt?: string;\r\n}\r\n\r\nexport interface Broadcast {\r\n id: string;\r\n name: string;\r\n status: BroadcastStatus;\r\n audienceId: string;\r\n fromAddress: string;\r\n subject: string;\r\n html: string | null;\r\n templateId: string | null;\r\n templateVariables: Record<string, string> | null;\r\n scheduledAt: string | null;\r\n createdAt: string;\r\n updatedAt: string;\r\n}\r\n\r\nexport interface BroadcastListItem {\r\n id: string;\r\n name: string;\r\n status: BroadcastStatus;\r\n audienceId: string;\r\n fromAddress: string;\r\n subject: string;\r\n recipientCount: number | null;\r\n sentCount: number | null;\r\n scheduledAt: string | null;\r\n startedAt: string | null;\r\n completedAt: string | null;\r\n createdAt: string;\r\n audienceName: string | null;\r\n}\r\n\r\nexport interface BroadcastDetail extends Broadcast {\r\n recipientCount: number | null;\r\n sentCount: number | null;\r\n startedAt: string | null;\r\n completedAt: string | null;\r\n stats: Record<string, number>;\r\n}\r\n\r\nexport interface SendBroadcastResponse {\r\n id: string;\r\n status: 'sending' | 'scheduled';\r\n scheduledAt: string | null;\r\n}\r\n\r\nasync function resolveBroadcastHtml(\r\n options: { html?: string; react?: ReactEmailElement },\r\n): Promise<string | undefined> {\r\n if (options.html) return options.html;\r\n if (options.react) return renderReactEmail(options.react);\r\n return undefined;\r\n}\r\n\r\nexport class Broadcasts {\r\n constructor(private readonly client: Eusend) {}\r\n\r\n async create(options: CreateBroadcastOptions): Promise<EusendResponse<Broadcast>> {\r\n const html = await resolveBroadcastHtml(options);\r\n return this.client.post<Broadcast>('/broadcasts', {\r\n name: options.name,\r\n audience_id: options.audienceId,\r\n from: options.from,\r\n subject: options.subject,\r\n html,\r\n template_id: options.templateId,\r\n template_variables: options.templateVariables,\r\n });\r\n }\r\n\r\n async list(): Promise<EusendResponse<BroadcastListItem[]>> {\r\n const res = await this.client.get<{ data: BroadcastListItem[] }>('/broadcasts');\r\n if (res.error) return res;\r\n return { data: res.data.data, error: null, headers: res.headers };\r\n }\r\n\r\n get(id: string): Promise<EusendResponse<BroadcastDetail>> {\r\n return this.client.get<BroadcastDetail>(`/broadcasts/${id}`);\r\n }\r\n\r\n async update(id: string, options: UpdateBroadcastOptions): Promise<EusendResponse<Broadcast>> {\r\n const html = await resolveBroadcastHtml(options);\r\n return this.client.patch<Broadcast>(`/broadcasts/${id}`, {\r\n name: options.name,\r\n audience_id: options.audienceId,\r\n from: options.from,\r\n subject: options.subject,\r\n html,\r\n template_id: options.templateId,\r\n template_variables: options.templateVariables,\r\n scheduled_at: options.scheduledAt,\r\n });\r\n }\r\n\r\n send(id: string, options: SendBroadcastOptions = {}): Promise<EusendResponse<SendBroadcastResponse>> {\r\n return this.client.post<SendBroadcastResponse>(`/broadcasts/${id}/send`, {\r\n scheduled_at: options.scheduledAt,\r\n });\r\n }\r\n\r\n cancel(id: string): Promise<EusendResponse<Broadcast>> {\r\n return this.client.post<Broadcast>(`/broadcasts/${id}/cancel`);\r\n }\r\n\r\n delete(id: string): Promise<EusendResponse<Record<string, never>>> {\r\n return this.client.delete<Record<string, never>>(`/broadcasts/${id}`);\r\n }\r\n}\r\n","import type { EusendError, EusendResponse } from './interfaces';\r\nimport { Emails } from './emails';\r\nimport { Domains } from './domains';\r\nimport { ApiKeys } from './api-keys';\r\nimport { Audiences } from './audiences';\r\nimport { Templates } from './templates';\r\nimport { Webhooks } from './webhooks';\r\nimport { Broadcasts } from './broadcasts';\r\n\r\nconst DEFAULT_BASE_URL = 'https://api.eusend.dev';\r\nconst SDK_VERSION = '0.3.1';\r\n\r\nexport interface EusendOptions {\r\n baseUrl?: string;\r\n}\r\n\r\nexport class Eusend {\r\n readonly baseUrl: string;\r\n private readonly apiKey: string;\r\n\r\n readonly emails: Emails;\r\n readonly domains: Domains;\r\n readonly apiKeys: ApiKeys;\r\n readonly audiences: Audiences;\r\n readonly templates: Templates;\r\n readonly webhooks: Webhooks;\r\n readonly broadcasts: Broadcasts;\r\n\r\n constructor(key?: string, options?: EusendOptions) {\r\n const apiKey =\r\n key ?? (typeof process !== 'undefined' ? process.env['EUSEND_API_KEY'] : undefined);\r\n if (!apiKey) {\r\n throw new Error(\r\n 'Missing Eusend API key. Pass it to the constructor or set the EUSEND_API_KEY environment variable.',\r\n );\r\n }\r\n this.apiKey = apiKey;\r\n this.baseUrl = options?.baseUrl ?? DEFAULT_BASE_URL;\r\n\r\n this.emails = new Emails(this);\r\n this.domains = new Domains(this);\r\n this.apiKeys = new ApiKeys(this);\r\n this.audiences = new Audiences(this);\r\n this.templates = new Templates(this);\r\n this.webhooks = new Webhooks(this);\r\n this.broadcasts = new Broadcasts(this);\r\n }\r\n\r\n async fetchRequest<T>(\r\n path: string,\r\n init: RequestInit = {},\r\n extraHeaders: Record<string, string> = {},\r\n ): Promise<EusendResponse<T>> {\r\n const headers: Record<string, string> = {\r\n Authorization: `Bearer ${this.apiKey}`,\r\n 'Content-Type': 'application/json',\r\n 'User-Agent': `eusend-node/${SDK_VERSION}`,\r\n ...extraHeaders,\r\n };\r\n\r\n try {\r\n const res = await fetch(`${this.baseUrl}${path}`, { ...init, headers });\r\n const responseHeaders = Object.fromEntries(res.headers.entries());\r\n\r\n if (!res.ok) {\r\n let error: EusendError;\r\n try {\r\n const json = (await res.json()) as { error?: string; code?: string };\r\n error = {\r\n message: json.error ?? 'Unknown error',\r\n statusCode: res.status,\r\n name: ((json.code as EusendError['name']) ?? 'INTERNAL_ERROR'),\r\n };\r\n } catch {\r\n error = { message: 'Request failed', statusCode: res.status, name: 'INTERNAL_ERROR' };\r\n }\r\n return { data: null, error, headers: responseHeaders };\r\n }\r\n\r\n if (res.status === 204 || res.headers.get('content-length') === '0') {\r\n return { data: {} as T, error: null, headers: responseHeaders };\r\n }\r\n\r\n const data = (await res.json()) as T;\r\n return { data, error: null, headers: responseHeaders };\r\n } catch {\r\n return {\r\n data: null,\r\n error: {\r\n message: 'Network request failed. The request could not be resolved.',\r\n statusCode: null,\r\n name: 'application_error',\r\n },\r\n headers: null,\r\n };\r\n }\r\n }\r\n\r\n get<T>(path: string, extraHeaders?: Record<string, string>): Promise<EusendResponse<T>> {\r\n return this.fetchRequest<T>(path, { method: 'GET' }, extraHeaders);\r\n }\r\n\r\n post<T>(\r\n path: string,\r\n body?: unknown,\r\n extraHeaders?: Record<string, string>,\r\n ): Promise<EusendResponse<T>> {\r\n return this.fetchRequest<T>(\r\n path,\r\n { method: 'POST', body: body != null ? JSON.stringify(body) : undefined },\r\n extraHeaders,\r\n );\r\n }\r\n\r\n patch<T>(path: string, body?: unknown): Promise<EusendResponse<T>> {\r\n return this.fetchRequest<T>(path, {\r\n method: 'PATCH',\r\n body: body != null ? JSON.stringify(body) : undefined,\r\n });\r\n }\r\n\r\n delete<T>(path: string): Promise<EusendResponse<T>> {\r\n return this.fetchRequest<T>(path, { method: 'DELETE' });\r\n }\r\n}\r\n"],"mappings":"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"}
|