@upyo/maileroo 0.6.0-dev.311 → 0.6.0-dev.314

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
@@ -222,20 +222,20 @@ function parseResponse(text) {
222
222
  function truncateErrorMessage(message) {
223
223
  return message.length > maxErrorMessageLength ? `${message.slice(0, maxErrorMessageLength)}...` : message;
224
224
  }
225
- function abortReason$1(signal) {
225
+ function abortReason(signal) {
226
226
  return signal?.reason ?? new DOMException("The operation was aborted.", "AbortError");
227
227
  }
228
228
  function sleep(ms, signal) {
229
229
  return new Promise((resolve, reject) => {
230
230
  if (signal?.aborted) {
231
- reject(abortReason$1(signal));
231
+ reject(abortReason(signal));
232
232
  return;
233
233
  }
234
234
  const timeoutState = {};
235
235
  const onAbort = () => {
236
236
  if (timeoutState.id !== void 0) clearTimeout(timeoutState.id);
237
237
  signal?.removeEventListener("abort", onAbort);
238
- reject(abortReason$1(signal));
238
+ reject(abortReason(signal));
239
239
  };
240
240
  signal?.addEventListener("abort", onAbort, { once: true });
241
241
  if (signal?.aborted) {
@@ -299,7 +299,16 @@ async function convertMessage(message, config, signal) {
299
299
  if (Object.keys(tags).length > 0) emailData.tags = tags;
300
300
  const headers = convertHeaders(message);
301
301
  if (Object.keys(headers).length > 0) emailData.headers = headers;
302
- if (message.attachments.length > 0) emailData.attachments = await Promise.all(message.attachments.map((attachment) => convertAttachment(attachment, signal)));
302
+ if (message.attachments.length > 0) {
303
+ const cancellation = new AbortController();
304
+ const combined = (0, __upyo_core.combineSignals)(cancellation.signal, signal);
305
+ try {
306
+ emailData.attachments = await Promise.all(message.attachments.map((attachment) => convertAttachment(attachment, combined.signal)));
307
+ } finally {
308
+ cancellation.abort();
309
+ combined.cleanup();
310
+ }
311
+ }
303
312
  signal?.throwIfAborted();
304
313
  return emailData;
305
314
  }
@@ -363,7 +372,7 @@ function convertHeaders(message) {
363
372
  }
364
373
  async function convertAttachment(attachment, signal) {
365
374
  signal?.throwIfAborted();
366
- const content = await waitForAttachmentContent(attachment.content, signal);
375
+ const content = await (0, __upyo_core.readAttachmentContent)(attachment.content, signal);
367
376
  signal?.throwIfAborted();
368
377
  return {
369
378
  file_name: getAttachmentFileName(attachment),
@@ -372,28 +381,6 @@ async function convertAttachment(attachment, signal) {
372
381
  inline: attachment.inline || void 0
373
382
  };
374
383
  }
375
- function waitForAttachmentContent(content, signal) {
376
- if (content instanceof Uint8Array) return signal?.aborted ? Promise.reject(abortReason(signal)) : Promise.resolve(content);
377
- if (signal == null) return content;
378
- if (signal.aborted) return Promise.reject(abortReason(signal));
379
- return new Promise((resolve, reject) => {
380
- const onAbort = () => {
381
- signal.removeEventListener("abort", onAbort);
382
- reject(abortReason(signal));
383
- };
384
- signal.addEventListener("abort", onAbort, { once: true });
385
- Promise.resolve(content).then((value) => {
386
- signal.removeEventListener("abort", onAbort);
387
- resolve(value);
388
- }, (error) => {
389
- signal.removeEventListener("abort", onAbort);
390
- reject(error);
391
- });
392
- });
393
- }
394
- function abortReason(signal) {
395
- return signal.reason ?? new DOMException("The operation was aborted.", "AbortError");
396
- }
397
384
  function getAttachmentFileName(attachment) {
398
385
  return attachment.inline && typeof attachment.contentId === "string" && attachment.contentId !== "" ? attachment.contentId : attachment.filename;
399
386
  }
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { combineSignals, createFailedReceipt, parseRetryAfter } from "@upyo/core";
1
+ import { combineSignals, createFailedReceipt, parseRetryAfter, readAttachmentContent } from "@upyo/core";
2
2
 
3
3
  //#region src/config.ts
4
4
  /**
@@ -199,20 +199,20 @@ function parseResponse(text) {
199
199
  function truncateErrorMessage(message) {
200
200
  return message.length > maxErrorMessageLength ? `${message.slice(0, maxErrorMessageLength)}...` : message;
201
201
  }
202
- function abortReason$1(signal) {
202
+ function abortReason(signal) {
203
203
  return signal?.reason ?? new DOMException("The operation was aborted.", "AbortError");
204
204
  }
205
205
  function sleep(ms, signal) {
206
206
  return new Promise((resolve, reject) => {
207
207
  if (signal?.aborted) {
208
- reject(abortReason$1(signal));
208
+ reject(abortReason(signal));
209
209
  return;
210
210
  }
211
211
  const timeoutState = {};
212
212
  const onAbort = () => {
213
213
  if (timeoutState.id !== void 0) clearTimeout(timeoutState.id);
214
214
  signal?.removeEventListener("abort", onAbort);
215
- reject(abortReason$1(signal));
215
+ reject(abortReason(signal));
216
216
  };
217
217
  signal?.addEventListener("abort", onAbort, { once: true });
218
218
  if (signal?.aborted) {
@@ -276,7 +276,16 @@ async function convertMessage(message, config, signal) {
276
276
  if (Object.keys(tags).length > 0) emailData.tags = tags;
277
277
  const headers = convertHeaders(message);
278
278
  if (Object.keys(headers).length > 0) emailData.headers = headers;
279
- if (message.attachments.length > 0) emailData.attachments = await Promise.all(message.attachments.map((attachment) => convertAttachment(attachment, signal)));
279
+ if (message.attachments.length > 0) {
280
+ const cancellation = new AbortController();
281
+ const combined = combineSignals(cancellation.signal, signal);
282
+ try {
283
+ emailData.attachments = await Promise.all(message.attachments.map((attachment) => convertAttachment(attachment, combined.signal)));
284
+ } finally {
285
+ cancellation.abort();
286
+ combined.cleanup();
287
+ }
288
+ }
280
289
  signal?.throwIfAborted();
281
290
  return emailData;
282
291
  }
@@ -340,7 +349,7 @@ function convertHeaders(message) {
340
349
  }
341
350
  async function convertAttachment(attachment, signal) {
342
351
  signal?.throwIfAborted();
343
- const content = await waitForAttachmentContent(attachment.content, signal);
352
+ const content = await readAttachmentContent(attachment.content, signal);
344
353
  signal?.throwIfAborted();
345
354
  return {
346
355
  file_name: getAttachmentFileName(attachment),
@@ -349,28 +358,6 @@ async function convertAttachment(attachment, signal) {
349
358
  inline: attachment.inline || void 0
350
359
  };
351
360
  }
352
- function waitForAttachmentContent(content, signal) {
353
- if (content instanceof Uint8Array) return signal?.aborted ? Promise.reject(abortReason(signal)) : Promise.resolve(content);
354
- if (signal == null) return content;
355
- if (signal.aborted) return Promise.reject(abortReason(signal));
356
- return new Promise((resolve, reject) => {
357
- const onAbort = () => {
358
- signal.removeEventListener("abort", onAbort);
359
- reject(abortReason(signal));
360
- };
361
- signal.addEventListener("abort", onAbort, { once: true });
362
- Promise.resolve(content).then((value) => {
363
- signal.removeEventListener("abort", onAbort);
364
- resolve(value);
365
- }, (error) => {
366
- signal.removeEventListener("abort", onAbort);
367
- reject(error);
368
- });
369
- });
370
- }
371
- function abortReason(signal) {
372
- return signal.reason ?? new DOMException("The operation was aborted.", "AbortError");
373
- }
374
361
  function getAttachmentFileName(attachment) {
375
362
  return attachment.inline && typeof attachment.contentId === "string" && attachment.contentId !== "" ? attachment.contentId : attachment.filename;
376
363
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@upyo/maileroo",
3
- "version": "0.6.0-dev.311",
3
+ "version": "0.6.0-dev.314",
4
4
  "description": "Maileroo 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.6.0-dev.311+375af6f4"
56
+ "@upyo/core": "0.6.0-dev.314+70a7c9c7"
57
57
  },
58
58
  "devDependencies": {
59
59
  "tsdown": "^0.12.7",