@teleporthq/teleport-plugin-next-workflows 0.44.9 → 0.44.10

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.
Files changed (65) hide show
  1. package/__tests__/ai-error-contract.test.ts +10 -0
  2. package/__tests__/continue-on-error.test.ts +27 -0
  3. package/__tests__/email-node-recipients.test.ts +288 -0
  4. package/__tests__/sent-email-log-module.test.ts +54 -0
  5. package/dist/cjs/executor-generator.d.ts.map +1 -1
  6. package/dist/cjs/executor-generator.js +4 -1
  7. package/dist/cjs/executor-generator.js.map +1 -1
  8. package/dist/cjs/nodes/email/email-mailersend.d.ts.map +1 -1
  9. package/dist/cjs/nodes/email/email-mailersend.js +55 -48
  10. package/dist/cjs/nodes/email/email-mailersend.js.map +1 -1
  11. package/dist/cjs/nodes/email/email-mailgun.d.ts.map +1 -1
  12. package/dist/cjs/nodes/email/email-mailgun.js +44 -32
  13. package/dist/cjs/nodes/email/email-mailgun.js.map +1 -1
  14. package/dist/cjs/nodes/email/email-postmark.d.ts.map +1 -1
  15. package/dist/cjs/nodes/email/email-postmark.js +44 -31
  16. package/dist/cjs/nodes/email/email-postmark.js.map +1 -1
  17. package/dist/cjs/nodes/email/email-recipients.d.ts +28 -0
  18. package/dist/cjs/nodes/email/email-recipients.d.ts.map +1 -0
  19. package/dist/cjs/nodes/email/email-recipients.js +74 -0
  20. package/dist/cjs/nodes/email/email-recipients.js.map +1 -0
  21. package/dist/cjs/nodes/email/email-resend.d.ts.map +1 -1
  22. package/dist/cjs/nodes/email/email-resend.js +42 -28
  23. package/dist/cjs/nodes/email/email-resend.js.map +1 -1
  24. package/dist/cjs/nodes/email/email-sendgrid.d.ts.map +1 -1
  25. package/dist/cjs/nodes/email/email-sendgrid.js +56 -41
  26. package/dist/cjs/nodes/email/email-sendgrid.js.map +1 -1
  27. package/dist/cjs/sent-email-log/sent-email-log-code.d.ts.map +1 -1
  28. package/dist/cjs/sent-email-log/sent-email-log-code.js +17 -1
  29. package/dist/cjs/sent-email-log/sent-email-log-code.js.map +1 -1
  30. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  31. package/dist/esm/executor-generator.d.ts.map +1 -1
  32. package/dist/esm/executor-generator.js +4 -1
  33. package/dist/esm/executor-generator.js.map +1 -1
  34. package/dist/esm/nodes/email/email-mailersend.d.ts.map +1 -1
  35. package/dist/esm/nodes/email/email-mailersend.js +55 -48
  36. package/dist/esm/nodes/email/email-mailersend.js.map +1 -1
  37. package/dist/esm/nodes/email/email-mailgun.d.ts.map +1 -1
  38. package/dist/esm/nodes/email/email-mailgun.js +44 -32
  39. package/dist/esm/nodes/email/email-mailgun.js.map +1 -1
  40. package/dist/esm/nodes/email/email-postmark.d.ts.map +1 -1
  41. package/dist/esm/nodes/email/email-postmark.js +44 -31
  42. package/dist/esm/nodes/email/email-postmark.js.map +1 -1
  43. package/dist/esm/nodes/email/email-recipients.d.ts +28 -0
  44. package/dist/esm/nodes/email/email-recipients.d.ts.map +1 -0
  45. package/dist/esm/nodes/email/email-recipients.js +71 -0
  46. package/dist/esm/nodes/email/email-recipients.js.map +1 -0
  47. package/dist/esm/nodes/email/email-resend.d.ts.map +1 -1
  48. package/dist/esm/nodes/email/email-resend.js +42 -28
  49. package/dist/esm/nodes/email/email-resend.js.map +1 -1
  50. package/dist/esm/nodes/email/email-sendgrid.d.ts.map +1 -1
  51. package/dist/esm/nodes/email/email-sendgrid.js +56 -41
  52. package/dist/esm/nodes/email/email-sendgrid.js.map +1 -1
  53. package/dist/esm/sent-email-log/sent-email-log-code.d.ts.map +1 -1
  54. package/dist/esm/sent-email-log/sent-email-log-code.js +17 -1
  55. package/dist/esm/sent-email-log/sent-email-log-code.js.map +1 -1
  56. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  57. package/package.json +2 -2
  58. package/src/executor-generator.ts +4 -1
  59. package/src/nodes/email/email-mailersend.ts +72 -55
  60. package/src/nodes/email/email-mailgun.ts +51 -36
  61. package/src/nodes/email/email-postmark.ts +51 -35
  62. package/src/nodes/email/email-recipients.ts +86 -0
  63. package/src/nodes/email/email-resend.ts +49 -31
  64. package/src/nodes/email/email-sendgrid.ts +63 -44
  65. package/src/sent-email-log/sent-email-log-code.ts +17 -1
@@ -1,46 +1,56 @@
1
1
  import { EmailSender } from '@teleporthq/teleport-shared';
2
2
  import { handlerToString } from '../types';
3
3
  import { assertHandlerHasNoModuleRefs } from '../analytics/commerce-tracking';
4
+ import { EMAIL_RECIPIENTS_HELPER_SOURCE } from './email-recipients';
4
5
  async function email_resend(config, context) {
5
6
  const apiKey = config.apiKey;
6
7
  const from = config.from;
7
8
  const fromName = config.fromName;
8
- const to = config.to;
9
9
  const subject = config.subject;
10
10
  const body = config.body;
11
11
  const replyTo = config.replyTo;
12
12
  const cc = config.cc;
13
13
  const bcc = config.bcc;
14
- try {
15
- const __nodeRequire = typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : require;
16
- const Resend = __nodeRequire('resend').Resend;
17
- const resend = new Resend(apiKey);
18
- const payload = {
19
- from: __emailSender({ from, name: fromName }).header,
20
- to: Array.isArray(to) ? to : [to],
21
- subject,
22
- html: body,
23
- };
24
- if (replyTo) {
25
- // Resend SDK input uses the camelCase `replyTo` key (it maps to the
26
- // on-the-wire `reply_to` internally); a snake_case key is silently dropped.
27
- payload.replyTo = replyTo;
14
+ const recipients = __emailRecipients(config.to);
15
+ async function sendTo(to) {
16
+ try {
17
+ const __nodeRequire = typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : require;
18
+ const Resend = __nodeRequire('resend').Resend;
19
+ const resend = new Resend(apiKey);
20
+ const payload = {
21
+ from: __emailSender({ from, name: fromName }).header,
22
+ to: [to],
23
+ subject,
24
+ html: body,
25
+ };
26
+ if (replyTo) {
27
+ // Resend SDK input uses the camelCase `replyTo` key (it maps to the
28
+ // on-the-wire `reply_to` internally); a snake_case key is silently dropped.
29
+ payload.replyTo = replyTo;
30
+ }
31
+ if (cc) {
32
+ payload.cc = Array.isArray(cc) ? cc : [cc];
33
+ }
34
+ if (bcc) {
35
+ payload.bcc = Array.isArray(bcc) ? bcc : [bcc];
36
+ }
37
+ const data = await resend.emails.send(payload);
38
+ if (data.error) {
39
+ return { id: '', success: false, error: data.error.message || 'Failed to send email' };
40
+ }
41
+ return { id: (data.data && data.data.id) || '', success: true };
28
42
  }
29
- if (cc) {
30
- payload.cc = Array.isArray(cc) ? cc : [cc];
43
+ catch (err) {
44
+ return { id: '', success: false, error: err.message };
31
45
  }
32
- if (bcc) {
33
- payload.bcc = Array.isArray(bcc) ? bcc : [bcc];
34
- }
35
- const data = await resend.emails.send(payload);
36
- if (data.error) {
37
- return { id: '', success: false, error: data.error.message || 'Failed to send email' };
38
- }
39
- return { id: (data.data && data.data.id) || '', success: true };
40
46
  }
41
- catch (err) {
42
- return { id: '', success: false, error: err.message };
47
+ if (recipients.length === 0) {
48
+ return { id: '', success: false, error: 'No recipient' };
49
+ }
50
+ if (recipients.length === 1) {
51
+ return sendTo(recipients[0]);
43
52
  }
53
+ return __emailDeliveries({ recipients, send: sendTo, idKey: 'id' });
44
54
  }
45
55
  export const emailResend = {
46
56
  nodeType: 'email-resend',
@@ -49,7 +59,11 @@ export const emailResend = {
49
59
  resend: '^4.0.0',
50
60
  },
51
61
  generateHandler() {
52
- return assertHandlerHasNoModuleRefs(handlerToString(email_resend) + '\n' + EmailSender.generateEmailSenderHelperCode(), 'email-resend');
62
+ return assertHandlerHasNoModuleRefs(handlerToString(email_resend) +
63
+ '\n' +
64
+ EmailSender.generateEmailSenderHelperCode() +
65
+ '\n' +
66
+ EMAIL_RECIPIENTS_HELPER_SOURCE, 'email-resend');
53
67
  },
54
68
  };
55
69
  //# sourceMappingURL=email-resend.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"email-resend.js","sourceRoot":"","sources":["../../../../src/nodes/email/email-resend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"email-resend.js","sourceRoot":"","sources":["../../../../src/nodes/email/email-resend.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"email-sendgrid.d.ts","sourceRoot":"","sources":["../../../../src/nodes/email/email-sendgrid.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAmB,MAAM,UAAU,CAAA;AAkEhE,eAAO,MAAM,aAAa,EAAE,oBAY3B,CAAA"}
1
+ {"version":3,"file":"email-sendgrid.d.ts","sourceRoot":"","sources":["../../../../src/nodes/email/email-sendgrid.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAmB,MAAM,UAAU,CAAA;AAiFhE,eAAO,MAAM,aAAa,EAAE,oBAgB3B,CAAA"}
@@ -1,59 +1,70 @@
1
1
  import { EmailSender } from '@teleporthq/teleport-shared';
2
2
  import { handlerToString } from '../types';
3
3
  import { assertHandlerHasNoModuleRefs } from '../analytics/commerce-tracking';
4
+ import { EMAIL_RECIPIENTS_HELPER_SOURCE } from './email-recipients';
4
5
  async function email_sendgrid(config, context) {
5
6
  const apiKey = config.apiKey;
6
7
  const from = config.from;
7
8
  const fromName = config.fromName;
8
- const to = config.to;
9
9
  const subject = config.subject;
10
10
  const body = config.body;
11
11
  const replyTo = config.replyTo;
12
12
  const cc = config.cc;
13
13
  const bcc = config.bcc;
14
- try {
15
- const __nodeRequire = typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : require;
16
- const MailService = __nodeRequire('@sendgrid/mail').MailService;
17
- const sgMail = new MailService();
18
- sgMail.setApiKey(apiKey);
19
- // SendGrid reads a "Name <email>" string's name verbatim, quotes included,
20
- // so a named sender goes as its two parts.
21
- const sender = __emailSender({ from, name: fromName });
22
- const msg = {
23
- to: Array.isArray(to) ? to : [to],
24
- from: sender.name ? { email: sender.email, name: sender.name } : sender.email,
25
- subject,
26
- html: body,
27
- };
28
- if (replyTo) {
29
- msg.replyTo = replyTo;
14
+ const recipients = __emailRecipients(config.to);
15
+ async function sendTo(to) {
16
+ try {
17
+ const __nodeRequire = typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : require;
18
+ const MailService = __nodeRequire('@sendgrid/mail').MailService;
19
+ const sgMail = new MailService();
20
+ sgMail.setApiKey(apiKey);
21
+ // SendGrid reads a "Name <email>" string's name verbatim, quotes included,
22
+ // so a named sender goes as its two parts.
23
+ const sender = __emailSender({ from, name: fromName });
24
+ const msg = {
25
+ to: [to],
26
+ from: sender.name ? { email: sender.email, name: sender.name } : sender.email,
27
+ subject,
28
+ html: body,
29
+ };
30
+ if (replyTo) {
31
+ msg.replyTo = replyTo;
32
+ }
33
+ if (cc) {
34
+ msg.cc = Array.isArray(cc) ? cc : [cc];
35
+ }
36
+ if (bcc) {
37
+ msg.bcc = Array.isArray(bcc) ? bcc : [bcc];
38
+ }
39
+ const response = await sgMail.send(msg);
40
+ const statusCode = response && response[0] && response[0].statusCode;
41
+ const messageId = (response && response[0] && response[0].headers && response[0].headers['x-message-id']) ||
42
+ '';
43
+ return { messageId, success: statusCode === 202 || statusCode === 200 };
30
44
  }
31
- if (cc) {
32
- msg.cc = Array.isArray(cc) ? cc : [cc];
45
+ catch (err) {
46
+ const error = err;
47
+ let message = 'Failed to send email';
48
+ if (error.response && error.response.body && error.response.body.errors) {
49
+ message = error.response.body.errors
50
+ .map(function (e) {
51
+ return e.message;
52
+ })
53
+ .join(', ');
54
+ }
55
+ else if (error.message) {
56
+ message = error.message;
57
+ }
58
+ return { messageId: '', success: false, error: message };
33
59
  }
34
- if (bcc) {
35
- msg.bcc = Array.isArray(bcc) ? bcc : [bcc];
36
- }
37
- const response = await sgMail.send(msg);
38
- const statusCode = response && response[0] && response[0].statusCode;
39
- const messageId = (response && response[0] && response[0].headers && response[0].headers['x-message-id']) || '';
40
- return { messageId, success: statusCode === 202 || statusCode === 200 };
41
60
  }
42
- catch (err) {
43
- const error = err;
44
- let message = 'Failed to send email';
45
- if (error.response && error.response.body && error.response.body.errors) {
46
- message = error.response.body.errors
47
- .map(function (e) {
48
- return e.message;
49
- })
50
- .join(', ');
51
- }
52
- else if (error.message) {
53
- message = error.message;
54
- }
55
- return { messageId: '', success: false, error: message };
61
+ if (recipients.length === 0) {
62
+ return { messageId: '', success: false, error: 'No recipient' };
63
+ }
64
+ if (recipients.length === 1) {
65
+ return sendTo(recipients[0]);
56
66
  }
67
+ return __emailDeliveries({ recipients, send: sendTo, idKey: 'messageId' });
57
68
  }
58
69
  export const emailSendgrid = {
59
70
  nodeType: 'email-sendgrid',
@@ -62,7 +73,11 @@ export const emailSendgrid = {
62
73
  '@sendgrid/mail': '^8.0.0',
63
74
  },
64
75
  generateHandler() {
65
- return assertHandlerHasNoModuleRefs(handlerToString(email_sendgrid) + '\n' + EmailSender.generateEmailSenderHelperCode(), 'email-sendgrid');
76
+ return assertHandlerHasNoModuleRefs(handlerToString(email_sendgrid) +
77
+ '\n' +
78
+ EmailSender.generateEmailSenderHelperCode() +
79
+ '\n' +
80
+ EMAIL_RECIPIENTS_HELPER_SOURCE, 'email-sendgrid');
66
81
  },
67
82
  };
68
83
  //# sourceMappingURL=email-sendgrid.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"email-sendgrid.js","sourceRoot":"","sources":["../../../../src/nodes/email/email-sendgrid.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"email-sendgrid.js","sourceRoot":"","sources":["../../../../src/nodes/email/email-sendgrid.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sent-email-log-code.d.ts","sourceRoot":"","sources":["../../../src/sent-email-log/sent-email-log-code.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,wBAAwB,YAAa;IAAE,WAAW,EAAE,OAAO,CAAA;CAAE,KAAG,MA+W5E,CAAA"}
1
+ {"version":3,"file":"sent-email-log-code.d.ts","sourceRoot":"","sources":["../../../src/sent-email-log/sent-email-log-code.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,wBAAwB,YAAa;IAAE,WAAW,EAAE,OAAO,CAAA;CAAE,KAAG,MA+X5E,CAAA"}
@@ -346,6 +346,19 @@ function __entryFromNode(nodeType, config, result, error) {
346
346
  };
347
347
  }
348
348
 
349
+ // A node that reached several recipients one provider call each reports a
350
+ // delivery per recipient; the ledger then says who got the email and who was
351
+ // refused, one row per address. Any other result is one row for the node run.
352
+ function __entriesFromNode(nodeType, config, result) {
353
+ var deliveries = result && Array.isArray(result.deliveries) ? result.deliveries : [];
354
+ if (deliveries.length === 0) return [__entryFromNode(nodeType, config, result, null)];
355
+ return deliveries.map(function (delivery) {
356
+ var entry = __entryFromNode(nodeType, config, delivery, null);
357
+ entry.to = delivery.to;
358
+ return entry;
359
+ });
360
+ }
361
+
349
362
  /**
350
363
  * Wraps a server node handler so every send is recorded. The record is
351
364
  * registered on the workflow context's fire-and-forget queue — the same one
@@ -366,7 +379,10 @@ function wrapEmailNodeHandler(nodeType, handler) {
366
379
  __register(context, recordSentEmail(__entryFromNode(nodeType, config, null, err)));
367
380
  throw err;
368
381
  }
369
- __register(context, recordSentEmail(__entryFromNode(nodeType, config, result, null)));
382
+ var entries = __entriesFromNode(nodeType, config, result);
383
+ for (var i = 0; i < entries.length; i++) {
384
+ __register(context, recordSentEmail(entries[i]));
385
+ }
370
386
  return result;
371
387
  };
372
388
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sent-email-log-code.js","sourceRoot":"","sources":["../../../src/sent-email-log/sent-email-log-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;AAE5D;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,OAAiC,EAAU,EAAE;IACpF,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;QACxB,OAAO;;;;;;;;CAQV,CAAA;KACE;IAED,OAAO;;;;;;;;;;;EAWP,wBAAwB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsV3B,CAAA;AACD,CAAC,CAAA"}
1
+ {"version":3,"file":"sent-email-log-code.js","sourceRoot":"","sources":["../../../src/sent-email-log/sent-email-log-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;AAE5D;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,OAAiC,EAAU,EAAE;IACpF,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;QACxB,OAAO;;;;;;;;CAQV,CAAA;KACE;IAED,OAAO;;;;;;;;;;;EAWP,wBAAwB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsW3B,CAAA;AACD,CAAC,CAAA"}