emailsdone 0.1.10
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/LICENSE +21 -0
- package/README.md +121 -0
- package/emailsdone/dist/client.d.ts +25 -0
- package/emailsdone/dist/client.d.ts.map +1 -0
- package/emailsdone/dist/client.js +138 -0
- package/emailsdone/dist/client.js.map +1 -0
- package/emailsdone/dist/errors.d.ts +7 -0
- package/emailsdone/dist/errors.d.ts.map +1 -0
- package/emailsdone/dist/errors.js +13 -0
- package/emailsdone/dist/errors.js.map +1 -0
- package/emailsdone/dist/index.d.ts +6 -0
- package/emailsdone/dist/index.d.ts.map +1 -0
- package/emailsdone/dist/index.js +4 -0
- package/emailsdone/dist/index.js.map +1 -0
- package/emailsdone/dist/templates.d.ts +87 -0
- package/emailsdone/dist/templates.d.ts.map +1 -0
- package/emailsdone/dist/templates.js +719 -0
- package/emailsdone/dist/templates.js.map +1 -0
- package/emailsdone/dist/types.d.ts +735 -0
- package/emailsdone/dist/types.d.ts.map +1 -0
- package/emailsdone/dist/types.js +2 -0
- package/emailsdone/dist/types.js.map +1 -0
- package/package.json +65 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) EmailsDone
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# EmailsDone for Node / TypeScript
|
|
2
|
+
|
|
3
|
+
EmailsDone.dev — Production-ready app email for developers who do not want an email project.
|
|
4
|
+
|
|
5
|
+
Add password resets, verification, notifications and billing emails without building templates, writing HTML or wiring email infrastructure.
|
|
6
|
+
|
|
7
|
+
Emails. Done.
|
|
8
|
+
|
|
9
|
+
## Install
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install emailsdone
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Run the example
|
|
16
|
+
|
|
17
|
+
To run the interactive console example from this repository:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
cd libraries/node/Examples
|
|
21
|
+
npm install
|
|
22
|
+
npm run start
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
The example builds the local SDK, prompts for your API key, validates it with `getQuota()`, and then lets you send templates or check recipient status from a menu.
|
|
26
|
+
|
|
27
|
+
## API key
|
|
28
|
+
|
|
29
|
+
Store your EmailsDone API key in server-side configuration. Environment variables are the simplest starting point:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
EMAILSDONE_API_KEY=your_api_key_here
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Do not put this key in browser JavaScript, mobile apps, public frontend configuration, source control, or client-side logs.
|
|
36
|
+
|
|
37
|
+
## Send an email
|
|
38
|
+
|
|
39
|
+
```ts
|
|
40
|
+
import { EmailsDoneClient } from "emailsdone";
|
|
41
|
+
|
|
42
|
+
const emailsDone = EmailsDoneClient.fromApiKey(process.env.EMAILSDONE_API_KEY!);
|
|
43
|
+
|
|
44
|
+
await emailsDone.authentication().welcome("https://app.example.com/action").send("user@example.com");
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Templates with required fields expose those fields as typed parameters where that keeps the call obvious:
|
|
48
|
+
|
|
49
|
+
```ts
|
|
50
|
+
await emailsDone
|
|
51
|
+
.authentication()
|
|
52
|
+
.loginCode(
|
|
53
|
+
"123456"
|
|
54
|
+
)
|
|
55
|
+
.send("user@example.com");
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Optional template fields and send controls use options objects:
|
|
59
|
+
|
|
60
|
+
```ts
|
|
61
|
+
await emailsDone
|
|
62
|
+
.authentication()
|
|
63
|
+
.loginCode(
|
|
64
|
+
"123456",
|
|
65
|
+
{
|
|
66
|
+
footerNote: "If you did not request this code, you can safely ignore this email.",
|
|
67
|
+
fromName: "Acme App",
|
|
68
|
+
idempotencyKey: "email-user-123-v1",
|
|
69
|
+
}
|
|
70
|
+
)
|
|
71
|
+
.send("user@example.com");
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Recipient status
|
|
75
|
+
|
|
76
|
+
```ts
|
|
77
|
+
const recipientStatus = await emailsDone
|
|
78
|
+
.recipient("user@example.com")
|
|
79
|
+
.getStatus();
|
|
80
|
+
|
|
81
|
+
if (recipientStatus.recipient?.subscription?.status !== "subscribed") {
|
|
82
|
+
await emailsDone
|
|
83
|
+
.recipient("user@example.com")
|
|
84
|
+
.resubscribe();
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Quota
|
|
89
|
+
|
|
90
|
+
```ts
|
|
91
|
+
const quota = await emailsDone.getQuota();
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Idempotency
|
|
95
|
+
|
|
96
|
+
Use an idempotency key for password resets, billing emails, and other flows where your app or worker may retry the same send.
|
|
97
|
+
|
|
98
|
+
```ts
|
|
99
|
+
await emailsDone
|
|
100
|
+
.billing()
|
|
101
|
+
.paymentFailed({
|
|
102
|
+
actionButtonUrl: "https://app.example.com/action",
|
|
103
|
+
idempotencyKey: `payment-failed-${invoiceId}`,
|
|
104
|
+
})
|
|
105
|
+
.send("user@example.com");
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Fluent template groups
|
|
109
|
+
|
|
110
|
+
The generated client mirrors EmailsDone template categories and recipient resource actions:
|
|
111
|
+
|
|
112
|
+
- `await emailsDone.getQuota()`
|
|
113
|
+
- `emailsDone.recipient(email).getStatus()`
|
|
114
|
+
- `emailsDone.recipient(email).resubscribe()`
|
|
115
|
+
- `emailsDone.authentication()`
|
|
116
|
+
- `emailsDone.billing()`
|
|
117
|
+
- `emailsDone.developer()`
|
|
118
|
+
- `emailsDone.notifications()`
|
|
119
|
+
- `emailsDone.team()`
|
|
120
|
+
|
|
121
|
+
Each method sends a named EmailsDone template through `/v1/send`.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { AuthenticationTemplates, BillingTemplates, DeveloperTemplates, NotificationsTemplates, TeamTemplates, RecipientClient } from "./templates.js";
|
|
2
|
+
import type { EmailsDoneClientOptions, GetQuotaResponse, GetRecipientStatusOptions, GetRecipientStatusResponse, ResubscribeRecipientResponse, SendEmailResponse, SendTemplatePayload } from "./types.js";
|
|
3
|
+
export declare class EmailsDoneClient {
|
|
4
|
+
private readonly authenticationTemplates;
|
|
5
|
+
private readonly billingTemplates;
|
|
6
|
+
private readonly developerTemplates;
|
|
7
|
+
private readonly notificationsTemplates;
|
|
8
|
+
private readonly teamTemplates;
|
|
9
|
+
private readonly apiKey;
|
|
10
|
+
private readonly apiBaseUrl;
|
|
11
|
+
constructor(options: EmailsDoneClientOptions);
|
|
12
|
+
static fromApiKey(apiKey: string, options?: Omit<EmailsDoneClientOptions, "apiKey">): EmailsDoneClient;
|
|
13
|
+
authentication(): AuthenticationTemplates;
|
|
14
|
+
billing(): BillingTemplates;
|
|
15
|
+
developer(): DeveloperTemplates;
|
|
16
|
+
notifications(): NotificationsTemplates;
|
|
17
|
+
team(): TeamTemplates;
|
|
18
|
+
recipient(email: string): RecipientClient;
|
|
19
|
+
getQuota(): Promise<GetQuotaResponse>;
|
|
20
|
+
resubscribeRecipient(email: string): Promise<ResubscribeRecipientResponse>;
|
|
21
|
+
getRecipientStatus(email: string, options?: GetRecipientStatusOptions): Promise<GetRecipientStatusResponse>;
|
|
22
|
+
internalSendTemplate(payload: SendTemplatePayload): Promise<SendEmailResponse>;
|
|
23
|
+
private requestJson;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,aAAa,EACb,eAAe,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,uBAAuB,EACvB,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAE1B,4BAA4B,EAC5B,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAEpB,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAA0B;IAClE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAyB;IAChE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,OAAO,EAAE,uBAAuB;IAc5C,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,IAAI,CAAC,uBAAuB,EAAE,QAAQ,CAAM,GAAG,gBAAgB;IAI1G,cAAc,IAAI,uBAAuB;IAIzC,OAAO,IAAI,gBAAgB;IAI3B,SAAS,IAAI,kBAAkB;IAI/B,aAAa,IAAI,sBAAsB;IAIvC,IAAI,IAAI,aAAa;IAKrB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe;IAKnC,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAIrC,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,4BAA4B,CAAC;IAS1E,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,yBAA8B,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAS/G,oBAAoB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,CAAC;YAyBtE,WAAW;CAiC1B"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { EmailsDoneError } from "./errors.js";
|
|
2
|
+
import { AuthenticationTemplates, BillingTemplates, DeveloperTemplates, NotificationsTemplates, TeamTemplates, RecipientClient, } from "./templates.js";
|
|
3
|
+
export class EmailsDoneClient {
|
|
4
|
+
authenticationTemplates;
|
|
5
|
+
billingTemplates;
|
|
6
|
+
developerTemplates;
|
|
7
|
+
notificationsTemplates;
|
|
8
|
+
teamTemplates;
|
|
9
|
+
apiKey;
|
|
10
|
+
apiBaseUrl;
|
|
11
|
+
constructor(options) {
|
|
12
|
+
if (!options.apiKey || !options.apiKey.trim()) {
|
|
13
|
+
throw new Error("An EmailsDone API key is required. Store it in server-side configuration, not frontend code.");
|
|
14
|
+
}
|
|
15
|
+
this.apiKey = options.apiKey;
|
|
16
|
+
this.apiBaseUrl = (options.apiBaseUrl ?? "https://api.emailsdone.dev").replace(/\/+$/, "");
|
|
17
|
+
this.authenticationTemplates = new AuthenticationTemplates(this);
|
|
18
|
+
this.billingTemplates = new BillingTemplates(this);
|
|
19
|
+
this.developerTemplates = new DeveloperTemplates(this);
|
|
20
|
+
this.notificationsTemplates = new NotificationsTemplates(this);
|
|
21
|
+
this.teamTemplates = new TeamTemplates(this);
|
|
22
|
+
}
|
|
23
|
+
static fromApiKey(apiKey, options = {}) {
|
|
24
|
+
return new EmailsDoneClient({ ...options, apiKey });
|
|
25
|
+
}
|
|
26
|
+
authentication() {
|
|
27
|
+
return this.authenticationTemplates;
|
|
28
|
+
}
|
|
29
|
+
billing() {
|
|
30
|
+
return this.billingTemplates;
|
|
31
|
+
}
|
|
32
|
+
developer() {
|
|
33
|
+
return this.developerTemplates;
|
|
34
|
+
}
|
|
35
|
+
notifications() {
|
|
36
|
+
return this.notificationsTemplates;
|
|
37
|
+
}
|
|
38
|
+
team() {
|
|
39
|
+
return this.teamTemplates;
|
|
40
|
+
}
|
|
41
|
+
recipient(email) {
|
|
42
|
+
requireRecipientEmail(email);
|
|
43
|
+
return new RecipientClient(this, email);
|
|
44
|
+
}
|
|
45
|
+
async getQuota() {
|
|
46
|
+
return this.requestJson("GET", "/v1/quota");
|
|
47
|
+
}
|
|
48
|
+
async resubscribeRecipient(email) {
|
|
49
|
+
requireRecipientEmail(email);
|
|
50
|
+
return this.requestJson("POST", "/v1/recipients/resubscribe", {
|
|
51
|
+
email,
|
|
52
|
+
scope: "app_notifications",
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
async getRecipientStatus(email, options = {}) {
|
|
56
|
+
requireRecipientEmail(email);
|
|
57
|
+
return this.requestJson("POST", "/v1/recipients/status", {
|
|
58
|
+
email,
|
|
59
|
+
...(options.limit === undefined ? {} : { limit: options.limit }),
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
async internalSendTemplate(payload) {
|
|
63
|
+
if (!payload.templateId || !payload.templateId.trim()) {
|
|
64
|
+
throw new Error("Template id is required.");
|
|
65
|
+
}
|
|
66
|
+
if (!payload.to || !payload.to.trim()) {
|
|
67
|
+
throw new Error("Recipient email address is required.");
|
|
68
|
+
}
|
|
69
|
+
const body = {
|
|
70
|
+
templateId: payload.templateId,
|
|
71
|
+
to: payload.to,
|
|
72
|
+
data: payload.data,
|
|
73
|
+
};
|
|
74
|
+
addIfSet(body, "templateVersion", payload.templateVersion);
|
|
75
|
+
addIfSet(body, "from", payload.from);
|
|
76
|
+
addIfSet(body, "fromName", payload.fromName);
|
|
77
|
+
addIfSet(body, "replyTo", payload.replyTo);
|
|
78
|
+
const headers = requestHeadersWithIdempotency(payload);
|
|
79
|
+
return this.requestJson("POST", "/v1/send", body, headers);
|
|
80
|
+
}
|
|
81
|
+
async requestJson(method, path, body, extraHeaders = {}) {
|
|
82
|
+
const headers = {
|
|
83
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
84
|
+
Accept: "application/json",
|
|
85
|
+
...extraHeaders,
|
|
86
|
+
};
|
|
87
|
+
if (body) {
|
|
88
|
+
headers["Content-Type"] = "application/json";
|
|
89
|
+
}
|
|
90
|
+
const response = await fetch(`${this.apiBaseUrl}${path}`, {
|
|
91
|
+
method,
|
|
92
|
+
headers,
|
|
93
|
+
...(body ? { body: JSON.stringify(body) } : {}),
|
|
94
|
+
});
|
|
95
|
+
const responseBody = await response.text();
|
|
96
|
+
if (!response.ok) {
|
|
97
|
+
throw errorFromResponse(response.status, responseBody);
|
|
98
|
+
}
|
|
99
|
+
try {
|
|
100
|
+
return JSON.parse(responseBody);
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
throw new EmailsDoneError(response.status, "invalid_response", "EmailsDone returned invalid JSON.", responseBody);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
function addIfSet(target, key, value) {
|
|
108
|
+
if (value?.trim()) {
|
|
109
|
+
target[key] = value;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
function requestHeadersWithIdempotency(options) {
|
|
113
|
+
const headers = {
|
|
114
|
+
Accept: "application/json",
|
|
115
|
+
"Content-Type": "application/json",
|
|
116
|
+
};
|
|
117
|
+
if (options.idempotencyKey?.trim()) {
|
|
118
|
+
headers["Idempotency-Key"] = options.idempotencyKey;
|
|
119
|
+
}
|
|
120
|
+
return headers;
|
|
121
|
+
}
|
|
122
|
+
function requireRecipientEmail(email) {
|
|
123
|
+
if (!email || !email.trim()) {
|
|
124
|
+
throw new Error("Recipient email address is required.");
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
function errorFromResponse(statusCode, responseBody) {
|
|
128
|
+
try {
|
|
129
|
+
const parsed = JSON.parse(responseBody);
|
|
130
|
+
const errorCode = parsed.error || "api_error";
|
|
131
|
+
const message = parsed.message || errorCode;
|
|
132
|
+
return new EmailsDoneError(statusCode, errorCode, message, responseBody);
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
return new EmailsDoneError(statusCode, "api_error", "EmailsDone returned an error response.", responseBody);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare class EmailsDoneError extends Error {
|
|
2
|
+
readonly statusCode: number;
|
|
3
|
+
readonly errorCode: string;
|
|
4
|
+
readonly responseBody: string;
|
|
5
|
+
constructor(statusCode: number, errorCode: string, message: string, responseBody: string);
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;gBAElB,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;CAOzF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export class EmailsDoneError extends Error {
|
|
2
|
+
statusCode;
|
|
3
|
+
errorCode;
|
|
4
|
+
responseBody;
|
|
5
|
+
constructor(statusCode, errorCode, message, responseBody) {
|
|
6
|
+
super(message);
|
|
7
|
+
this.name = "EmailsDoneError";
|
|
8
|
+
this.statusCode = statusCode;
|
|
9
|
+
this.errorCode = errorCode;
|
|
10
|
+
this.responseBody = responseBody;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAC/B,UAAU,CAAS;IACnB,SAAS,CAAS;IAClB,YAAY,CAAS;IAE9B,YAAY,UAAkB,EAAE,SAAiB,EAAE,OAAe,EAAE,YAAoB;QACtF,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;CACF"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { EmailsDoneClient } from "./client.js";
|
|
2
|
+
export { EmailsDoneError } from "./errors.js";
|
|
3
|
+
export { AuthenticationTemplates, BillingTemplates, DeveloperTemplates, NotificationsTemplates, PendingTemplateRequest, RecipientClient, TeamTemplates, } from "./templates.js";
|
|
4
|
+
export type { EmailsDoneClientOptions, GetQuotaResponse, GetRecipientStatusOptions, GetRecipientStatusResponse, ResubscribeRecipientResponse, SendEmailResponse, SendOptions, TemplateOptions, } from "./types.js";
|
|
5
|
+
export type * from "./types.js";
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,eAAe,EACf,aAAa,GACd,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,uBAAuB,EACvB,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,4BAA4B,EAC5B,iBAAiB,EACjB,WAAW,EACX,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,mBAAmB,YAAY,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { EmailsDoneClient } from "./client.js";
|
|
2
|
+
export { EmailsDoneError } from "./errors.js";
|
|
3
|
+
export { AuthenticationTemplates, BillingTemplates, DeveloperTemplates, NotificationsTemplates, PendingTemplateRequest, RecipientClient, TeamTemplates, } from "./templates.js";
|
|
4
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,eAAe,EACf,aAAa,GACd,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import type { EmailsDoneClient } from "./client.js";
|
|
2
|
+
import type { GetRecipientStatusOptions, GetRecipientStatusResponse, ResubscribeRecipientResponse, SendEmailResponse, SendOptions, SendTemplatePayload, AccountLockedOptions, EmailChangedOptions, LoginCodeOptions, MagicLinkOptions, MfaDisabledOptions, MfaEnabledOptions, NewDeviceLoginOptions, PasswordChangedOptions, PasswordResetOptions, SuspiciousLoginOptions, VerifyEmailOptions, WelcomeOptions, InvoiceOptions, InvoiceOverdueOptions, PaymentFailedOptions, PaymentSucceededOptions, RefundIssuedOptions, SubscriptionCancelledOptions, SubscriptionPausedOptions, SubscriptionRenewedOptions, SubscriptionStartedOptions, TrialEndingOptions, TrialStartedOptions, UsageThresholdOptions, ApiKeyCreatedOptions, ApiKeyRotatedOptions, CreditsExhaustedOptions, CreditsLowOptions, AnnouncementOptions, ApprovalApprovedOptions, ApprovalNeededOptions, ApprovalRejectedOptions, DigestOptions, ExportReadyOptions, GenerationCompleteOptions, ImportCompleteOptions, JobCompleteOptions, NotificationAlertOptions, NotificationInfoOptions, NotificationSuccessOptions, NotificationWarningOptions, ProcessingFailedOptions, QueuedRequestReadyOptions, ReminderOptions, ReportReadyOptions, UploadCompleteOptions, InvitationAcceptedOptions, InvitedToWorkspaceOptions, RoleChangedOptions, TeamMemberAddedOptions, TeamMemberRemovedOptions } from "./types.js";
|
|
3
|
+
export declare class PendingTemplateRequest {
|
|
4
|
+
private readonly client;
|
|
5
|
+
private readonly payload;
|
|
6
|
+
constructor(client: EmailsDoneClient, payload: SendTemplatePayload);
|
|
7
|
+
send(to: string, options?: SendOptions): Promise<SendEmailResponse>;
|
|
8
|
+
}
|
|
9
|
+
export declare class RecipientClient {
|
|
10
|
+
private readonly client;
|
|
11
|
+
private readonly email;
|
|
12
|
+
constructor(client: EmailsDoneClient, email: string);
|
|
13
|
+
getStatus(options?: GetRecipientStatusOptions): Promise<GetRecipientStatusResponse>;
|
|
14
|
+
resubscribe(): Promise<ResubscribeRecipientResponse>;
|
|
15
|
+
}
|
|
16
|
+
export declare class AuthenticationTemplates {
|
|
17
|
+
private readonly client;
|
|
18
|
+
constructor(client: EmailsDoneClient);
|
|
19
|
+
accountLocked(options?: AccountLockedOptions): PendingTemplateRequest;
|
|
20
|
+
emailChanged(options?: EmailChangedOptions): PendingTemplateRequest;
|
|
21
|
+
loginCode(code: string, options?: LoginCodeOptions): PendingTemplateRequest;
|
|
22
|
+
magicLink(url: string, options?: MagicLinkOptions): PendingTemplateRequest;
|
|
23
|
+
mfaDisabled(options?: MfaDisabledOptions): PendingTemplateRequest;
|
|
24
|
+
mfaEnabled(options?: MfaEnabledOptions): PendingTemplateRequest;
|
|
25
|
+
newDeviceLogin(options?: NewDeviceLoginOptions): PendingTemplateRequest;
|
|
26
|
+
passwordChanged(options?: PasswordChangedOptions): PendingTemplateRequest;
|
|
27
|
+
passwordReset(resetUrl: string, options?: PasswordResetOptions): PendingTemplateRequest;
|
|
28
|
+
suspiciousLogin(options?: SuspiciousLoginOptions): PendingTemplateRequest;
|
|
29
|
+
verifyEmail(verificationUrl: string, options?: VerifyEmailOptions): PendingTemplateRequest;
|
|
30
|
+
welcome(actionUrl: string, options?: WelcomeOptions): PendingTemplateRequest;
|
|
31
|
+
}
|
|
32
|
+
export declare class BillingTemplates {
|
|
33
|
+
private readonly client;
|
|
34
|
+
constructor(client: EmailsDoneClient);
|
|
35
|
+
invoice(options: InvoiceOptions): PendingTemplateRequest;
|
|
36
|
+
invoiceOverdue(options: InvoiceOverdueOptions): PendingTemplateRequest;
|
|
37
|
+
paymentFailed(options: PaymentFailedOptions): PendingTemplateRequest;
|
|
38
|
+
paymentSucceeded(options?: PaymentSucceededOptions): PendingTemplateRequest;
|
|
39
|
+
refundIssued(options?: RefundIssuedOptions): PendingTemplateRequest;
|
|
40
|
+
subscriptionCancelled(options?: SubscriptionCancelledOptions): PendingTemplateRequest;
|
|
41
|
+
subscriptionPaused(options?: SubscriptionPausedOptions): PendingTemplateRequest;
|
|
42
|
+
subscriptionRenewed(options?: SubscriptionRenewedOptions): PendingTemplateRequest;
|
|
43
|
+
subscriptionStarted(options?: SubscriptionStartedOptions): PendingTemplateRequest;
|
|
44
|
+
trialEnding(options: TrialEndingOptions): PendingTemplateRequest;
|
|
45
|
+
trialStarted(options?: TrialStartedOptions): PendingTemplateRequest;
|
|
46
|
+
usageThreshold(options: UsageThresholdOptions): PendingTemplateRequest;
|
|
47
|
+
}
|
|
48
|
+
export declare class DeveloperTemplates {
|
|
49
|
+
private readonly client;
|
|
50
|
+
constructor(client: EmailsDoneClient);
|
|
51
|
+
apiKeyCreated(options?: ApiKeyCreatedOptions): PendingTemplateRequest;
|
|
52
|
+
apiKeyRotated(options?: ApiKeyRotatedOptions): PendingTemplateRequest;
|
|
53
|
+
creditsExhausted(options: CreditsExhaustedOptions): PendingTemplateRequest;
|
|
54
|
+
creditsLow(options?: CreditsLowOptions): PendingTemplateRequest;
|
|
55
|
+
}
|
|
56
|
+
export declare class NotificationsTemplates {
|
|
57
|
+
private readonly client;
|
|
58
|
+
constructor(client: EmailsDoneClient);
|
|
59
|
+
announcement(options: AnnouncementOptions): PendingTemplateRequest;
|
|
60
|
+
approvalApproved(options: ApprovalApprovedOptions): PendingTemplateRequest;
|
|
61
|
+
approvalNeeded(options: ApprovalNeededOptions): PendingTemplateRequest;
|
|
62
|
+
approvalRejected(options: ApprovalRejectedOptions): PendingTemplateRequest;
|
|
63
|
+
digest(options?: DigestOptions): PendingTemplateRequest;
|
|
64
|
+
exportReady(options: ExportReadyOptions): PendingTemplateRequest;
|
|
65
|
+
generationComplete(options: GenerationCompleteOptions): PendingTemplateRequest;
|
|
66
|
+
importComplete(options?: ImportCompleteOptions): PendingTemplateRequest;
|
|
67
|
+
jobComplete(options?: JobCompleteOptions): PendingTemplateRequest;
|
|
68
|
+
notificationAlert(options: NotificationAlertOptions): PendingTemplateRequest;
|
|
69
|
+
notificationInfo(options: NotificationInfoOptions): PendingTemplateRequest;
|
|
70
|
+
notificationSuccess(options: NotificationSuccessOptions): PendingTemplateRequest;
|
|
71
|
+
notificationWarning(options: NotificationWarningOptions): PendingTemplateRequest;
|
|
72
|
+
processingFailed(options?: ProcessingFailedOptions): PendingTemplateRequest;
|
|
73
|
+
queuedRequestReady(options: QueuedRequestReadyOptions): PendingTemplateRequest;
|
|
74
|
+
reminder(options: ReminderOptions): PendingTemplateRequest;
|
|
75
|
+
reportReady(options: ReportReadyOptions): PendingTemplateRequest;
|
|
76
|
+
uploadComplete(options?: UploadCompleteOptions): PendingTemplateRequest;
|
|
77
|
+
}
|
|
78
|
+
export declare class TeamTemplates {
|
|
79
|
+
private readonly client;
|
|
80
|
+
constructor(client: EmailsDoneClient);
|
|
81
|
+
invitationAccepted(options?: InvitationAcceptedOptions): PendingTemplateRequest;
|
|
82
|
+
invitedToWorkspace(options: InvitedToWorkspaceOptions): PendingTemplateRequest;
|
|
83
|
+
roleChanged(options?: RoleChangedOptions): PendingTemplateRequest;
|
|
84
|
+
teamMemberAdded(options?: TeamMemberAddedOptions): PendingTemplateRequest;
|
|
85
|
+
teamMemberRemoved(options?: TeamMemberRemovedOptions): PendingTemplateRequest;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=templates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"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"}
|