@upyo/sendgrid 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
@@ -134,17 +134,18 @@ var SendGridHttpClient = class {
134
134
  for (const [key, value] of Object.entries(this.config.headers)) headers.set(key, value);
135
135
  const controller = new AbortController();
136
136
  const timeoutId = setTimeout(() => controller.abort(), this.config.timeout);
137
- const signal = options.signal == null ? controller.signal : AbortSignal.any([controller.signal, options.signal]);
137
+ const combinedSignal = (0, __upyo_core.combineSignals)(controller.signal, options.signal);
138
138
  try {
139
139
  return await globalThis.fetch(url, {
140
140
  ...options,
141
141
  headers,
142
- signal
142
+ signal: combinedSignal.signal
143
143
  });
144
144
  } catch (error) {
145
145
  if (isAbortError$1(error) && controller.signal.aborted && !options.signal?.aborted) throw new Error(`SendGrid API request timed out after ${this.config.timeout} ms.`);
146
146
  throw error;
147
147
  } finally {
148
+ combinedSignal.cleanup();
148
149
  clearTimeout(timeoutId);
149
150
  }
150
151
  }
@@ -204,12 +205,12 @@ function isAbortError$1(error) {
204
205
  return error instanceof Error && error.name === "AbortError";
205
206
  }
206
207
  function sleep(milliseconds, signal) {
207
- if (signal?.aborted) return Promise.reject(createAbortError());
208
+ if (signal?.aborted) return Promise.reject(createAbortError(signal));
208
209
  return new Promise((resolve, reject) => {
209
210
  function abort() {
210
211
  clearTimeout(timeoutId);
211
212
  signal?.removeEventListener("abort", abort);
212
- reject(createAbortError());
213
+ reject(createAbortError(signal));
213
214
  }
214
215
  const timeoutId = setTimeout(() => {
215
216
  signal?.removeEventListener("abort", abort);
@@ -218,8 +219,8 @@ function sleep(milliseconds, signal) {
218
219
  signal?.addEventListener("abort", abort, { once: true });
219
220
  });
220
221
  }
221
- function createAbortError() {
222
- return new DOMException("The operation was aborted.", "AbortError");
222
+ function createAbortError(signal) {
223
+ return signal?.reason ?? new DOMException("The operation was aborted.", "AbortError");
223
224
  }
224
225
 
225
226
  //#endregion
@@ -452,7 +453,7 @@ var SendGridTransport = class {
452
453
  provider: "sendgrid"
453
454
  };
454
455
  } catch (error) {
455
- if (isAbortError(error) && options?.signal?.aborted) throw error;
456
+ if (isCallerAbort(error, options?.signal)) throw error;
456
457
  const errorMessage = error instanceof Error ? error.message : String(error);
457
458
  return createSendGridFailure(errorMessage, error);
458
459
  }
@@ -548,6 +549,9 @@ function createSendGridFailure(message, error) {
548
549
  });
549
550
  return (0, __upyo_core.createFailedReceipt)(message, { provider: "sendgrid" });
550
551
  }
552
+ function isCallerAbort(error, signal) {
553
+ return signal?.aborted === true && (isAbortError(error) || error === signal.reason);
554
+ }
551
555
  function isAbortError(error) {
552
556
  return error instanceof Error && error.name === "AbortError";
553
557
  }
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
  /**
@@ -111,17 +111,18 @@ var SendGridHttpClient = class {
111
111
  for (const [key, value] of Object.entries(this.config.headers)) headers.set(key, value);
112
112
  const controller = new AbortController();
113
113
  const timeoutId = setTimeout(() => controller.abort(), this.config.timeout);
114
- const signal = options.signal == null ? controller.signal : AbortSignal.any([controller.signal, options.signal]);
114
+ const combinedSignal = combineSignals(controller.signal, options.signal);
115
115
  try {
116
116
  return await globalThis.fetch(url, {
117
117
  ...options,
118
118
  headers,
119
- signal
119
+ signal: combinedSignal.signal
120
120
  });
121
121
  } catch (error) {
122
122
  if (isAbortError$1(error) && controller.signal.aborted && !options.signal?.aborted) throw new Error(`SendGrid API request timed out after ${this.config.timeout} ms.`);
123
123
  throw error;
124
124
  } finally {
125
+ combinedSignal.cleanup();
125
126
  clearTimeout(timeoutId);
126
127
  }
127
128
  }
@@ -181,12 +182,12 @@ function isAbortError$1(error) {
181
182
  return error instanceof Error && error.name === "AbortError";
182
183
  }
183
184
  function sleep(milliseconds, signal) {
184
- if (signal?.aborted) return Promise.reject(createAbortError());
185
+ if (signal?.aborted) return Promise.reject(createAbortError(signal));
185
186
  return new Promise((resolve, reject) => {
186
187
  function abort() {
187
188
  clearTimeout(timeoutId);
188
189
  signal?.removeEventListener("abort", abort);
189
- reject(createAbortError());
190
+ reject(createAbortError(signal));
190
191
  }
191
192
  const timeoutId = setTimeout(() => {
192
193
  signal?.removeEventListener("abort", abort);
@@ -195,8 +196,8 @@ function sleep(milliseconds, signal) {
195
196
  signal?.addEventListener("abort", abort, { once: true });
196
197
  });
197
198
  }
198
- function createAbortError() {
199
- return new DOMException("The operation was aborted.", "AbortError");
199
+ function createAbortError(signal) {
200
+ return signal?.reason ?? new DOMException("The operation was aborted.", "AbortError");
200
201
  }
201
202
 
202
203
  //#endregion
@@ -429,7 +430,7 @@ var SendGridTransport = class {
429
430
  provider: "sendgrid"
430
431
  };
431
432
  } catch (error) {
432
- if (isAbortError(error) && options?.signal?.aborted) throw error;
433
+ if (isCallerAbort(error, options?.signal)) throw error;
433
434
  const errorMessage = error instanceof Error ? error.message : String(error);
434
435
  return createSendGridFailure(errorMessage, error);
435
436
  }
@@ -525,6 +526,9 @@ function createSendGridFailure(message, error) {
525
526
  });
526
527
  return createFailedReceipt(message, { provider: "sendgrid" });
527
528
  }
529
+ function isCallerAbort(error, signal) {
530
+ return signal?.aborted === true && (isAbortError(error) || error === signal.reason);
531
+ }
528
532
  function isAbortError(error) {
529
533
  return error instanceof Error && error.name === "AbortError";
530
534
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@upyo/sendgrid",
3
- "version": "0.5.0-dev.164",
3
+ "version": "0.5.0-dev.170",
4
4
  "description": "SendGrid 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",