@upyo/mailgun 0.5.0-dev.164 → 0.5.0-dev.168
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.cjs +44 -8
- package/dist/index.js +44 -8
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -149,18 +149,18 @@ var MailgunHttpClient = class {
|
|
|
149
149
|
for (const [key, value] of Object.entries(this.config.headers)) headers.set(key, value);
|
|
150
150
|
const controller = new AbortController();
|
|
151
151
|
const timeoutId = setTimeout(() => controller.abort(), this.config.timeout);
|
|
152
|
-
|
|
153
|
-
if (options.signal) signal = AbortSignal.any([controller.signal, options.signal]);
|
|
152
|
+
const combinedSignal = combineSignals(controller.signal, options.signal);
|
|
154
153
|
try {
|
|
155
154
|
return await globalThis.fetch(url, {
|
|
156
155
|
...options,
|
|
157
156
|
headers,
|
|
158
|
-
signal
|
|
157
|
+
signal: combinedSignal.signal
|
|
159
158
|
});
|
|
160
159
|
} catch (error) {
|
|
161
160
|
if (isAbortError$1(error) && controller.signal.aborted && !options.signal?.aborted) throw new Error(`Mailgun API request timed out after ${this.config.timeout} ms.`);
|
|
162
161
|
throw error;
|
|
163
162
|
} finally {
|
|
163
|
+
combinedSignal.cleanup();
|
|
164
164
|
clearTimeout(timeoutId);
|
|
165
165
|
}
|
|
166
166
|
}
|
|
@@ -203,12 +203,12 @@ function isAbortError$1(error) {
|
|
|
203
203
|
return error instanceof Error && error.name === "AbortError";
|
|
204
204
|
}
|
|
205
205
|
function sleep(milliseconds, signal) {
|
|
206
|
-
if (signal?.aborted) return Promise.reject(createAbortError());
|
|
206
|
+
if (signal?.aborted) return Promise.reject(createAbortError(signal));
|
|
207
207
|
return new Promise((resolve, reject) => {
|
|
208
208
|
function abort() {
|
|
209
209
|
clearTimeout(timeoutId);
|
|
210
210
|
signal?.removeEventListener("abort", abort);
|
|
211
|
-
reject(createAbortError());
|
|
211
|
+
reject(createAbortError(signal));
|
|
212
212
|
}
|
|
213
213
|
const timeoutId = setTimeout(() => {
|
|
214
214
|
signal?.removeEventListener("abort", abort);
|
|
@@ -217,8 +217,41 @@ function sleep(milliseconds, signal) {
|
|
|
217
217
|
signal?.addEventListener("abort", abort, { once: true });
|
|
218
218
|
});
|
|
219
219
|
}
|
|
220
|
-
function createAbortError() {
|
|
221
|
-
return new DOMException("The operation was aborted.", "AbortError");
|
|
220
|
+
function createAbortError(signal) {
|
|
221
|
+
return signal?.reason ?? new DOMException("The operation was aborted.", "AbortError");
|
|
222
|
+
}
|
|
223
|
+
function combineSignals(timeoutSignal, externalSignal) {
|
|
224
|
+
if (externalSignal == null) return {
|
|
225
|
+
signal: timeoutSignal,
|
|
226
|
+
cleanup: () => {}
|
|
227
|
+
};
|
|
228
|
+
if (typeof AbortSignal.any === "function") return {
|
|
229
|
+
signal: AbortSignal.any([timeoutSignal, externalSignal]),
|
|
230
|
+
cleanup: () => {}
|
|
231
|
+
};
|
|
232
|
+
const controller = new AbortController();
|
|
233
|
+
const cleanup = () => {
|
|
234
|
+
timeoutSignal.removeEventListener("abort", abortFromTimeout);
|
|
235
|
+
externalSignal.removeEventListener("abort", abortFromExternal);
|
|
236
|
+
};
|
|
237
|
+
const abortFromTimeout = () => {
|
|
238
|
+
cleanup();
|
|
239
|
+
controller.abort(timeoutSignal.reason);
|
|
240
|
+
};
|
|
241
|
+
const abortFromExternal = () => {
|
|
242
|
+
cleanup();
|
|
243
|
+
controller.abort(externalSignal.reason);
|
|
244
|
+
};
|
|
245
|
+
if (timeoutSignal.aborted) controller.abort(timeoutSignal.reason);
|
|
246
|
+
else if (externalSignal.aborted) controller.abort(externalSignal.reason);
|
|
247
|
+
else {
|
|
248
|
+
timeoutSignal.addEventListener("abort", abortFromTimeout, { once: true });
|
|
249
|
+
externalSignal.addEventListener("abort", abortFromExternal, { once: true });
|
|
250
|
+
}
|
|
251
|
+
return {
|
|
252
|
+
signal: controller.signal,
|
|
253
|
+
cleanup
|
|
254
|
+
};
|
|
222
255
|
}
|
|
223
256
|
function truncateErrorBody(text) {
|
|
224
257
|
return text.length > 500 ? `${text.slice(0, 500)}...` : text;
|
|
@@ -409,7 +442,7 @@ var MailgunTransport = class {
|
|
|
409
442
|
provider: "mailgun"
|
|
410
443
|
};
|
|
411
444
|
} catch (error) {
|
|
412
|
-
if (
|
|
445
|
+
if (isCallerAbort(error, options?.signal)) throw error;
|
|
413
446
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
414
447
|
return createMailgunFailure(errorMessage, error);
|
|
415
448
|
}
|
|
@@ -488,6 +521,9 @@ function createMailgunFailure(message, error) {
|
|
|
488
521
|
});
|
|
489
522
|
return (0, __upyo_core.createFailedReceipt)(message, { provider: "mailgun" });
|
|
490
523
|
}
|
|
524
|
+
function isCallerAbort(error, signal) {
|
|
525
|
+
return signal?.aborted === true && (isAbortError(error) || error === signal.reason);
|
|
526
|
+
}
|
|
491
527
|
function isAbortError(error) {
|
|
492
528
|
return error instanceof Error && error.name === "AbortError";
|
|
493
529
|
}
|
package/dist/index.js
CHANGED
|
@@ -126,18 +126,18 @@ var MailgunHttpClient = class {
|
|
|
126
126
|
for (const [key, value] of Object.entries(this.config.headers)) headers.set(key, value);
|
|
127
127
|
const controller = new AbortController();
|
|
128
128
|
const timeoutId = setTimeout(() => controller.abort(), this.config.timeout);
|
|
129
|
-
|
|
130
|
-
if (options.signal) signal = AbortSignal.any([controller.signal, options.signal]);
|
|
129
|
+
const combinedSignal = combineSignals(controller.signal, options.signal);
|
|
131
130
|
try {
|
|
132
131
|
return await globalThis.fetch(url, {
|
|
133
132
|
...options,
|
|
134
133
|
headers,
|
|
135
|
-
signal
|
|
134
|
+
signal: combinedSignal.signal
|
|
136
135
|
});
|
|
137
136
|
} catch (error) {
|
|
138
137
|
if (isAbortError$1(error) && controller.signal.aborted && !options.signal?.aborted) throw new Error(`Mailgun API request timed out after ${this.config.timeout} ms.`);
|
|
139
138
|
throw error;
|
|
140
139
|
} finally {
|
|
140
|
+
combinedSignal.cleanup();
|
|
141
141
|
clearTimeout(timeoutId);
|
|
142
142
|
}
|
|
143
143
|
}
|
|
@@ -180,12 +180,12 @@ function isAbortError$1(error) {
|
|
|
180
180
|
return error instanceof Error && error.name === "AbortError";
|
|
181
181
|
}
|
|
182
182
|
function sleep(milliseconds, signal) {
|
|
183
|
-
if (signal?.aborted) return Promise.reject(createAbortError());
|
|
183
|
+
if (signal?.aborted) return Promise.reject(createAbortError(signal));
|
|
184
184
|
return new Promise((resolve, reject) => {
|
|
185
185
|
function abort() {
|
|
186
186
|
clearTimeout(timeoutId);
|
|
187
187
|
signal?.removeEventListener("abort", abort);
|
|
188
|
-
reject(createAbortError());
|
|
188
|
+
reject(createAbortError(signal));
|
|
189
189
|
}
|
|
190
190
|
const timeoutId = setTimeout(() => {
|
|
191
191
|
signal?.removeEventListener("abort", abort);
|
|
@@ -194,8 +194,41 @@ function sleep(milliseconds, signal) {
|
|
|
194
194
|
signal?.addEventListener("abort", abort, { once: true });
|
|
195
195
|
});
|
|
196
196
|
}
|
|
197
|
-
function createAbortError() {
|
|
198
|
-
return new DOMException("The operation was aborted.", "AbortError");
|
|
197
|
+
function createAbortError(signal) {
|
|
198
|
+
return signal?.reason ?? new DOMException("The operation was aborted.", "AbortError");
|
|
199
|
+
}
|
|
200
|
+
function combineSignals(timeoutSignal, externalSignal) {
|
|
201
|
+
if (externalSignal == null) return {
|
|
202
|
+
signal: timeoutSignal,
|
|
203
|
+
cleanup: () => {}
|
|
204
|
+
};
|
|
205
|
+
if (typeof AbortSignal.any === "function") return {
|
|
206
|
+
signal: AbortSignal.any([timeoutSignal, externalSignal]),
|
|
207
|
+
cleanup: () => {}
|
|
208
|
+
};
|
|
209
|
+
const controller = new AbortController();
|
|
210
|
+
const cleanup = () => {
|
|
211
|
+
timeoutSignal.removeEventListener("abort", abortFromTimeout);
|
|
212
|
+
externalSignal.removeEventListener("abort", abortFromExternal);
|
|
213
|
+
};
|
|
214
|
+
const abortFromTimeout = () => {
|
|
215
|
+
cleanup();
|
|
216
|
+
controller.abort(timeoutSignal.reason);
|
|
217
|
+
};
|
|
218
|
+
const abortFromExternal = () => {
|
|
219
|
+
cleanup();
|
|
220
|
+
controller.abort(externalSignal.reason);
|
|
221
|
+
};
|
|
222
|
+
if (timeoutSignal.aborted) controller.abort(timeoutSignal.reason);
|
|
223
|
+
else if (externalSignal.aborted) controller.abort(externalSignal.reason);
|
|
224
|
+
else {
|
|
225
|
+
timeoutSignal.addEventListener("abort", abortFromTimeout, { once: true });
|
|
226
|
+
externalSignal.addEventListener("abort", abortFromExternal, { once: true });
|
|
227
|
+
}
|
|
228
|
+
return {
|
|
229
|
+
signal: controller.signal,
|
|
230
|
+
cleanup
|
|
231
|
+
};
|
|
199
232
|
}
|
|
200
233
|
function truncateErrorBody(text) {
|
|
201
234
|
return text.length > 500 ? `${text.slice(0, 500)}...` : text;
|
|
@@ -386,7 +419,7 @@ var MailgunTransport = class {
|
|
|
386
419
|
provider: "mailgun"
|
|
387
420
|
};
|
|
388
421
|
} catch (error) {
|
|
389
|
-
if (
|
|
422
|
+
if (isCallerAbort(error, options?.signal)) throw error;
|
|
390
423
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
391
424
|
return createMailgunFailure(errorMessage, error);
|
|
392
425
|
}
|
|
@@ -465,6 +498,9 @@ function createMailgunFailure(message, error) {
|
|
|
465
498
|
});
|
|
466
499
|
return createFailedReceipt(message, { provider: "mailgun" });
|
|
467
500
|
}
|
|
501
|
+
function isCallerAbort(error, signal) {
|
|
502
|
+
return signal?.aborted === true && (isAbortError(error) || error === signal.reason);
|
|
503
|
+
}
|
|
468
504
|
function isAbortError(error) {
|
|
469
505
|
return error instanceof Error && error.name === "AbortError";
|
|
470
506
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@upyo/mailgun",
|
|
3
|
-
"version": "0.5.0-dev.
|
|
3
|
+
"version": "0.5.0-dev.168",
|
|
4
4
|
"description": "Mailgun transport for Upyo email library",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"email",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
},
|
|
54
54
|
"sideEffects": false,
|
|
55
55
|
"peerDependencies": {
|
|
56
|
-
"@upyo/core": "0.5.0-dev.
|
|
56
|
+
"@upyo/core": "0.5.0-dev.168+1e808a3a"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
59
|
"tsdown": "^0.12.7",
|