@eusend_dev/sdk 0.1.0 → 0.1.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 +537 -536
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +35 -35
package/dist/index.cjs
CHANGED
|
@@ -290,7 +290,7 @@ var Broadcasts = class {
|
|
|
290
290
|
//#endregion
|
|
291
291
|
//#region src/eusend.ts
|
|
292
292
|
const DEFAULT_BASE_URL = "https://api.eusend.dev";
|
|
293
|
-
const SDK_VERSION = "0.1.
|
|
293
|
+
const SDK_VERSION = "0.1.1";
|
|
294
294
|
var Eusend = class {
|
|
295
295
|
constructor(key, options) {
|
|
296
296
|
const apiKey = key ?? (typeof process !== "undefined" ? process.env["EUSEND_API_KEY"] : void 0);
|
package/dist/index.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
//#region src/interfaces.d.ts
|
|
2
|
-
type EusendErrorCode = 'UNAUTHORIZED' | 'FORBIDDEN' | 'NOT_FOUND' | 'VALIDATION_ERROR' | 'RATE_LIMITED' | 'MONTHLY_LIMIT_EXCEEDED' | 'DAILY_LIMIT_EXCEEDED' | 'ALL_SUPPRESSED' | 'INTERNAL_ERROR' | 'CONFLICT' | 'PLAN_LIMIT_EXCEEDED' | 'application_error';
|
|
2
|
+
type EusendErrorCode = 'UNAUTHORIZED' | 'FORBIDDEN' | 'NOT_FOUND' | 'VALIDATION_ERROR' | 'RATE_LIMITED' | 'MONTHLY_LIMIT_EXCEEDED' | 'DAILY_LIMIT_EXCEEDED' | 'ALL_SUPPRESSED' | 'DOMAIN_NOT_VERIFIED' | 'INTERNAL_ERROR' | 'CONFLICT' | 'PLAN_LIMIT_EXCEEDED' | 'application_error';
|
|
3
3
|
interface EusendError {
|
|
4
4
|
message: string;
|
|
5
5
|
statusCode: number | null;
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/interfaces.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":";KAAY,eAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/interfaces.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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
//#region src/interfaces.d.ts
|
|
2
|
-
type EusendErrorCode = 'UNAUTHORIZED' | 'FORBIDDEN' | 'NOT_FOUND' | 'VALIDATION_ERROR' | 'RATE_LIMITED' | 'MONTHLY_LIMIT_EXCEEDED' | 'DAILY_LIMIT_EXCEEDED' | 'ALL_SUPPRESSED' | 'INTERNAL_ERROR' | 'CONFLICT' | 'PLAN_LIMIT_EXCEEDED' | 'application_error';
|
|
2
|
+
type EusendErrorCode = 'UNAUTHORIZED' | 'FORBIDDEN' | 'NOT_FOUND' | 'VALIDATION_ERROR' | 'RATE_LIMITED' | 'MONTHLY_LIMIT_EXCEEDED' | 'DAILY_LIMIT_EXCEEDED' | 'ALL_SUPPRESSED' | 'DOMAIN_NOT_VERIFIED' | 'INTERNAL_ERROR' | 'CONFLICT' | 'PLAN_LIMIT_EXCEEDED' | 'application_error';
|
|
3
3
|
interface EusendError {
|
|
4
4
|
message: string;
|
|
5
5
|
statusCode: number | null;
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/interfaces.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":";KAAY,eAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/interfaces.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
|
@@ -289,7 +289,7 @@ var Broadcasts = class {
|
|
|
289
289
|
//#endregion
|
|
290
290
|
//#region src/eusend.ts
|
|
291
291
|
const DEFAULT_BASE_URL = "https://api.eusend.dev";
|
|
292
|
-
const SDK_VERSION = "0.1.
|
|
292
|
+
const SDK_VERSION = "0.1.1";
|
|
293
293
|
var Eusend = class {
|
|
294
294
|
constructor(key, options) {
|
|
295
295
|
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/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":["import type { Eusend } from './eusend';\nimport type { EusendResponse } from './interfaces';\n\nexport type EmailStatus =\n | 'queued'\n | 'sending'\n | 'sent'\n | 'delivered'\n | 'bounced'\n | 'complained'\n | 'suppressed'\n | 'failed';\n\nexport type EmailEventType =\n | 'sent'\n | 'delivered'\n | 'opened'\n | 'clicked'\n | 'bounced'\n | 'complained';\n\nexport interface SendEmailOptions {\n from: string;\n to: string | string[];\n cc?: string | string[];\n bcc?: string | string[];\n replyTo?: string | string[];\n subject?: string;\n html?: string;\n text?: string;\n templateId?: string;\n variables?: Record<string, unknown>;\n headers?: Record<string, string>;\n trackOpens?: boolean;\n trackClicks?: boolean;\n}\n\nexport interface SendEmailRequestOptions {\n idempotencyKey?: string;\n}\n\nexport interface SendEmailResponse {\n id: string;\n}\n\nexport interface BatchSendResponse {\n data: SendEmailResponse[];\n}\n\nexport interface EmailEvent {\n id: string;\n type: EmailEventType;\n metadata: Record<string, unknown>;\n createdAt: string;\n}\n\nexport interface Email {\n id: string;\n from: string;\n to: string[];\n cc: string[];\n bcc: string[];\n replyTo: string[];\n subject: string;\n html: string | null;\n text: string | null;\n status: EmailStatus;\n testMode: boolean;\n templateId: string | null;\n createdAt: string;\n events: EmailEvent[];\n}\n\nexport interface EmailListItem {\n id: string;\n from: string;\n to: string[];\n subject: string;\n status: EmailStatus;\n testMode: boolean;\n createdAt: string;\n}\n\nexport interface ListEmailsOptions {\n limit?: number;\n cursor?: string;\n status?: EmailStatus;\n from?: string;\n to?: string;\n}\n\nexport interface ListEmailsResponse {\n data: EmailListItem[];\n nextCursor: string | null;\n}\n\nfunction toApiPayload(options: SendEmailOptions) {\n return {\n from: options.from,\n to: options.to,\n cc: options.cc,\n bcc: options.bcc,\n reply_to: options.replyTo,\n subject: options.subject,\n html: options.html,\n text: options.text,\n template_id: options.templateId,\n variables: options.variables,\n headers: options.headers,\n track_opens: options.trackOpens,\n track_clicks: options.trackClicks,\n };\n}\n\nexport class Emails {\n constructor(private readonly client: Eusend) {}\n\n async send(\n options: SendEmailOptions,\n requestOptions?: SendEmailRequestOptions,\n ): Promise<EusendResponse<SendEmailResponse>> {\n const extraHeaders: Record<string, string> = {};\n if (requestOptions?.idempotencyKey) {\n extraHeaders['Idempotency-Key'] = requestOptions.idempotencyKey;\n }\n return this.client.post<SendEmailResponse>('/emails', toApiPayload(options), extraHeaders);\n }\n\n async batch(\n emails: SendEmailOptions[],\n ): Promise<EusendResponse<BatchSendResponse>> {\n return this.client.post<BatchSendResponse>('/emails/batch', {\n emails: emails.map(toApiPayload),\n });\n }\n\n async list(options: ListEmailsOptions = {}): Promise<EusendResponse<ListEmailsResponse>> {\n const params = new URLSearchParams();\n if (options.limit != null) params.set('limit', String(options.limit));\n if (options.cursor) params.set('cursor', options.cursor);\n if (options.status) params.set('status', options.status);\n if (options.from) params.set('from', options.from);\n if (options.to) params.set('to', options.to);\n const qs = params.toString();\n\n const res = await this.client.get<{ data: EmailListItem[]; next_cursor: string | null }>(\n qs ? `/emails?${qs}` : '/emails',\n );\n if (res.error) return res;\n return {\n data: { data: res.data.data, nextCursor: res.data.next_cursor },\n error: null,\n headers: res.headers,\n };\n }\n\n get(id: string): Promise<EusendResponse<Email>> {\n return this.client.get<Email>(`/emails/${id}`);\n }\n}\n","import type { Eusend } from './eusend';\nimport type { EusendResponse } from './interfaces';\n\nexport type DomainStatus = 'pending' | 'verified' | 'failed';\n\nexport interface DnsRecord {\n type: string;\n name: string;\n value: string;\n}\n\nexport interface CreateDomainResponse {\n id: string;\n name: string;\n dkim: DnsRecord;\n spf: DnsRecord;\n dmarc: DnsRecord;\n}\n\nexport interface DomainListItem {\n id: string;\n name: string;\n status: DomainStatus;\n createdAt: string;\n}\n\nexport interface Domain {\n id: string;\n name: string;\n dkimPublicKey: string;\n dkimSelector: string;\n status: DomainStatus;\n createdAt: string;\n verifiedAt: string | null;\n}\n\nexport class Domains {\n constructor(private readonly client: Eusend) {}\n\n create(name: string): Promise<EusendResponse<CreateDomainResponse>> {\n return this.client.post<CreateDomainResponse>('/domains', { name });\n }\n\n list(): Promise<EusendResponse<DomainListItem[]>> {\n return this.client.get<DomainListItem[]>('/domains');\n }\n\n get(id: string): Promise<EusendResponse<Domain>> {\n return this.client.get<Domain>(`/domains/${id}`);\n }\n\n delete(id: string): Promise<EusendResponse<{ message: string }>> {\n return this.client.delete<{ message: string }>(`/domains/${id}`);\n }\n\n verify(id: string): Promise<EusendResponse<{ message: string }>> {\n return this.client.post<{ message: string }>(`/domains/${id}/verify`);\n }\n}\n","import type { Eusend } from './eusend';\nimport type { EusendResponse } from './interfaces';\n\nexport interface CreateApiKeyOptions {\n name: string;\n testMode?: boolean;\n}\n\nexport interface CreateApiKeyResponse {\n id: string;\n name: string;\n key: string;\n prefix: string;\n testMode: boolean;\n createdAt: string;\n}\n\nexport interface ApiKey {\n id: string;\n name: string;\n prefix: string;\n testMode: boolean;\n createdAt: string;\n lastUsedAt: string | null;\n}\n\ntype CreateApiKeyApiResponse = {\n id: string;\n name: string;\n key: string;\n prefix: string;\n test_mode: boolean;\n created_at: string;\n};\n\nexport class ApiKeys {\n constructor(private readonly client: Eusend) {}\n\n async create(options: CreateApiKeyOptions): Promise<EusendResponse<CreateApiKeyResponse>> {\n const res = await this.client.post<CreateApiKeyApiResponse>('/api-keys', {\n name: options.name,\n test_mode: options.testMode ?? false,\n });\n if (res.error) return res;\n return {\n data: {\n id: res.data.id,\n name: res.data.name,\n key: res.data.key,\n prefix: res.data.prefix,\n testMode: res.data.test_mode,\n createdAt: res.data.created_at,\n },\n error: null,\n headers: res.headers,\n };\n }\n\n list(): Promise<EusendResponse<ApiKey[]>> {\n return this.client.get<ApiKey[]>('/api-keys');\n }\n\n delete(id: string): Promise<EusendResponse<{ message: string }>> {\n return this.client.delete<{ message: string }>(`/api-keys/${id}`);\n }\n}\n","import type { Eusend } from './eusend';\nimport type { EusendResponse } from './interfaces';\n\nexport type ContactStatus = 'subscribed' | 'unsubscribed';\n\nexport interface Audience {\n id: string;\n name: string;\n organizationId: string;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface AudienceListItem {\n id: string;\n name: string;\n createdAt: string;\n contactCount: number;\n}\n\nexport interface Contact {\n id: string;\n audienceId: string;\n email: string;\n firstName: string | null;\n lastName: string | null;\n status: ContactStatus;\n unsubscribedAt: string | null;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface CreateContactOptions {\n email: string;\n firstName?: string;\n lastName?: string;\n}\n\nexport interface UpdateContactOptions {\n firstName?: string;\n lastName?: string;\n unsubscribed?: boolean;\n}\n\nexport interface ListContactsOptions {\n limit?: number;\n cursor?: string;\n search?: string;\n subscribed?: boolean;\n}\n\nexport interface ListContactsResponse {\n data: Contact[];\n nextCursor: string | null;\n}\n\nexport interface BatchCreateContactsOptions {\n contacts: CreateContactOptions[];\n}\n\nexport class Audiences {\n constructor(private readonly client: Eusend) {}\n\n create(name: string): Promise<EusendResponse<Audience>> {\n return this.client.post<Audience>('/audiences', { name });\n }\n\n async list(): Promise<EusendResponse<AudienceListItem[]>> {\n const res = await this.client.get<{ data: AudienceListItem[] }>('/audiences');\n if (res.error) return res;\n return { data: res.data.data, error: null, headers: res.headers };\n }\n\n delete(id: string): Promise<EusendResponse<Record<string, never>>> {\n return this.client.delete<Record<string, never>>(`/audiences/${id}`);\n }\n\n createContact(\n audienceId: string,\n options: CreateContactOptions,\n ): Promise<EusendResponse<Contact>> {\n return this.client.post<Contact>(`/audiences/${audienceId}/contacts`, {\n email: options.email,\n first_name: options.firstName,\n last_name: options.lastName,\n });\n }\n\n async listContacts(\n audienceId: string,\n options: ListContactsOptions = {},\n ): Promise<EusendResponse<ListContactsResponse>> {\n const params = new URLSearchParams();\n if (options.limit != null) params.set('limit', String(options.limit));\n if (options.cursor) params.set('cursor', options.cursor);\n if (options.search) params.set('search', options.search);\n if (options.subscribed != null) params.set('subscribed', String(options.subscribed));\n const qs = params.toString();\n return this.client.get<ListContactsResponse>(\n qs ? `/audiences/${audienceId}/contacts?${qs}` : `/audiences/${audienceId}/contacts`,\n );\n }\n\n getContact(audienceId: string, contactId: string): Promise<EusendResponse<Contact>> {\n return this.client.get<Contact>(`/audiences/${audienceId}/contacts/${contactId}`);\n }\n\n updateContact(\n audienceId: string,\n contactId: string,\n options: UpdateContactOptions,\n ): Promise<EusendResponse<Contact>> {\n return this.client.patch<Contact>(`/audiences/${audienceId}/contacts/${contactId}`, {\n first_name: options.firstName,\n last_name: options.lastName,\n unsubscribed: options.unsubscribed,\n });\n }\n\n deleteContact(\n audienceId: string,\n contactId: string,\n ): Promise<EusendResponse<Record<string, never>>> {\n return this.client.delete<Record<string, never>>(\n `/audiences/${audienceId}/contacts/${contactId}`,\n );\n }\n\n batchCreateContacts(\n audienceId: string,\n options: BatchCreateContactsOptions,\n ): Promise<EusendResponse<{ count: number }>> {\n return this.client.post<{ count: number }>(`/audiences/${audienceId}/contacts/batch`, {\n contacts: options.contacts.map((c) => ({\n email: c.email,\n first_name: c.firstName,\n last_name: c.lastName,\n })),\n });\n }\n}\n","import type { Eusend } from './eusend';\nimport type { EusendResponse } from './interfaces';\n\nexport interface CreateTemplateOptions {\n name: string;\n subject: string;\n html?: string;\n reactSource?: string;\n}\n\nexport interface UpdateTemplateOptions {\n name?: string;\n subject?: string;\n html?: string;\n reactSource?: 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\nexport class Templates {\n constructor(private readonly client: Eusend) {}\n\n create(options: CreateTemplateOptions): Promise<EusendResponse<Template>> {\n return this.client.post<Template>('/templates', {\n name: options.name,\n subject: options.subject,\n html: options.html,\n react_source: options.reactSource,\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 update(id: string, options: UpdateTemplateOptions): Promise<EusendResponse<Template>> {\n return this.client.patch<Template>(`/templates/${id}`, {\n name: options.name,\n subject: options.subject,\n html: options.html,\n react_source: options.reactSource,\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';\nimport type { EusendResponse } from './interfaces';\n\nexport type WebhookEvent =\n | 'email.sent'\n | 'email.delivered'\n | 'email.bounced'\n | 'email.complained'\n | 'email.opened'\n | 'email.clicked'\n | '*';\n\nexport interface CreateWebhookOptions {\n url: string;\n events: WebhookEvent[];\n}\n\nexport interface UpdateWebhookOptions {\n url?: string;\n events?: WebhookEvent[];\n}\n\nexport interface WebhookDelivery {\n id: string;\n webhookId: string;\n emailId: string | null;\n eventType: string;\n payload: Record<string, unknown>;\n status: 'pending' | 'success' | 'failed';\n responseStatus: number | null;\n attempts: number;\n createdAt: string;\n lastAttemptAt: string | null;\n}\n\nexport interface Webhook {\n id: string;\n url: string;\n events: WebhookEvent[];\n createdAt: string;\n}\n\nexport interface WebhookWithDeliveries extends Webhook {\n deliveries: WebhookDelivery[];\n}\n\nexport interface CreateWebhookResponse extends Webhook {\n secret: string;\n}\n\nexport class Webhooks {\n constructor(private readonly client: Eusend) {}\n\n create(options: CreateWebhookOptions): Promise<EusendResponse<CreateWebhookResponse>> {\n return this.client.post<CreateWebhookResponse>('/webhooks', {\n url: options.url,\n events: options.events,\n });\n }\n\n async list(): Promise<EusendResponse<Webhook[]>> {\n const res = await this.client.get<{ data: Webhook[] }>('/webhooks');\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<WebhookWithDeliveries>> {\n return this.client.get<WebhookWithDeliveries>(`/webhooks/${id}`);\n }\n\n update(id: string, options: UpdateWebhookOptions): Promise<EusendResponse<Webhook>> {\n return this.client.patch<Webhook>(`/webhooks/${id}`, {\n url: options.url,\n events: options.events,\n });\n }\n\n delete(id: string): Promise<EusendResponse<Record<string, never>>> {\n return this.client.delete<Record<string, never>>(`/webhooks/${id}`);\n }\n}\n","import type { Eusend } from './eusend';\nimport type { EusendResponse } from './interfaces';\n\nexport type BroadcastStatus =\n | 'draft'\n | 'scheduled'\n | 'sending'\n | 'sent'\n | 'paused'\n | 'cancelled';\n\nexport interface CreateBroadcastOptions {\n name: string;\n audienceId: string;\n from: string;\n subject: string;\n html?: string;\n templateId?: string;\n templateVariables?: Record<string, string>;\n}\n\nexport interface UpdateBroadcastOptions {\n name?: string;\n audienceId?: string;\n from?: string;\n subject?: string;\n html?: string;\n templateId?: string | null;\n templateVariables?: Record<string, string> | null;\n scheduledAt?: string | null;\n}\n\nexport interface SendBroadcastOptions {\n scheduledAt?: string;\n}\n\nexport interface Broadcast {\n id: string;\n name: string;\n status: BroadcastStatus;\n audienceId: string;\n fromAddress: string;\n subject: string;\n html: string | null;\n templateId: string | null;\n templateVariables: Record<string, string> | null;\n scheduledAt: string | null;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface BroadcastListItem {\n id: string;\n name: string;\n status: BroadcastStatus;\n audienceId: string;\n fromAddress: string;\n subject: string;\n recipientCount: number | null;\n sentCount: number | null;\n scheduledAt: string | null;\n startedAt: string | null;\n completedAt: string | null;\n createdAt: string;\n audienceName: string | null;\n}\n\nexport interface BroadcastDetail extends Broadcast {\n recipientCount: number | null;\n sentCount: number | null;\n startedAt: string | null;\n completedAt: string | null;\n stats: Record<string, number>;\n}\n\nexport interface SendBroadcastResponse {\n id: string;\n status: 'sending' | 'scheduled';\n scheduledAt: string | null;\n}\n\nexport class Broadcasts {\n constructor(private readonly client: Eusend) {}\n\n create(options: CreateBroadcastOptions): Promise<EusendResponse<Broadcast>> {\n return this.client.post<Broadcast>('/broadcasts', {\n name: options.name,\n audience_id: options.audienceId,\n from: options.from,\n subject: options.subject,\n html: options.html,\n template_id: options.templateId,\n template_variables: options.templateVariables,\n });\n }\n\n async list(): Promise<EusendResponse<BroadcastListItem[]>> {\n const res = await this.client.get<{ data: BroadcastListItem[] }>('/broadcasts');\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<BroadcastDetail>> {\n return this.client.get<BroadcastDetail>(`/broadcasts/${id}`);\n }\n\n update(id: string, options: UpdateBroadcastOptions): Promise<EusendResponse<Broadcast>> {\n return this.client.patch<Broadcast>(`/broadcasts/${id}`, {\n name: options.name,\n audience_id: options.audienceId,\n from: options.from,\n subject: options.subject,\n html: options.html,\n template_id: options.templateId,\n template_variables: options.templateVariables,\n scheduled_at: options.scheduledAt,\n });\n }\n\n send(id: string, options: SendBroadcastOptions = {}): Promise<EusendResponse<SendBroadcastResponse>> {\n return this.client.post<SendBroadcastResponse>(`/broadcasts/${id}/send`, {\n scheduled_at: options.scheduledAt,\n });\n }\n\n cancel(id: string): Promise<EusendResponse<Broadcast>> {\n return this.client.post<Broadcast>(`/broadcasts/${id}/cancel`);\n }\n\n delete(id: string): Promise<EusendResponse<Record<string, never>>> {\n return this.client.delete<Record<string, never>>(`/broadcasts/${id}`);\n }\n}\n","import type { EusendError, EusendResponse } from './interfaces';\nimport { Emails } from './emails';\nimport { Domains } from './domains';\nimport { ApiKeys } from './api-keys';\nimport { Audiences } from './audiences';\nimport { Templates } from './templates';\nimport { Webhooks } from './webhooks';\nimport { Broadcasts } from './broadcasts';\n\nconst DEFAULT_BASE_URL = 'https://api.eusend.dev';\nconst SDK_VERSION = '0.1.0';\n\nexport interface EusendOptions {\n baseUrl?: string;\n}\n\nexport class Eusend {\n readonly baseUrl: string;\n private readonly apiKey: string;\n\n readonly emails: Emails;\n readonly domains: Domains;\n readonly apiKeys: ApiKeys;\n readonly audiences: Audiences;\n readonly templates: Templates;\n readonly webhooks: Webhooks;\n readonly broadcasts: Broadcasts;\n\n constructor(key?: string, options?: EusendOptions) {\n const apiKey =\n key ?? (typeof process !== 'undefined' ? process.env['EUSEND_API_KEY'] : undefined);\n if (!apiKey) {\n throw new Error(\n 'Missing Eusend API key. Pass it to the constructor or set the EUSEND_API_KEY environment variable.',\n );\n }\n this.apiKey = apiKey;\n this.baseUrl = options?.baseUrl ?? DEFAULT_BASE_URL;\n\n this.emails = new Emails(this);\n this.domains = new Domains(this);\n this.apiKeys = new ApiKeys(this);\n this.audiences = new Audiences(this);\n this.templates = new Templates(this);\n this.webhooks = new Webhooks(this);\n this.broadcasts = new Broadcasts(this);\n }\n\n async fetchRequest<T>(\n path: string,\n init: RequestInit = {},\n extraHeaders: Record<string, string> = {},\n ): Promise<EusendResponse<T>> {\n const headers: Record<string, string> = {\n Authorization: `Bearer ${this.apiKey}`,\n 'Content-Type': 'application/json',\n 'User-Agent': `eusend-node/${SDK_VERSION}`,\n ...extraHeaders,\n };\n\n try {\n const res = await fetch(`${this.baseUrl}${path}`, { ...init, headers });\n const responseHeaders = Object.fromEntries(res.headers.entries());\n\n if (!res.ok) {\n let error: EusendError;\n try {\n const json = (await res.json()) as { error?: string; code?: string };\n error = {\n message: json.error ?? 'Unknown error',\n statusCode: res.status,\n name: ((json.code as EusendError['name']) ?? 'INTERNAL_ERROR'),\n };\n } catch {\n error = { message: 'Request failed', statusCode: res.status, name: 'INTERNAL_ERROR' };\n }\n return { data: null, error, headers: responseHeaders };\n }\n\n if (res.status === 204 || res.headers.get('content-length') === '0') {\n return { data: {} as T, error: null, headers: responseHeaders };\n }\n\n const data = (await res.json()) as T;\n return { data, error: null, headers: responseHeaders };\n } catch {\n return {\n data: null,\n error: {\n message: 'Network request failed. The request could not be resolved.',\n statusCode: null,\n name: 'application_error',\n },\n headers: null,\n };\n }\n }\n\n get<T>(path: string, extraHeaders?: Record<string, string>): Promise<EusendResponse<T>> {\n return this.fetchRequest<T>(path, { method: 'GET' }, extraHeaders);\n }\n\n post<T>(\n path: string,\n body?: unknown,\n extraHeaders?: Record<string, string>,\n ): Promise<EusendResponse<T>> {\n return this.fetchRequest<T>(\n path,\n { method: 'POST', body: body != null ? JSON.stringify(body) : undefined },\n extraHeaders,\n );\n }\n\n patch<T>(path: string, body?: unknown): Promise<EusendResponse<T>> {\n return this.fetchRequest<T>(path, {\n method: 'PATCH',\n body: body != null ? JSON.stringify(body) : undefined,\n });\n }\n\n delete<T>(path: string): Promise<EusendResponse<T>> {\n return this.fetchRequest<T>(path, { method: 'DELETE' });\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../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":["import type { Eusend } from './eusend';\r\nimport type { EusendResponse } from './interfaces';\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 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\nfunction toApiPayload(options: SendEmailOptions) {\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: options.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 return this.client.post<SendEmailResponse>('/emails', toApiPayload(options), extraHeaders);\r\n }\r\n\r\n async batch(\r\n emails: SendEmailOptions[],\r\n ): Promise<EusendResponse<BatchSendResponse>> {\r\n return this.client.post<BatchSendResponse>('/emails/batch', {\r\n emails: emails.map(toApiPayload),\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';\r\nimport type { EusendResponse } from './interfaces';\r\n\r\nexport interface CreateTemplateOptions {\r\n name: string;\r\n subject: string;\r\n html?: string;\r\n reactSource?: string;\r\n}\r\n\r\nexport interface UpdateTemplateOptions {\r\n name?: string;\r\n subject?: string;\r\n html?: string;\r\n reactSource?: string;\r\n}\r\n\r\nexport interface Template {\r\n id: string;\r\n name: string;\r\n subject: string;\r\n html: string | null;\r\n reactSource: string | null;\r\n createdAt: string;\r\n updatedAt: string;\r\n}\r\n\r\nexport interface TemplateListItem {\r\n id: string;\r\n name: string;\r\n subject: string;\r\n createdAt: string;\r\n updatedAt: string;\r\n}\r\n\r\nexport class Templates {\r\n constructor(private readonly client: Eusend) {}\r\n\r\n create(options: CreateTemplateOptions): Promise<EusendResponse<Template>> {\r\n return this.client.post<Template>('/templates', {\r\n name: options.name,\r\n subject: options.subject,\r\n html: options.html,\r\n react_source: options.reactSource,\r\n });\r\n }\r\n\r\n async list(): Promise<EusendResponse<TemplateListItem[]>> {\r\n const res = await this.client.get<{ data: TemplateListItem[] }>('/templates');\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<Template>> {\r\n return this.client.get<Template>(`/templates/${id}`);\r\n }\r\n\r\n update(id: string, options: UpdateTemplateOptions): Promise<EusendResponse<Template>> {\r\n return this.client.patch<Template>(`/templates/${id}`, {\r\n name: options.name,\r\n subject: options.subject,\r\n html: options.html,\r\n react_source: options.reactSource,\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>>(`/templates/${id}`);\r\n }\r\n}\r\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.1.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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"}
|
package/package.json
CHANGED
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@eusend_dev/sdk",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "Official Node.js SDK for the Eusend API",
|
|
5
|
-
"author": "Eusend",
|
|
6
|
-
"license": "MIT",
|
|
7
|
-
"main": "./dist/index.js",
|
|
8
|
-
"module": "./dist/index.mjs",
|
|
9
|
-
"types": "./dist/index.d.ts",
|
|
10
|
-
"exports": {
|
|
11
|
-
".": {
|
|
12
|
-
"import": {
|
|
13
|
-
"types": "./dist/index.d.mts",
|
|
14
|
-
"default": "./dist/index.mjs"
|
|
15
|
-
},
|
|
16
|
-
"require": {
|
|
17
|
-
"types": "./dist/index.d.cts",
|
|
18
|
-
"default": "./dist/index.cjs"
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
},
|
|
22
|
-
"files": ["dist"],
|
|
23
|
-
"scripts": {
|
|
24
|
-
"build": "tsdown src/index.ts --format esm,cjs --dts",
|
|
25
|
-
"dev": "tsdown src/index.ts --format esm,cjs --dts --watch",
|
|
26
|
-
"typecheck": "tsc --noEmit"
|
|
27
|
-
},
|
|
28
|
-
"devDependencies": {
|
|
29
|
-
"tsdown": "^0.22.0",
|
|
30
|
-
"typescript": "^5.8.0"
|
|
31
|
-
},
|
|
32
|
-
"engines": {
|
|
33
|
-
"node": ">=18"
|
|
34
|
-
}
|
|
35
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@eusend_dev/sdk",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "Official Node.js SDK for the Eusend API",
|
|
5
|
+
"author": "Eusend",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"main": "./dist/index.js",
|
|
8
|
+
"module": "./dist/index.mjs",
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"import": {
|
|
13
|
+
"types": "./dist/index.d.mts",
|
|
14
|
+
"default": "./dist/index.mjs"
|
|
15
|
+
},
|
|
16
|
+
"require": {
|
|
17
|
+
"types": "./dist/index.d.cts",
|
|
18
|
+
"default": "./dist/index.cjs"
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"files": ["dist"],
|
|
23
|
+
"scripts": {
|
|
24
|
+
"build": "tsdown src/index.ts --format esm,cjs --dts",
|
|
25
|
+
"dev": "tsdown src/index.ts --format esm,cjs --dts --watch",
|
|
26
|
+
"typecheck": "tsc --noEmit"
|
|
27
|
+
},
|
|
28
|
+
"devDependencies": {
|
|
29
|
+
"tsdown": "^0.22.0",
|
|
30
|
+
"typescript": "^5.8.0"
|
|
31
|
+
},
|
|
32
|
+
"engines": {
|
|
33
|
+
"node": ">=18"
|
|
34
|
+
}
|
|
35
|
+
}
|