@upyo/mailgun 0.5.0-dev.164 → 0.5.0-dev.170

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 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
- let signal = controller.signal;
153
- if (options.signal) signal = AbortSignal.any([controller.signal, options.signal]);
152
+ const combinedSignal = (0, __upyo_core.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,8 @@ 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
222
  }
223
223
  function truncateErrorBody(text) {
224
224
  return text.length > 500 ? `${text.slice(0, 500)}...` : text;
@@ -409,7 +409,7 @@ var MailgunTransport = class {
409
409
  provider: "mailgun"
410
410
  };
411
411
  } catch (error) {
412
- if (isAbortError(error) && options?.signal?.aborted) throw error;
412
+ if (isCallerAbort(error, options?.signal)) throw error;
413
413
  const errorMessage = error instanceof Error ? error.message : String(error);
414
414
  return createMailgunFailure(errorMessage, error);
415
415
  }
@@ -488,6 +488,9 @@ function createMailgunFailure(message, error) {
488
488
  });
489
489
  return (0, __upyo_core.createFailedReceipt)(message, { provider: "mailgun" });
490
490
  }
491
+ function isCallerAbort(error, signal) {
492
+ return signal?.aborted === true && (isAbortError(error) || error === signal.reason);
493
+ }
491
494
  function isAbortError(error) {
492
495
  return error instanceof Error && error.name === "AbortError";
493
496
  }
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { createFailedReceipt, parseRetryAfter } from "@upyo/core";
1
+ import { combineSignals, createFailedReceipt, parseRetryAfter } from "@upyo/core";
2
2
 
3
3
  //#region src/config.ts
4
4
  /**
@@ -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
- let signal = controller.signal;
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,8 @@ 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
199
  }
200
200
  function truncateErrorBody(text) {
201
201
  return text.length > 500 ? `${text.slice(0, 500)}...` : text;
@@ -386,7 +386,7 @@ var MailgunTransport = class {
386
386
  provider: "mailgun"
387
387
  };
388
388
  } catch (error) {
389
- if (isAbortError(error) && options?.signal?.aborted) throw error;
389
+ if (isCallerAbort(error, options?.signal)) throw error;
390
390
  const errorMessage = error instanceof Error ? error.message : String(error);
391
391
  return createMailgunFailure(errorMessage, error);
392
392
  }
@@ -465,6 +465,9 @@ function createMailgunFailure(message, error) {
465
465
  });
466
466
  return createFailedReceipt(message, { provider: "mailgun" });
467
467
  }
468
+ function isCallerAbort(error, signal) {
469
+ return signal?.aborted === true && (isAbortError(error) || error === signal.reason);
470
+ }
468
471
  function isAbortError(error) {
469
472
  return error instanceof Error && error.name === "AbortError";
470
473
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@upyo/mailgun",
3
- "version": "0.5.0-dev.164",
3
+ "version": "0.5.0-dev.170",
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.164+5e283c64"
56
+ "@upyo/core": "0.5.0-dev.170+643994fd"
57
57
  },
58
58
  "devDependencies": {
59
59
  "tsdown": "^0.12.7",