@mailwurf/e2e 1.0.0-551aa41 → 1.0.0-56f4751
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 +21 -6
- package/dist/client.d.ts +12 -5
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +46 -32
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +20 -6
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @mailwurf/e2e
|
|
2
2
|
|
|
3
|
-
`fetch` client for the tenant-scoped Mailwurf API at `/
|
|
3
|
+
`fetch` client for the tenant-scoped Mailwurf API at `/v1`. No Playwright dependency. The app keeps its real mail sender; tests only set the recipient.
|
|
4
4
|
|
|
5
5
|
Public on [npm](https://www.npmjs.com/package/@mailwurf/e2e).
|
|
6
6
|
|
|
@@ -9,9 +9,9 @@ npm install @mailwurf/e2e
|
|
|
9
9
|
```
|
|
10
10
|
|
|
11
11
|
```ts
|
|
12
|
-
import {
|
|
12
|
+
import { createMailwurf } from "@mailwurf/e2e";
|
|
13
13
|
|
|
14
|
-
const mailwurf =
|
|
14
|
+
const mailwurf = createMailwurf(process.env.MAILWURF_API_KEY!); // API key (mw_live_…) from Dashboard → API keys
|
|
15
15
|
const inbox = await mailwurf.createInbox();
|
|
16
16
|
|
|
17
17
|
await page.fill("[name=email]", inbox.address);
|
|
@@ -22,10 +22,25 @@ await page.goto(mail.links[0]!);
|
|
|
22
22
|
// mail.otp → "482193"
|
|
23
23
|
```
|
|
24
24
|
|
|
25
|
-
The
|
|
25
|
+
The first argument is the organization key (`mw_live_…`) and is required; `createMailwurf()` throws when it is empty. The package reads no environment variables. It talks to `https://api.mailwurf.io`; pass `apiUrl` only for a self-hosted Mailwurf. A bare host is treated as `https://`:
|
|
26
26
|
|
|
27
27
|
```ts
|
|
28
|
-
|
|
28
|
+
createMailwurf("mw_live_…", { apiUrl: "mailwurf.example.com" });
|
|
29
29
|
```
|
|
30
30
|
|
|
31
|
-
`
|
|
31
|
+
`subject` is a case-insensitive substring. `timeout` is milliseconds.
|
|
32
|
+
|
|
33
|
+
## Send from an inbox
|
|
34
|
+
|
|
35
|
+
Inboxes send too, for tests of an app that reads mail (support replies, mail-to-import):
|
|
36
|
+
|
|
37
|
+
```ts
|
|
38
|
+
const alice = await mailwurf.createInbox();
|
|
39
|
+
const bob = await mailwurf.createInbox();
|
|
40
|
+
await alice.send({ to: bob.address, subject: "Hello", text: "Hi Bob" });
|
|
41
|
+
const mail = await bob.waitFor({ subject: "Hello" });
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
`inbox.senderAddress` is what recipients see as sender. It equals `inbox.address`, except for a permanent address on a [sending domain](https://mailwurf.io/help/dashboard/domains#sending-domains): `billing@send.acme.com` sends as `billing@acme.com`.
|
|
45
|
+
|
|
46
|
+
To send transactional mail from an app (receipts, notifications), use [`@mailwurf/transactional`](https://www.npmjs.com/package/@mailwurf/transactional).
|
package/dist/client.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type { CreateInboxInput, Inbox, ListMessagesOptions, MailwurfOptions, Message, WaitForOptions } from "./types.js";
|
|
2
|
-
export declare const
|
|
1
|
+
import type { CreateInboxInput, Inbox, ListMessagesOptions, MailwurfOptions, Message, SendMessageInput, SentMessage, WaitForOptions } from "./types.js";
|
|
2
|
+
export declare const DEFAULT_API_URL = "https://api.mailwurf.io";
|
|
3
3
|
export declare class Mailwurf {
|
|
4
4
|
#private;
|
|
5
|
-
readonly
|
|
6
|
-
constructor(options?: MailwurfOptions);
|
|
5
|
+
readonly apiUrl: string;
|
|
6
|
+
constructor(apiKey: string, options?: MailwurfOptions);
|
|
7
7
|
health(): Promise<void>;
|
|
8
8
|
createInbox(input?: CreateInboxInput): Promise<MailwurfInbox>;
|
|
9
9
|
getInbox(id: string): Promise<MailwurfInbox>;
|
|
@@ -11,18 +11,25 @@ export declare class Mailwurf {
|
|
|
11
11
|
getMessage(id: string): Promise<Message>;
|
|
12
12
|
listMessages(inboxId: string, options?: ListMessagesOptions): Promise<Message[]>;
|
|
13
13
|
waitFor(inboxId: string, options?: WaitForOptions): Promise<Message>;
|
|
14
|
+
send(inboxId: string, input: SendMessageInput): Promise<SentMessage>;
|
|
14
15
|
deleteInbox(id: string): Promise<void>;
|
|
15
16
|
}
|
|
16
17
|
export declare class MailwurfInbox implements Inbox {
|
|
17
18
|
#private;
|
|
18
19
|
readonly id: string;
|
|
19
20
|
readonly address: string;
|
|
21
|
+
readonly senderAddress: string;
|
|
20
22
|
readonly createdAt: Date;
|
|
21
23
|
readonly expiresAt: Date | null;
|
|
22
24
|
constructor(client: Mailwurf, inbox: Inbox);
|
|
23
25
|
waitFor(options?: WaitForOptions): Promise<Message>;
|
|
26
|
+
send(input: SendMessageInput): Promise<SentMessage>;
|
|
24
27
|
messages(options?: ListMessagesOptions): Promise<Message[]>;
|
|
25
28
|
delete(): Promise<void>;
|
|
26
29
|
}
|
|
27
|
-
|
|
30
|
+
/**
|
|
31
|
+
* `apiKey` is the organization key (`mw_live_…`) and is required.
|
|
32
|
+
* `apiUrl` is only needed for a self-hosted Mailwurf.
|
|
33
|
+
*/
|
|
34
|
+
export declare function createMailwurf(apiKey: string, options?: MailwurfOptions): Mailwurf;
|
|
28
35
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,KAAK,EACL,mBAAmB,EACnB,eAAe,EACf,OAAO,EAGP,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,KAAK,EACL,mBAAmB,EACnB,eAAe,EACf,OAAO,EAGP,gBAAgB,EAChB,WAAW,EACX,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,eAAe,4BAA4B,CAAC;AAsDzD,qBAAa,QAAQ;;IACnB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAIZ,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB;IAYnD,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAKvB,WAAW,CAAC,KAAK,GAAE,gBAAqB,GAAG,OAAO,CAAC,aAAa,CAAC;IAWjE,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAQ5C,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAQvD,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQxC,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IASpF,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;IAiBxE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC;IAkBpE,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAqC7C;AAED,qBAAa,aAAc,YAAW,KAAK;;IACzC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;gBAGpB,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK;IAS1C,OAAO,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAInD,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC;IAInD,QAAQ,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAI3D,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAGxB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,QAAQ,CAEtF"}
|
package/dist/client.js
CHANGED
|
@@ -1,28 +1,21 @@
|
|
|
1
1
|
import { MailwurfError, MailwurfTimeoutError } from "./errors.js";
|
|
2
|
-
export const
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
if (env && env.length > 0) {
|
|
6
|
-
return env;
|
|
7
|
-
}
|
|
8
|
-
return DEFAULT_BASE_URL;
|
|
9
|
-
}
|
|
10
|
-
/** Accepts `api.mailwurf.io` as well as `https://api.mailwurf.io/`. */
|
|
11
|
-
function normalizeBaseUrl(url) {
|
|
2
|
+
export const DEFAULT_API_URL = "https://api.mailwurf.io";
|
|
3
|
+
/** Accepts `mailwurf.example.com` as well as `https://mailwurf.example.com/`. */
|
|
4
|
+
function normalizeApiUrl(url) {
|
|
12
5
|
const trimmed = url.trim().replace(/\/+$/, "");
|
|
13
6
|
return /^https?:\/\//i.test(trimmed) ? trimmed : `https://${trimmed}`;
|
|
14
7
|
}
|
|
15
|
-
function
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
return env;
|
|
8
|
+
function requireApiKey(apiKey) {
|
|
9
|
+
if (typeof apiKey !== "string" || apiKey.trim().length === 0) {
|
|
10
|
+
throw new TypeError("Mailwurf: apiKey is required. Pass the organization key (mw_live_…) from the dashboard.");
|
|
19
11
|
}
|
|
20
|
-
return
|
|
12
|
+
return apiKey;
|
|
21
13
|
}
|
|
22
14
|
function asInbox(raw) {
|
|
23
15
|
return {
|
|
24
16
|
id: raw.id,
|
|
25
17
|
address: raw.address,
|
|
18
|
+
senderAddress: raw.sender_address ?? raw.address,
|
|
26
19
|
createdAt: new Date(raw.created_at),
|
|
27
20
|
expiresAt: raw.expires_at ? new Date(raw.expires_at) : null,
|
|
28
21
|
};
|
|
@@ -53,23 +46,21 @@ function query(params) {
|
|
|
53
46
|
return s ? `?${s}` : "";
|
|
54
47
|
}
|
|
55
48
|
export class Mailwurf {
|
|
56
|
-
|
|
49
|
+
apiUrl;
|
|
57
50
|
#fetch;
|
|
58
51
|
#apiKey;
|
|
59
|
-
constructor(options = {}) {
|
|
60
|
-
this
|
|
52
|
+
constructor(apiKey, options = {}) {
|
|
53
|
+
this.#apiKey = requireApiKey(apiKey);
|
|
54
|
+
this.apiUrl = normalizeApiUrl(options.apiUrl ?? DEFAULT_API_URL);
|
|
61
55
|
this.#fetch = options.fetch ?? fetch;
|
|
62
|
-
this.#apiKey = options.apiKey ?? defaultApiKey();
|
|
63
56
|
}
|
|
64
57
|
#headers(extra) {
|
|
65
58
|
const headers = new Headers(extra);
|
|
66
|
-
|
|
67
|
-
headers.set("authorization", `Bearer ${this.#apiKey}`);
|
|
68
|
-
}
|
|
59
|
+
headers.set("authorization", `Bearer ${this.#apiKey}`);
|
|
69
60
|
return headers;
|
|
70
61
|
}
|
|
71
62
|
async health() {
|
|
72
|
-
const res = await this.#fetch(`${this.
|
|
63
|
+
const res = await this.#fetch(`${this.apiUrl}/v1/health`);
|
|
73
64
|
await this.#read(res);
|
|
74
65
|
}
|
|
75
66
|
async createInbox(input = {}) {
|
|
@@ -78,39 +69,39 @@ export class Mailwurf {
|
|
|
78
69
|
init.headers = this.#headers({ "content-type": "application/json" });
|
|
79
70
|
init.body = JSON.stringify({ address: input.address });
|
|
80
71
|
}
|
|
81
|
-
const res = await this.#fetch(`${this.
|
|
72
|
+
const res = await this.#fetch(`${this.apiUrl}/v1/inboxes`, init);
|
|
82
73
|
const raw = await this.#read(res);
|
|
83
74
|
return this.#wrap(asInbox(raw));
|
|
84
75
|
}
|
|
85
76
|
async getInbox(id) {
|
|
86
|
-
const res = await this.#fetch(`${this.
|
|
77
|
+
const res = await this.#fetch(`${this.apiUrl}/v1/inboxes/${encodeURIComponent(id)}`, {
|
|
87
78
|
headers: this.#headers(),
|
|
88
79
|
});
|
|
89
80
|
const raw = await this.#read(res);
|
|
90
81
|
return this.#wrap(asInbox(raw));
|
|
91
82
|
}
|
|
92
83
|
async inboxByAddress(address) {
|
|
93
|
-
const res = await this.#fetch(`${this.
|
|
84
|
+
const res = await this.#fetch(`${this.apiUrl}/v1/inboxes${query({ address })}`, {
|
|
94
85
|
headers: this.#headers(),
|
|
95
86
|
});
|
|
96
87
|
const raw = await this.#read(res);
|
|
97
88
|
return this.#wrap(asInbox(raw));
|
|
98
89
|
}
|
|
99
90
|
async getMessage(id) {
|
|
100
|
-
const res = await this.#fetch(`${this.
|
|
91
|
+
const res = await this.#fetch(`${this.apiUrl}/v1/messages/${encodeURIComponent(id)}`, {
|
|
101
92
|
headers: this.#headers(),
|
|
102
93
|
});
|
|
103
94
|
const raw = await this.#read(res);
|
|
104
95
|
return asMessage(raw);
|
|
105
96
|
}
|
|
106
97
|
async listMessages(inboxId, options = {}) {
|
|
107
|
-
const res = await this.#fetch(`${this.
|
|
98
|
+
const res = await this.#fetch(`${this.apiUrl}/v1/inboxes/${encodeURIComponent(inboxId)}/messages${query(options)}`, { headers: this.#headers() });
|
|
108
99
|
const raw = await this.#read(res);
|
|
109
100
|
return (raw.messages ?? []).map(asMessage);
|
|
110
101
|
}
|
|
111
102
|
async waitFor(inboxId, options = {}) {
|
|
112
103
|
const timeout = options.timeout ?? 15_000;
|
|
113
|
-
const res = await this.#fetch(`${this.
|
|
104
|
+
const res = await this.#fetch(`${this.apiUrl}/v1/inboxes/${encodeURIComponent(inboxId)}/messages/wait${query({
|
|
114
105
|
subject: options.subject,
|
|
115
106
|
after: options.after,
|
|
116
107
|
timeout,
|
|
@@ -121,8 +112,22 @@ export class Mailwurf {
|
|
|
121
112
|
const raw = await this.#read(res);
|
|
122
113
|
return asMessage(raw);
|
|
123
114
|
}
|
|
115
|
+
async send(inboxId, input) {
|
|
116
|
+
const res = await this.#fetch(`${this.apiUrl}/v1/inboxes/${encodeURIComponent(inboxId)}/messages`, {
|
|
117
|
+
method: "POST",
|
|
118
|
+
headers: this.#headers({ "content-type": "application/json" }),
|
|
119
|
+
body: JSON.stringify({
|
|
120
|
+
to: input.to,
|
|
121
|
+
subject: input.subject,
|
|
122
|
+
text: input.text ?? "",
|
|
123
|
+
...(input.html ? { html: input.html } : {}),
|
|
124
|
+
...(input.inReplyTo ? { in_reply_to: input.inReplyTo } : {}),
|
|
125
|
+
}),
|
|
126
|
+
});
|
|
127
|
+
return this.#read(res);
|
|
128
|
+
}
|
|
124
129
|
async deleteInbox(id) {
|
|
125
|
-
const res = await this.#fetch(`${this.
|
|
130
|
+
const res = await this.#fetch(`${this.apiUrl}/v1/inboxes/${encodeURIComponent(id)}`, {
|
|
126
131
|
method: "DELETE",
|
|
127
132
|
headers: this.#headers(),
|
|
128
133
|
});
|
|
@@ -160,6 +165,7 @@ export class Mailwurf {
|
|
|
160
165
|
export class MailwurfInbox {
|
|
161
166
|
id;
|
|
162
167
|
address;
|
|
168
|
+
senderAddress;
|
|
163
169
|
createdAt;
|
|
164
170
|
expiresAt;
|
|
165
171
|
#client;
|
|
@@ -167,12 +173,16 @@ export class MailwurfInbox {
|
|
|
167
173
|
this.#client = client;
|
|
168
174
|
this.id = inbox.id;
|
|
169
175
|
this.address = inbox.address;
|
|
176
|
+
this.senderAddress = inbox.senderAddress;
|
|
170
177
|
this.createdAt = inbox.createdAt;
|
|
171
178
|
this.expiresAt = inbox.expiresAt;
|
|
172
179
|
}
|
|
173
180
|
waitFor(options) {
|
|
174
181
|
return this.#client.waitFor(this.id, options);
|
|
175
182
|
}
|
|
183
|
+
send(input) {
|
|
184
|
+
return this.#client.send(this.id, input);
|
|
185
|
+
}
|
|
176
186
|
messages(options) {
|
|
177
187
|
return this.#client.listMessages(this.id, options);
|
|
178
188
|
}
|
|
@@ -180,7 +190,11 @@ export class MailwurfInbox {
|
|
|
180
190
|
return this.#client.deleteInbox(this.id);
|
|
181
191
|
}
|
|
182
192
|
}
|
|
183
|
-
|
|
184
|
-
|
|
193
|
+
/**
|
|
194
|
+
* `apiKey` is the organization key (`mw_live_…`) and is required.
|
|
195
|
+
* `apiUrl` is only needed for a self-hosted Mailwurf.
|
|
196
|
+
*/
|
|
197
|
+
export function createMailwurf(apiKey, options = {}) {
|
|
198
|
+
return new Mailwurf(apiKey, options);
|
|
185
199
|
}
|
|
186
200
|
//# sourceMappingURL=client.js.map
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { createMailwurf, DEFAULT_API_URL, Mailwurf, MailwurfInbox } from "./client.js";
|
|
2
2
|
export { MailwurfError, MailwurfTimeoutError } from "./errors.js";
|
|
3
|
-
export type { CreateInboxInput, Inbox, ListMessagesOptions, MailwurfOptions, Message, WaitForOptions, } from "./types.js";
|
|
3
|
+
export type { CreateInboxInput, Inbox, ListMessagesOptions, MailwurfOptions, Message, SendMessageInput, SentMessage, WaitForOptions, } from "./types.js";
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAClE,YAAY,EACV,gBAAgB,EAChB,KAAK,EACL,mBAAmB,EACnB,eAAe,EACf,OAAO,EACP,gBAAgB,EAChB,WAAW,EACX,cAAc,GACf,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { createMailwurf, DEFAULT_API_URL, Mailwurf, MailwurfInbox } from "./client.js";
|
|
2
2
|
export { MailwurfError, MailwurfTimeoutError } from "./errors.js";
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
export type MailwurfOptions = {
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
* Defaults to `
|
|
5
|
-
* A bare host such as `
|
|
3
|
+
* Origin of a self-hosted Mailwurf API. Calls are made under `/v1`.
|
|
4
|
+
* Defaults to `https://api.mailwurf.io`.
|
|
5
|
+
* A bare host such as `mailwurf.example.com` is treated as `https://`.
|
|
6
6
|
*/
|
|
7
|
-
|
|
8
|
-
/** Organization API key. Defaults to `MAILWURF_API_KEY`. */
|
|
9
|
-
apiKey?: string;
|
|
7
|
+
apiUrl?: string;
|
|
10
8
|
/** Injected in tests. Defaults to global `fetch`. */
|
|
11
9
|
fetch?: typeof fetch;
|
|
12
10
|
};
|
|
@@ -26,9 +24,23 @@ export type ListMessagesOptions = {
|
|
|
26
24
|
subject?: string;
|
|
27
25
|
after?: string;
|
|
28
26
|
};
|
|
27
|
+
export type SendMessageInput = {
|
|
28
|
+
to: string;
|
|
29
|
+
subject: string;
|
|
30
|
+
text?: string;
|
|
31
|
+
html?: string;
|
|
32
|
+
inReplyTo?: string;
|
|
33
|
+
};
|
|
34
|
+
export type SentMessage = {
|
|
35
|
+
id: string;
|
|
36
|
+
status: string;
|
|
37
|
+
};
|
|
29
38
|
export type Inbox = {
|
|
30
39
|
id: string;
|
|
40
|
+
/** Receives mail. On a sending domain this is `name@send.{domain}`. */
|
|
31
41
|
address: string;
|
|
42
|
+
/** What recipients see as sender: `address`, or `name@{domain}` on a sending domain. */
|
|
43
|
+
senderAddress: string;
|
|
32
44
|
createdAt: Date;
|
|
33
45
|
expiresAt: Date | null;
|
|
34
46
|
};
|
|
@@ -47,6 +59,8 @@ export type Message = {
|
|
|
47
59
|
export type RawInbox = {
|
|
48
60
|
id: string;
|
|
49
61
|
address: string;
|
|
62
|
+
/** Absent from APIs older than sending domains. */
|
|
63
|
+
sender_address?: string;
|
|
50
64
|
created_at: string;
|
|
51
65
|
expires_at: string | null;
|
|
52
66
|
};
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG;IAC5B;;;;OAIG;IACH,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG;IAC5B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAChB,wFAAwF;IACxF,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,IAAI,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mailwurf/e2e",
|
|
3
|
-
"version": "1.0.0-
|
|
3
|
+
"version": "1.0.0-56f4751",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Fetch client for the Mailwurf wait API",
|
|
6
6
|
"keywords": [
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
"url": "https://github.com/wemogy/mailwurf/issues"
|
|
17
17
|
},
|
|
18
18
|
"license": "MIT",
|
|
19
|
+
"author": "wemogy IT",
|
|
19
20
|
"repository": {
|
|
20
21
|
"type": "git",
|
|
21
22
|
"url": "git+https://github.com/wemogy/mailwurf.git",
|