zerodrop-client 0.1.9 → 0.2.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/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +98 -9
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ export interface ZeroDropEmail {
|
|
|
12
12
|
export interface WaitForLatestOptions {
|
|
13
13
|
timeout?: number;
|
|
14
14
|
pollInterval?: number;
|
|
15
|
+
sse?: boolean;
|
|
15
16
|
}
|
|
16
17
|
export interface ZeroDropOptions {
|
|
17
18
|
baseUrl?: string;
|
|
@@ -31,6 +32,7 @@ export declare class ZeroDrop {
|
|
|
31
32
|
constructor(apiKey?: string, options?: ZeroDropOptions);
|
|
32
33
|
generateInbox(): string;
|
|
33
34
|
fetchLatest(inbox: string): Promise<ZeroDropEmail | null>;
|
|
35
|
+
private waitForLatestSSE;
|
|
34
36
|
waitForLatest(inbox: string, options?: WaitForLatestOptions): Promise<ZeroDropEmail>;
|
|
35
37
|
onReceived(inbox: string, webhookUrl: string): Promise<{
|
|
36
38
|
registered: boolean;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,IAAI,CAAC;IACjB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,IAAI,CAAC;IACjB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAMD,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;CAO7C;AAED,qBAAa,iBAAkB,SAAQ,KAAK;;CAK3C;AAED,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAO5B;AAsED,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB;IAmB1D,aAAa,IAAI,MAAM;IAWjB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;YAwEjD,gBAAgB;IAoExB,aAAa,CACjB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,aAAa,CAAC;IAuCnB,UAAU,CACd,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;QAAE,UAAU,EAAE,OAAO,CAAA;KAAE,CAAC;IAkCnC,OAAO,CAAC,KAAK;CAGd;AAMD,eAAe,QAAQ,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -29,7 +29,7 @@ exports.ZeroDropAuthError = ZeroDropAuthError;
|
|
|
29
29
|
class ZeroDropNetworkError extends Error {
|
|
30
30
|
constructor(message) {
|
|
31
31
|
super(`ZeroDrop: Network error — ${message}. ` +
|
|
32
|
-
`Check https://
|
|
32
|
+
`Check https://zerodrop.instatus.com for service status.`);
|
|
33
33
|
this.name = "ZeroDropNetworkError";
|
|
34
34
|
}
|
|
35
35
|
}
|
|
@@ -52,6 +52,28 @@ function extractBody(raw) {
|
|
|
52
52
|
.substring(0, 5000);
|
|
53
53
|
}
|
|
54
54
|
// ============================================
|
|
55
|
+
// Parse raw Redis email string into ZeroDropEmail
|
|
56
|
+
// ============================================
|
|
57
|
+
function parseEmail(raw) {
|
|
58
|
+
var _a, _b;
|
|
59
|
+
let parsed = JSON.parse(raw);
|
|
60
|
+
// Redis REST API sometimes wraps values in an array
|
|
61
|
+
if (Array.isArray(parsed))
|
|
62
|
+
parsed = JSON.parse(parsed[0]);
|
|
63
|
+
const email = parsed;
|
|
64
|
+
return {
|
|
65
|
+
id: email.id,
|
|
66
|
+
from: email.from,
|
|
67
|
+
to: email.to,
|
|
68
|
+
subject: email.subject || "",
|
|
69
|
+
body: extractBody(email.raw),
|
|
70
|
+
rawBody: email.raw,
|
|
71
|
+
receivedAt: new Date(email.receivedAt),
|
|
72
|
+
otp: (_a = email.otp) !== null && _a !== void 0 ? _a : null,
|
|
73
|
+
magicLink: (_b = email.magicLink) !== null && _b !== void 0 ? _b : null,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
// ============================================
|
|
55
77
|
// Random inbox generator (zero-auth)
|
|
56
78
|
// ============================================
|
|
57
79
|
function generateRandomInboxName() {
|
|
@@ -83,12 +105,11 @@ class ZeroDrop {
|
|
|
83
105
|
// ============================================
|
|
84
106
|
generateInbox() {
|
|
85
107
|
const name = generateRandomInboxName();
|
|
86
|
-
|
|
87
|
-
return `${name}@${domain}`;
|
|
108
|
+
return `${name}@${FREE_DOMAIN}`;
|
|
88
109
|
}
|
|
89
110
|
// ============================================
|
|
90
111
|
// fetchLatest()
|
|
91
|
-
// Fetches current emails for an inbox
|
|
112
|
+
// Fetches current emails for an inbox via REST
|
|
92
113
|
// Returns null if empty
|
|
93
114
|
// ============================================
|
|
94
115
|
async fetchLatest(inbox) {
|
|
@@ -136,15 +157,86 @@ class ZeroDrop {
|
|
|
136
157
|
};
|
|
137
158
|
}
|
|
138
159
|
// ============================================
|
|
160
|
+
// waitForLatestSSE()
|
|
161
|
+
// Uses SSE stream for sub-second email delivery
|
|
162
|
+
// Falls back to polling on error
|
|
163
|
+
// ============================================
|
|
164
|
+
async waitForLatestSSE(inbox, timeoutMs) {
|
|
165
|
+
var _a;
|
|
166
|
+
const inboxName = inbox.split("@")[0].toLowerCase();
|
|
167
|
+
const headers = {};
|
|
168
|
+
if (this.apiKey) {
|
|
169
|
+
headers["Authorization"] = `Bearer ${this.apiKey}`;
|
|
170
|
+
}
|
|
171
|
+
let res;
|
|
172
|
+
try {
|
|
173
|
+
res = await fetch(`${this.baseUrl}/api/inbox/${inboxName}/stream`, {
|
|
174
|
+
headers,
|
|
175
|
+
signal: AbortSignal.timeout(timeoutMs + 1000),
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
catch (_b) {
|
|
179
|
+
return null; // Fall back to polling
|
|
180
|
+
}
|
|
181
|
+
if (!res.ok || !res.body)
|
|
182
|
+
return null;
|
|
183
|
+
const reader = res.body.getReader();
|
|
184
|
+
const decoder = new TextDecoder();
|
|
185
|
+
let buffer = "";
|
|
186
|
+
try {
|
|
187
|
+
while (true) {
|
|
188
|
+
const { done, value } = await reader.read();
|
|
189
|
+
if (done)
|
|
190
|
+
break;
|
|
191
|
+
buffer += decoder.decode(value, { stream: true });
|
|
192
|
+
const lines = buffer.split("\n");
|
|
193
|
+
buffer = (_a = lines.pop()) !== null && _a !== void 0 ? _a : "";
|
|
194
|
+
for (const line of lines) {
|
|
195
|
+
if (line.startsWith("data: ")) {
|
|
196
|
+
const data = line.slice(6).trim();
|
|
197
|
+
if (data === "__timeout__")
|
|
198
|
+
return null;
|
|
199
|
+
if (data) {
|
|
200
|
+
try {
|
|
201
|
+
return parseEmail(data);
|
|
202
|
+
}
|
|
203
|
+
catch (_c) {
|
|
204
|
+
return null;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
finally {
|
|
212
|
+
reader.cancel();
|
|
213
|
+
}
|
|
214
|
+
return null;
|
|
215
|
+
}
|
|
216
|
+
// ============================================
|
|
139
217
|
// waitForLatest()
|
|
140
|
-
//
|
|
141
|
-
//
|
|
218
|
+
// Uses SSE by default for sub-second delivery
|
|
219
|
+
// Falls back to polling if SSE fails
|
|
142
220
|
// Throws ZeroDropTimeoutError on timeout
|
|
143
221
|
// ============================================
|
|
144
222
|
async waitForLatest(inbox, options = {}) {
|
|
145
223
|
var _a, _b;
|
|
146
224
|
const timeout = (_a = options.timeout) !== null && _a !== void 0 ? _a : 10000;
|
|
147
225
|
const pollInterval = (_b = options.pollInterval) !== null && _b !== void 0 ? _b : POLL_INTERVAL;
|
|
226
|
+
const useSSE = options.sse !== false; // SSE on by default
|
|
227
|
+
// Try SSE first
|
|
228
|
+
if (useSSE) {
|
|
229
|
+
try {
|
|
230
|
+
const email = await this.waitForLatestSSE(inbox, timeout);
|
|
231
|
+
if (email)
|
|
232
|
+
return email;
|
|
233
|
+
}
|
|
234
|
+
catch (_c) {
|
|
235
|
+
// SSE failed — fall through to polling
|
|
236
|
+
console.warn("[ZeroDrop] SSE unavailable, falling back to polling");
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
// Polling fallback
|
|
148
240
|
const startTime = Date.now();
|
|
149
241
|
while (Date.now() - startTime < timeout) {
|
|
150
242
|
try {
|
|
@@ -153,11 +245,8 @@ class ZeroDrop {
|
|
|
153
245
|
return email;
|
|
154
246
|
}
|
|
155
247
|
catch (err) {
|
|
156
|
-
// Retry network errors until timeout
|
|
157
|
-
// Auth errors are re-thrown immediately
|
|
158
248
|
if (err instanceof ZeroDropAuthError)
|
|
159
249
|
throw err;
|
|
160
|
-
// Log network errors but keep polling
|
|
161
250
|
console.warn(`[ZeroDrop] Poll error (retrying): ${err.message}`);
|
|
162
251
|
}
|
|
163
252
|
await this.sleep(pollInterval);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,+CAA+C;AAC/C,mBAAmB;AACnB,4CAA4C;AAC5C,+CAA+C;;;AAE/C,MAAM,QAAQ,GAAG,sBAAsB,CAAC;AACxC,MAAM,WAAW,GAAG,yBAAyB,CAAC;AAC9C,MAAM,aAAa,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|