@teleporthq/teleport-plugin-next-workflows 0.44.8 → 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 (172) hide show
  1. package/__tests__/_helpers/load-server-runtime.ts +6 -2
  2. package/__tests__/_helpers/run-account-delete-route.ts +140 -0
  3. package/__tests__/account-delete-current-password.test.ts +73 -0
  4. package/__tests__/account-delete-password-check.test.ts +113 -0
  5. package/__tests__/account-delete-visitor-details.test.ts +206 -0
  6. package/__tests__/ai-error-contract.test.ts +10 -0
  7. package/__tests__/auth-password-change-ends-sessions.test.ts +178 -0
  8. package/__tests__/continue-on-error.test.ts +27 -0
  9. package/__tests__/data-api-invalid-body.test.ts +110 -0
  10. package/__tests__/data-node-not-awaited.test.ts +7 -6
  11. package/__tests__/email-node-recipients.test.ts +288 -0
  12. package/__tests__/invoice-payment-line.test.ts +68 -0
  13. package/__tests__/invoice-tender.test.ts +116 -0
  14. package/__tests__/pending-work-after-reply.test.ts +294 -0
  15. package/__tests__/runtime-condition-operands.test.ts +86 -0
  16. package/__tests__/sent-email-log-module.test.ts +54 -0
  17. package/__tests__/webhook-delivery-lease.test.ts +68 -6
  18. package/dist/cjs/account-delete-route-generator.d.ts +7 -2
  19. package/dist/cjs/account-delete-route-generator.d.ts.map +1 -1
  20. package/dist/cjs/account-delete-route-generator.js +90 -43
  21. package/dist/cjs/account-delete-route-generator.js.map +1 -1
  22. package/dist/cjs/api-route-generator.d.ts.map +1 -1
  23. package/dist/cjs/api-route-generator.js +12 -13
  24. package/dist/cjs/api-route-generator.js.map +1 -1
  25. package/dist/cjs/auth-generator.d.ts.map +1 -1
  26. package/dist/cjs/auth-generator.js +34 -1
  27. package/dist/cjs/auth-generator.js.map +1 -1
  28. package/dist/cjs/await-result.d.ts +13 -5
  29. package/dist/cjs/await-result.d.ts.map +1 -1
  30. package/dist/cjs/await-result.js +19 -8
  31. package/dist/cjs/await-result.js.map +1 -1
  32. package/dist/cjs/data-api-route-generator.d.ts.map +1 -1
  33. package/dist/cjs/data-api-route-generator.js +9 -1
  34. package/dist/cjs/data-api-route-generator.js.map +1 -1
  35. package/dist/cjs/executor-generator.d.ts.map +1 -1
  36. package/dist/cjs/executor-generator.js +22 -7
  37. package/dist/cjs/executor-generator.js.map +1 -1
  38. package/dist/cjs/invoice/invoice-html-code.d.ts.map +1 -1
  39. package/dist/cjs/invoice/invoice-html-code.js +96 -5
  40. package/dist/cjs/invoice/invoice-html-code.js.map +1 -1
  41. package/dist/cjs/nodes/account/account-delete-current.d.ts.map +1 -1
  42. package/dist/cjs/nodes/account/account-delete-current.js +4 -1
  43. package/dist/cjs/nodes/account/account-delete-current.js.map +1 -1
  44. package/dist/cjs/nodes/email/email-mailersend.d.ts.map +1 -1
  45. package/dist/cjs/nodes/email/email-mailersend.js +55 -48
  46. package/dist/cjs/nodes/email/email-mailersend.js.map +1 -1
  47. package/dist/cjs/nodes/email/email-mailgun.d.ts.map +1 -1
  48. package/dist/cjs/nodes/email/email-mailgun.js +44 -32
  49. package/dist/cjs/nodes/email/email-mailgun.js.map +1 -1
  50. package/dist/cjs/nodes/email/email-postmark.d.ts.map +1 -1
  51. package/dist/cjs/nodes/email/email-postmark.js +44 -31
  52. package/dist/cjs/nodes/email/email-postmark.js.map +1 -1
  53. package/dist/cjs/nodes/email/email-recipients.d.ts +28 -0
  54. package/dist/cjs/nodes/email/email-recipients.d.ts.map +1 -0
  55. package/dist/cjs/nodes/email/email-recipients.js +74 -0
  56. package/dist/cjs/nodes/email/email-recipients.js.map +1 -0
  57. package/dist/cjs/nodes/email/email-resend.d.ts.map +1 -1
  58. package/dist/cjs/nodes/email/email-resend.js +42 -28
  59. package/dist/cjs/nodes/email/email-resend.js.map +1 -1
  60. package/dist/cjs/nodes/email/email-sendgrid.d.ts.map +1 -1
  61. package/dist/cjs/nodes/email/email-sendgrid.js +56 -41
  62. package/dist/cjs/nodes/email/email-sendgrid.js.map +1 -1
  63. package/dist/cjs/sent-email-log/sent-email-log-code.d.ts.map +1 -1
  64. package/dist/cjs/sent-email-log/sent-email-log-code.js +17 -1
  65. package/dist/cjs/sent-email-log/sent-email-log-code.js.map +1 -1
  66. package/dist/cjs/server-runtime-code.d.ts.map +1 -1
  67. package/dist/cjs/server-runtime-code.js +21 -0
  68. package/dist/cjs/server-runtime-code.js.map +1 -1
  69. package/dist/cjs/transactional-email-code.d.ts +7 -0
  70. package/dist/cjs/transactional-email-code.d.ts.map +1 -1
  71. package/dist/cjs/transactional-email-code.js +5 -5
  72. package/dist/cjs/transactional-email-code.js.map +1 -1
  73. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  74. package/dist/cjs/vercel-functions.d.ts +34 -0
  75. package/dist/cjs/vercel-functions.d.ts.map +1 -0
  76. package/dist/cjs/vercel-functions.js +62 -0
  77. package/dist/cjs/vercel-functions.js.map +1 -0
  78. package/dist/cjs/webhook-delivery-lease/webhook-delivery-lease-code.d.ts +6 -0
  79. package/dist/cjs/webhook-delivery-lease/webhook-delivery-lease-code.d.ts.map +1 -1
  80. package/dist/cjs/webhook-delivery-lease/webhook-delivery-lease-code.js +26 -11
  81. package/dist/cjs/webhook-delivery-lease/webhook-delivery-lease-code.js.map +1 -1
  82. package/dist/cjs/workflow-project-plugin.d.ts.map +1 -1
  83. package/dist/cjs/workflow-project-plugin.js +3 -0
  84. package/dist/cjs/workflow-project-plugin.js.map +1 -1
  85. package/dist/esm/account-delete-route-generator.d.ts +7 -2
  86. package/dist/esm/account-delete-route-generator.d.ts.map +1 -1
  87. package/dist/esm/account-delete-route-generator.js +90 -43
  88. package/dist/esm/account-delete-route-generator.js.map +1 -1
  89. package/dist/esm/api-route-generator.d.ts.map +1 -1
  90. package/dist/esm/api-route-generator.js +12 -13
  91. package/dist/esm/api-route-generator.js.map +1 -1
  92. package/dist/esm/auth-generator.d.ts.map +1 -1
  93. package/dist/esm/auth-generator.js +34 -1
  94. package/dist/esm/auth-generator.js.map +1 -1
  95. package/dist/esm/await-result.d.ts +13 -5
  96. package/dist/esm/await-result.d.ts.map +1 -1
  97. package/dist/esm/await-result.js +18 -7
  98. package/dist/esm/await-result.js.map +1 -1
  99. package/dist/esm/data-api-route-generator.d.ts.map +1 -1
  100. package/dist/esm/data-api-route-generator.js +9 -1
  101. package/dist/esm/data-api-route-generator.js.map +1 -1
  102. package/dist/esm/executor-generator.d.ts.map +1 -1
  103. package/dist/esm/executor-generator.js +22 -7
  104. package/dist/esm/executor-generator.js.map +1 -1
  105. package/dist/esm/invoice/invoice-html-code.d.ts.map +1 -1
  106. package/dist/esm/invoice/invoice-html-code.js +96 -5
  107. package/dist/esm/invoice/invoice-html-code.js.map +1 -1
  108. package/dist/esm/nodes/account/account-delete-current.d.ts.map +1 -1
  109. package/dist/esm/nodes/account/account-delete-current.js +4 -1
  110. package/dist/esm/nodes/account/account-delete-current.js.map +1 -1
  111. package/dist/esm/nodes/email/email-mailersend.d.ts.map +1 -1
  112. package/dist/esm/nodes/email/email-mailersend.js +55 -48
  113. package/dist/esm/nodes/email/email-mailersend.js.map +1 -1
  114. package/dist/esm/nodes/email/email-mailgun.d.ts.map +1 -1
  115. package/dist/esm/nodes/email/email-mailgun.js +44 -32
  116. package/dist/esm/nodes/email/email-mailgun.js.map +1 -1
  117. package/dist/esm/nodes/email/email-postmark.d.ts.map +1 -1
  118. package/dist/esm/nodes/email/email-postmark.js +44 -31
  119. package/dist/esm/nodes/email/email-postmark.js.map +1 -1
  120. package/dist/esm/nodes/email/email-recipients.d.ts +28 -0
  121. package/dist/esm/nodes/email/email-recipients.d.ts.map +1 -0
  122. package/dist/esm/nodes/email/email-recipients.js +71 -0
  123. package/dist/esm/nodes/email/email-recipients.js.map +1 -0
  124. package/dist/esm/nodes/email/email-resend.d.ts.map +1 -1
  125. package/dist/esm/nodes/email/email-resend.js +42 -28
  126. package/dist/esm/nodes/email/email-resend.js.map +1 -1
  127. package/dist/esm/nodes/email/email-sendgrid.d.ts.map +1 -1
  128. package/dist/esm/nodes/email/email-sendgrid.js +56 -41
  129. package/dist/esm/nodes/email/email-sendgrid.js.map +1 -1
  130. package/dist/esm/sent-email-log/sent-email-log-code.d.ts.map +1 -1
  131. package/dist/esm/sent-email-log/sent-email-log-code.js +17 -1
  132. package/dist/esm/sent-email-log/sent-email-log-code.js.map +1 -1
  133. package/dist/esm/server-runtime-code.d.ts.map +1 -1
  134. package/dist/esm/server-runtime-code.js +21 -0
  135. package/dist/esm/server-runtime-code.js.map +1 -1
  136. package/dist/esm/transactional-email-code.d.ts +7 -0
  137. package/dist/esm/transactional-email-code.d.ts.map +1 -1
  138. package/dist/esm/transactional-email-code.js +5 -5
  139. package/dist/esm/transactional-email-code.js.map +1 -1
  140. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  141. package/dist/esm/vercel-functions.d.ts +34 -0
  142. package/dist/esm/vercel-functions.d.ts.map +1 -0
  143. package/dist/esm/vercel-functions.js +57 -0
  144. package/dist/esm/vercel-functions.js.map +1 -0
  145. package/dist/esm/webhook-delivery-lease/webhook-delivery-lease-code.d.ts +6 -0
  146. package/dist/esm/webhook-delivery-lease/webhook-delivery-lease-code.d.ts.map +1 -1
  147. package/dist/esm/webhook-delivery-lease/webhook-delivery-lease-code.js +26 -11
  148. package/dist/esm/webhook-delivery-lease/webhook-delivery-lease-code.js.map +1 -1
  149. package/dist/esm/workflow-project-plugin.d.ts.map +1 -1
  150. package/dist/esm/workflow-project-plugin.js +3 -0
  151. package/dist/esm/workflow-project-plugin.js.map +1 -1
  152. package/package.json +2 -2
  153. package/src/account-delete-route-generator.ts +97 -45
  154. package/src/api-route-generator.ts +12 -13
  155. package/src/auth-generator.ts +34 -1
  156. package/src/await-result.ts +19 -7
  157. package/src/data-api-route-generator.ts +9 -1
  158. package/src/executor-generator.ts +22 -7
  159. package/src/invoice/invoice-html-code.ts +96 -5
  160. package/src/nodes/account/account-delete-current.ts +4 -1
  161. package/src/nodes/email/email-mailersend.ts +72 -55
  162. package/src/nodes/email/email-mailgun.ts +51 -36
  163. package/src/nodes/email/email-postmark.ts +51 -35
  164. package/src/nodes/email/email-recipients.ts +86 -0
  165. package/src/nodes/email/email-resend.ts +49 -31
  166. package/src/nodes/email/email-sendgrid.ts +63 -44
  167. package/src/sent-email-log/sent-email-log-code.ts +17 -1
  168. package/src/server-runtime-code.ts +22 -0
  169. package/src/transactional-email-code.ts +12 -5
  170. package/src/vercel-functions.ts +67 -0
  171. package/src/webhook-delivery-lease/webhook-delivery-lease-code.ts +26 -11
  172. package/src/workflow-project-plugin.ts +3 -0
@@ -2,67 +2,74 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.emailMailersend = void 0;
4
4
  const types_1 = require("../types");
5
+ const commerce_tracking_1 = require("../analytics/commerce-tracking");
6
+ const email_recipients_1 = require("./email-recipients");
5
7
  async function email_mailersend(config, context) {
6
8
  const apiKey = config.apiKey;
7
9
  const from = config.from;
8
10
  const fromName = config.fromName || '';
9
- const to = config.to;
10
11
  const subject = config.subject;
11
12
  const body = config.body;
12
13
  const replyTo = config.replyTo;
13
14
  const cc = config.cc;
14
15
  const bcc = config.bcc;
15
- try {
16
- const __nodeRequire = typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : require;
17
- const mailersendPkg = __nodeRequire('mailersend');
18
- const MailerSend = mailersendPkg.MailerSend;
19
- const EmailParams = mailersendPkg.EmailParams;
20
- const Sender = mailersendPkg.Sender;
21
- const Recipient = mailersendPkg.Recipient;
22
- const mailerSend = new MailerSend({ apiKey });
23
- const sentFrom = new Sender(from, fromName);
24
- const toList = Array.isArray(to) ? to : [to];
25
- const recipients = toList.map(function (email) {
26
- if (typeof email === 'object' && email.email) {
27
- return new Recipient(email.email, email.name || '');
16
+ const recipients = __emailRecipients(config.to);
17
+ async function sendTo(to) {
18
+ try {
19
+ const __nodeRequire = typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : require;
20
+ const mailersendPkg = __nodeRequire('mailersend');
21
+ const MailerSend = mailersendPkg.MailerSend;
22
+ const EmailParams = mailersendPkg.EmailParams;
23
+ const Sender = mailersendPkg.Sender;
24
+ const Recipient = mailersendPkg.Recipient;
25
+ const mailerSend = new MailerSend({ apiKey });
26
+ const sentFrom = new Sender(from, fromName);
27
+ const recipient = typeof to === 'object' && to.email
28
+ ? new Recipient(to.email, to.name || '')
29
+ : new Recipient(to, '');
30
+ const emailParams = new EmailParams()
31
+ .setFrom(sentFrom)
32
+ .setTo([recipient])
33
+ .setSubject(subject)
34
+ .setHtml(body);
35
+ if (replyTo) {
36
+ emailParams.setReplyTo(new Sender(replyTo));
28
37
  }
29
- return new Recipient(email, '');
30
- });
31
- const emailParams = new EmailParams()
32
- .setFrom(sentFrom)
33
- .setTo(recipients)
34
- .setSubject(subject)
35
- .setHtml(body);
36
- if (replyTo) {
37
- emailParams.setReplyTo(new Sender(replyTo));
38
- }
39
- if (cc) {
40
- const ccList = Array.isArray(cc) ? cc : [cc];
41
- emailParams.setCc(ccList.map(function (email) {
42
- return new Recipient(typeof email === 'object' ? email.email : email, '');
43
- }));
44
- }
45
- if (bcc) {
46
- const bccList = Array.isArray(bcc) ? bcc : [bcc];
47
- emailParams.setBcc(bccList.map(function (email) {
48
- return new Recipient(typeof email === 'object' ? email.email : email, '');
49
- }));
38
+ if (cc) {
39
+ const ccList = Array.isArray(cc) ? cc : [cc];
40
+ emailParams.setCc(ccList.map(function (email) {
41
+ return new Recipient(typeof email === 'object' ? email.email : email, '');
42
+ }));
43
+ }
44
+ if (bcc) {
45
+ const bccList = Array.isArray(bcc) ? bcc : [bcc];
46
+ emailParams.setBcc(bccList.map(function (email) {
47
+ return new Recipient(typeof email === 'object' ? email.email : email, '');
48
+ }));
49
+ }
50
+ const response = await mailerSend.email.send(emailParams);
51
+ const statusCode = response && response.statusCode;
52
+ if (statusCode === 202 || statusCode === 200) {
53
+ const messageId = (response.headers && response.headers['x-message-id']) || '';
54
+ return { messageId, success: true };
55
+ }
56
+ return {
57
+ messageId: '',
58
+ success: false,
59
+ error: (response.body && response.body.message) || 'Failed to send email',
60
+ };
50
61
  }
51
- const response = await mailerSend.email.send(emailParams);
52
- const statusCode = response && response.statusCode;
53
- if (statusCode === 202 || statusCode === 200) {
54
- const messageId = (response.headers && response.headers['x-message-id']) || '';
55
- return { messageId, success: true };
62
+ catch (err) {
63
+ return { messageId: '', success: false, error: err.message };
56
64
  }
57
- return {
58
- messageId: '',
59
- success: false,
60
- error: (response.body && response.body.message) || 'Failed to send email',
61
- };
62
65
  }
63
- catch (err) {
64
- return { messageId: '', success: false, error: err.message };
66
+ if (recipients.length === 0) {
67
+ return { messageId: '', success: false, error: 'No recipient' };
68
+ }
69
+ if (recipients.length === 1) {
70
+ return sendTo(recipients[0]);
65
71
  }
72
+ return __emailDeliveries({ recipients, send: sendTo, idKey: 'messageId' });
66
73
  }
67
74
  exports.emailMailersend = {
68
75
  nodeType: 'email-mailersend',
@@ -71,7 +78,7 @@ exports.emailMailersend = {
71
78
  mailersend: '^2.0.0',
72
79
  },
73
80
  generateHandler() {
74
- return (0, types_1.handlerToString)(email_mailersend);
81
+ return (0, commerce_tracking_1.assertHandlerHasNoModuleRefs)((0, types_1.handlerToString)(email_mailersend) + '\n' + email_recipients_1.EMAIL_RECIPIENTS_HELPER_SOURCE, 'email-mailersend');
75
82
  },
76
83
  };
77
84
  //# sourceMappingURL=email-mailersend.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"email-mailersend.js","sourceRoot":"","sources":["../../../../src/nodes/email/email-mailersend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"email-mailersend.js","sourceRoot":"","sources":["../../../../src/nodes/email/email-mailersend.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"email-mailgun.d.ts","sourceRoot":"","sources":["../../../../src/nodes/email/email-mailgun.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAmB,MAAM,UAAU,CAAA;AA4DhE,eAAO,MAAM,YAAY,EAAE,oBAa1B,CAAA"}
1
+ {"version":3,"file":"email-mailgun.d.ts","sourceRoot":"","sources":["../../../../src/nodes/email/email-mailgun.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAmB,MAAM,UAAU,CAAA;AAuEhE,eAAO,MAAM,YAAY,EAAE,oBAiB1B,CAAA"}
@@ -4,51 +4,59 @@ exports.emailMailgun = void 0;
4
4
  const teleport_shared_1 = require("@teleporthq/teleport-shared");
5
5
  const types_1 = require("../types");
6
6
  const commerce_tracking_1 = require("../analytics/commerce-tracking");
7
+ const email_recipients_1 = require("./email-recipients");
7
8
  async function email_mailgun(config, context) {
8
9
  const apiKey = config.apiKey;
9
10
  const domain = config.domain;
10
11
  const from = config.from;
11
12
  const fromName = config.fromName || '';
12
- const to = config.to;
13
13
  const subject = config.subject;
14
14
  const body = config.body;
15
15
  const replyTo = config.replyTo;
16
16
  const cc = config.cc;
17
17
  const bcc = config.bcc;
18
- try {
19
- const __nodeRequire = typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : require;
20
- const Mailgun = __nodeRequire('mailgun.js');
21
- const FormData = __nodeRequire('form-data');
22
- const mailgun = new Mailgun(FormData);
23
- const clientOpts = { username: 'api', key: apiKey };
24
- if (config.region === 'eu') {
25
- clientOpts.url = 'https://api.eu.mailgun.net';
18
+ const recipients = __emailRecipients(config.to);
19
+ async function sendTo(to) {
20
+ try {
21
+ const __nodeRequire = typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : require;
22
+ const Mailgun = __nodeRequire('mailgun.js');
23
+ const FormData = __nodeRequire('form-data');
24
+ const mailgun = new Mailgun(FormData);
25
+ const clientOpts = { username: 'api', key: apiKey };
26
+ if (config.region === 'eu') {
27
+ clientOpts.url = 'https://api.eu.mailgun.net';
28
+ }
29
+ const mg = mailgun.client(clientOpts);
30
+ const msgPayload = {
31
+ from: __emailSender({ from, name: fromName }).header,
32
+ to: [to],
33
+ subject,
34
+ html: body,
35
+ };
36
+ if (replyTo) {
37
+ msgPayload['h:Reply-To'] = replyTo;
38
+ }
39
+ if (cc) {
40
+ msgPayload.cc = Array.isArray(cc) ? cc.join(', ') : cc;
41
+ }
42
+ if (bcc) {
43
+ msgPayload.bcc = Array.isArray(bcc) ? bcc.join(', ') : bcc;
44
+ }
45
+ const result = await mg.messages.create(domain, msgPayload);
46
+ return { messageId: result.id || '', success: true };
26
47
  }
27
- const mg = mailgun.client(clientOpts);
28
- const fromField = __emailSender({ from, name: fromName }).header;
29
- const toField = Array.isArray(to) ? to : [to];
30
- const msgPayload = {
31
- from: fromField,
32
- to: toField,
33
- subject,
34
- html: body,
35
- };
36
- if (replyTo) {
37
- msgPayload['h:Reply-To'] = replyTo;
48
+ catch (err) {
49
+ const error = err;
50
+ return { messageId: '', success: false, error: error.message || 'Failed to send email' };
38
51
  }
39
- if (cc) {
40
- msgPayload.cc = Array.isArray(cc) ? cc.join(', ') : cc;
41
- }
42
- if (bcc) {
43
- msgPayload.bcc = Array.isArray(bcc) ? bcc.join(', ') : bcc;
44
- }
45
- const result = await mg.messages.create(domain, msgPayload);
46
- return { messageId: result.id || '', success: true };
47
52
  }
48
- catch (err) {
49
- const error = err;
50
- return { messageId: '', success: false, error: error.message || 'Failed to send email' };
53
+ if (recipients.length === 0) {
54
+ return { messageId: '', success: false, error: 'No recipient' };
55
+ }
56
+ if (recipients.length === 1) {
57
+ return sendTo(recipients[0]);
51
58
  }
59
+ return __emailDeliveries({ recipients, send: sendTo, idKey: 'messageId' });
52
60
  }
53
61
  exports.emailMailgun = {
54
62
  nodeType: 'email-mailgun',
@@ -58,7 +66,11 @@ exports.emailMailgun = {
58
66
  'form-data': '^4.0.0',
59
67
  },
60
68
  generateHandler() {
61
- return (0, commerce_tracking_1.assertHandlerHasNoModuleRefs)((0, types_1.handlerToString)(email_mailgun) + '\n' + teleport_shared_1.EmailSender.generateEmailSenderHelperCode(), 'email-mailgun');
69
+ return (0, commerce_tracking_1.assertHandlerHasNoModuleRefs)((0, types_1.handlerToString)(email_mailgun) +
70
+ '\n' +
71
+ teleport_shared_1.EmailSender.generateEmailSenderHelperCode() +
72
+ '\n' +
73
+ email_recipients_1.EMAIL_RECIPIENTS_HELPER_SOURCE, 'email-mailgun');
62
74
  },
63
75
  };
64
76
  //# sourceMappingURL=email-mailgun.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"email-mailgun.js","sourceRoot":"","sources":["../../../../src/nodes/email/email-mailgun.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"email-mailgun.js","sourceRoot":"","sources":["../../../../src/nodes/email/email-mailgun.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"email-postmark.d.ts","sourceRoot":"","sources":["../../../../src/nodes/email/email-postmark.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAmB,MAAM,UAAU,CAAA;AA2DhE,eAAO,MAAM,aAAa,EAAE,oBAY3B,CAAA"}
1
+ {"version":3,"file":"email-postmark.d.ts","sourceRoot":"","sources":["../../../../src/nodes/email/email-postmark.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAmB,MAAM,UAAU,CAAA;AAuEhE,eAAO,MAAM,aAAa,EAAE,oBAgB3B,CAAA"}
@@ -4,11 +4,11 @@ exports.emailPostmark = void 0;
4
4
  const teleport_shared_1 = require("@teleporthq/teleport-shared");
5
5
  const types_1 = require("../types");
6
6
  const commerce_tracking_1 = require("../analytics/commerce-tracking");
7
+ const email_recipients_1 = require("./email-recipients");
7
8
  async function email_postmark(config, context) {
8
9
  const serverToken = config.serverToken;
9
10
  const from = config.from;
10
11
  const fromName = config.fromName;
11
- const to = config.to;
12
12
  const subject = config.subject;
13
13
  const body = config.body;
14
14
  const replyTo = config.replyTo;
@@ -16,39 +16,48 @@ async function email_postmark(config, context) {
16
16
  const bcc = config.bcc;
17
17
  const tag = config.tag;
18
18
  const trackOpens = config.trackOpens;
19
- try {
20
- const __nodeRequire = typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : require;
21
- const postmark = __nodeRequire('postmark');
22
- const client = new postmark.ServerClient(serverToken);
23
- const toField = Array.isArray(to) ? to.join(', ') : to;
24
- const emailPayload = {
25
- From: __emailSender({ from, name: fromName }).header,
26
- To: toField,
27
- Subject: subject,
28
- HtmlBody: body,
29
- };
30
- if (replyTo) {
31
- emailPayload.ReplyTo = replyTo;
19
+ const recipients = __emailRecipients(config.to);
20
+ async function sendTo(to) {
21
+ try {
22
+ const __nodeRequire = typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : require;
23
+ const postmark = __nodeRequire('postmark');
24
+ const client = new postmark.ServerClient(serverToken);
25
+ const emailPayload = {
26
+ From: __emailSender({ from, name: fromName }).header,
27
+ To: to,
28
+ Subject: subject,
29
+ HtmlBody: body,
30
+ };
31
+ if (replyTo) {
32
+ emailPayload.ReplyTo = replyTo;
33
+ }
34
+ if (cc) {
35
+ emailPayload.Cc = Array.isArray(cc) ? cc.join(', ') : cc;
36
+ }
37
+ if (bcc) {
38
+ emailPayload.Bcc = Array.isArray(bcc) ? bcc.join(', ') : bcc;
39
+ }
40
+ if (tag) {
41
+ emailPayload.Tag = tag;
42
+ }
43
+ if (trackOpens !== undefined) {
44
+ emailPayload.TrackOpens = trackOpens;
45
+ }
46
+ const result = await client.sendEmail(emailPayload);
47
+ return { messageId: result.MessageID || '', success: true };
32
48
  }
33
- if (cc) {
34
- emailPayload.Cc = Array.isArray(cc) ? cc.join(', ') : cc;
49
+ catch (err) {
50
+ const error = err;
51
+ return { messageId: '', success: false, error: error.message || 'Failed to send email' };
35
52
  }
36
- if (bcc) {
37
- emailPayload.Bcc = Array.isArray(bcc) ? bcc.join(', ') : bcc;
38
- }
39
- if (tag) {
40
- emailPayload.Tag = tag;
41
- }
42
- if (trackOpens !== undefined) {
43
- emailPayload.TrackOpens = trackOpens;
44
- }
45
- const result = await client.sendEmail(emailPayload);
46
- return { messageId: result.MessageID || '', success: true };
47
53
  }
48
- catch (err) {
49
- const error = err;
50
- return { messageId: '', success: false, error: error.message || 'Failed to send email' };
54
+ if (recipients.length === 0) {
55
+ return { messageId: '', success: false, error: 'No recipient' };
56
+ }
57
+ if (recipients.length === 1) {
58
+ return sendTo(recipients[0]);
51
59
  }
60
+ return __emailDeliveries({ recipients, send: sendTo, idKey: 'messageId' });
52
61
  }
53
62
  exports.emailPostmark = {
54
63
  nodeType: 'email-postmark',
@@ -57,7 +66,11 @@ exports.emailPostmark = {
57
66
  postmark: '^4.0.0',
58
67
  },
59
68
  generateHandler() {
60
- return (0, commerce_tracking_1.assertHandlerHasNoModuleRefs)((0, types_1.handlerToString)(email_postmark) + '\n' + teleport_shared_1.EmailSender.generateEmailSenderHelperCode(), 'email-postmark');
69
+ return (0, commerce_tracking_1.assertHandlerHasNoModuleRefs)((0, types_1.handlerToString)(email_postmark) +
70
+ '\n' +
71
+ teleport_shared_1.EmailSender.generateEmailSenderHelperCode() +
72
+ '\n' +
73
+ email_recipients_1.EMAIL_RECIPIENTS_HELPER_SOURCE, 'email-postmark');
61
74
  },
62
75
  };
63
76
  //# sourceMappingURL=email-postmark.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"email-postmark.js","sourceRoot":"","sources":["../../../../src/nodes/email/email-postmark.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"email-postmark.js","sourceRoot":"","sources":["../../../../src/nodes/email/email-postmark.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * How a workflow email node reaches SEVERAL recipients: one provider call per
3
+ * address, so one refused address (a sender that only delivers to the account
4
+ * owner, a provider account still pending approval) never blocks the others,
5
+ * and the sent-email ledger can say exactly who got the email.
6
+ *
7
+ * Appended to the five `email-*` handlers the way `__emailSender` is: a
8
+ * serialized handler has no module scope, so each declares these ambiently
9
+ * and `generateHandler` concatenates this source. A STRING LITERAL with
10
+ * ONE-parameter functions, for the reasons `commerce-tracking.ts` gives (a
11
+ * consumer's minifier inlines a single-use `.toString()`, and
12
+ * `resolveHandlerEntryName` picks a minified entry point by its 2-param arity).
13
+ */
14
+ export interface EmailDelivery {
15
+ to: string;
16
+ success: boolean;
17
+ id?: string;
18
+ messageId?: string;
19
+ error?: string;
20
+ }
21
+ export interface EmailDeliveriesPlan {
22
+ recipients: unknown[];
23
+ send: (recipient: unknown) => Promise<unknown>;
24
+ /** The key the handler reports the provider's message id under. */
25
+ idKey: 'id' | 'messageId';
26
+ }
27
+ export declare const EMAIL_RECIPIENTS_HELPER_SOURCE = "\n// The address of one recipient entry: a string, or MailerSend's { email, name }.\nfunction __emailAddressOf(entry) {\n if (typeof entry === 'string') return entry.trim();\n if (entry && typeof entry === 'object' && typeof entry.email === 'string') return entry.email.trim();\n return '';\n}\n\n// A node's `to` as a list with no empty entries and no address twice\n// (case-insensitive); each entry keeps the shape it arrived in.\nfunction __emailRecipients(to) {\n var entries = Array.isArray(to) ? to : [to];\n var seen = {};\n var recipients = [];\n for (var i = 0; i < entries.length; i++) {\n var key = __emailAddressOf(entries[i]).toLowerCase();\n if (!key || seen[key]) continue;\n seen[key] = true;\n recipients.push(entries[i]);\n }\n return recipients;\n}\n\n// Sends to each recipient in turn through plan.send (one recipient per call)\n// and reports the whole: the first delivered id, success when at least one\n// was delivered, the refused addresses with their reasons, and one delivery\n// per recipient.\nasync function __emailDeliveries(plan) {\n var deliveries = [];\n for (var i = 0; i < plan.recipients.length; i++) {\n var recipient = plan.recipients[i];\n var outcome;\n try {\n outcome = await plan.send(recipient);\n } catch (err) {\n outcome = { success: false, error: (err && err.message) || String(err) };\n }\n var delivery = { to: __emailAddressOf(recipient), success: outcome.success === true };\n if (delivery.success) {\n delivery[plan.idKey] = outcome[plan.idKey] || '';\n } else {\n delivery.error = outcome.error || 'Failed to send email';\n }\n deliveries.push(delivery);\n }\n var delivered = deliveries.filter(function (d) { return d.success; });\n var refused = deliveries.filter(function (d) { return !d.success; });\n var result = {};\n result[plan.idKey] = delivered.length ? delivered[0][plan.idKey] : '';\n result.success = delivered.length > 0;\n if (refused.length) {\n result.error = 'refused for ' + refused.map(function (d) { return d.to + ' (' + d.error + ')'; }).join('; ');\n }\n result.deliveries = deliveries;\n return result;\n}\n";
28
+ //# sourceMappingURL=email-recipients.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-recipients.d.ts","sourceRoot":"","sources":["../../../../src/nodes/email/email-recipients.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,OAAO,CAAA;IAChB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,OAAO,EAAE,CAAA;IACrB,IAAI,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAC9C,mEAAmE;IACnE,KAAK,EAAE,IAAI,GAAG,WAAW,CAAA;CAC1B;AAED,eAAO,MAAM,8BAA8B,ooEAwD1C,CAAA"}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ /**
3
+ * How a workflow email node reaches SEVERAL recipients: one provider call per
4
+ * address, so one refused address (a sender that only delivers to the account
5
+ * owner, a provider account still pending approval) never blocks the others,
6
+ * and the sent-email ledger can say exactly who got the email.
7
+ *
8
+ * Appended to the five `email-*` handlers the way `__emailSender` is: a
9
+ * serialized handler has no module scope, so each declares these ambiently
10
+ * and `generateHandler` concatenates this source. A STRING LITERAL with
11
+ * ONE-parameter functions, for the reasons `commerce-tracking.ts` gives (a
12
+ * consumer's minifier inlines a single-use `.toString()`, and
13
+ * `resolveHandlerEntryName` picks a minified entry point by its 2-param arity).
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.EMAIL_RECIPIENTS_HELPER_SOURCE = void 0;
17
+ exports.EMAIL_RECIPIENTS_HELPER_SOURCE = `
18
+ // The address of one recipient entry: a string, or MailerSend's { email, name }.
19
+ function __emailAddressOf(entry) {
20
+ if (typeof entry === 'string') return entry.trim();
21
+ if (entry && typeof entry === 'object' && typeof entry.email === 'string') return entry.email.trim();
22
+ return '';
23
+ }
24
+
25
+ // A node's \`to\` as a list with no empty entries and no address twice
26
+ // (case-insensitive); each entry keeps the shape it arrived in.
27
+ function __emailRecipients(to) {
28
+ var entries = Array.isArray(to) ? to : [to];
29
+ var seen = {};
30
+ var recipients = [];
31
+ for (var i = 0; i < entries.length; i++) {
32
+ var key = __emailAddressOf(entries[i]).toLowerCase();
33
+ if (!key || seen[key]) continue;
34
+ seen[key] = true;
35
+ recipients.push(entries[i]);
36
+ }
37
+ return recipients;
38
+ }
39
+
40
+ // Sends to each recipient in turn through plan.send (one recipient per call)
41
+ // and reports the whole: the first delivered id, success when at least one
42
+ // was delivered, the refused addresses with their reasons, and one delivery
43
+ // per recipient.
44
+ async function __emailDeliveries(plan) {
45
+ var deliveries = [];
46
+ for (var i = 0; i < plan.recipients.length; i++) {
47
+ var recipient = plan.recipients[i];
48
+ var outcome;
49
+ try {
50
+ outcome = await plan.send(recipient);
51
+ } catch (err) {
52
+ outcome = { success: false, error: (err && err.message) || String(err) };
53
+ }
54
+ var delivery = { to: __emailAddressOf(recipient), success: outcome.success === true };
55
+ if (delivery.success) {
56
+ delivery[plan.idKey] = outcome[plan.idKey] || '';
57
+ } else {
58
+ delivery.error = outcome.error || 'Failed to send email';
59
+ }
60
+ deliveries.push(delivery);
61
+ }
62
+ var delivered = deliveries.filter(function (d) { return d.success; });
63
+ var refused = deliveries.filter(function (d) { return !d.success; });
64
+ var result = {};
65
+ result[plan.idKey] = delivered.length ? delivered[0][plan.idKey] : '';
66
+ result.success = delivered.length > 0;
67
+ if (refused.length) {
68
+ result.error = 'refused for ' + refused.map(function (d) { return d.to + ' (' + d.error + ')'; }).join('; ');
69
+ }
70
+ result.deliveries = deliveries;
71
+ return result;
72
+ }
73
+ `;
74
+ //# sourceMappingURL=email-recipients.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-recipients.js","sourceRoot":"","sources":["../../../../src/nodes/email/email-recipients.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;AAiBU,QAAA,8BAA8B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwD7C,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"email-resend.d.ts","sourceRoot":"","sources":["../../../../src/nodes/email/email-resend.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAmB,MAAM,UAAU,CAAA;AAsDhE,eAAO,MAAM,WAAW,EAAE,oBAYzB,CAAA"}
1
+ {"version":3,"file":"email-resend.d.ts","sourceRoot":"","sources":["../../../../src/nodes/email/email-resend.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAmB,MAAM,UAAU,CAAA;AAoEhE,eAAO,MAAM,WAAW,EAAE,oBAgBzB,CAAA"}
@@ -4,46 +4,56 @@ exports.emailResend = void 0;
4
4
  const teleport_shared_1 = require("@teleporthq/teleport-shared");
5
5
  const types_1 = require("../types");
6
6
  const commerce_tracking_1 = require("../analytics/commerce-tracking");
7
+ const email_recipients_1 = require("./email-recipients");
7
8
  async function email_resend(config, context) {
8
9
  const apiKey = config.apiKey;
9
10
  const from = config.from;
10
11
  const fromName = config.fromName;
11
- const to = config.to;
12
12
  const subject = config.subject;
13
13
  const body = config.body;
14
14
  const replyTo = config.replyTo;
15
15
  const cc = config.cc;
16
16
  const bcc = config.bcc;
17
- try {
18
- const __nodeRequire = typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : require;
19
- const Resend = __nodeRequire('resend').Resend;
20
- const resend = new Resend(apiKey);
21
- const payload = {
22
- from: __emailSender({ from, name: fromName }).header,
23
- to: Array.isArray(to) ? to : [to],
24
- subject,
25
- html: body,
26
- };
27
- if (replyTo) {
28
- // Resend SDK input uses the camelCase `replyTo` key (it maps to the
29
- // on-the-wire `reply_to` internally); a snake_case key is silently dropped.
30
- payload.replyTo = replyTo;
17
+ const recipients = __emailRecipients(config.to);
18
+ async function sendTo(to) {
19
+ try {
20
+ const __nodeRequire = typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : require;
21
+ const Resend = __nodeRequire('resend').Resend;
22
+ const resend = new Resend(apiKey);
23
+ const payload = {
24
+ from: __emailSender({ from, name: fromName }).header,
25
+ to: [to],
26
+ subject,
27
+ html: body,
28
+ };
29
+ if (replyTo) {
30
+ // Resend SDK input uses the camelCase `replyTo` key (it maps to the
31
+ // on-the-wire `reply_to` internally); a snake_case key is silently dropped.
32
+ payload.replyTo = replyTo;
33
+ }
34
+ if (cc) {
35
+ payload.cc = Array.isArray(cc) ? cc : [cc];
36
+ }
37
+ if (bcc) {
38
+ payload.bcc = Array.isArray(bcc) ? bcc : [bcc];
39
+ }
40
+ const data = await resend.emails.send(payload);
41
+ if (data.error) {
42
+ return { id: '', success: false, error: data.error.message || 'Failed to send email' };
43
+ }
44
+ return { id: (data.data && data.data.id) || '', success: true };
31
45
  }
32
- if (cc) {
33
- payload.cc = Array.isArray(cc) ? cc : [cc];
46
+ catch (err) {
47
+ return { id: '', success: false, error: err.message };
34
48
  }
35
- if (bcc) {
36
- payload.bcc = Array.isArray(bcc) ? bcc : [bcc];
37
- }
38
- const data = await resend.emails.send(payload);
39
- if (data.error) {
40
- return { id: '', success: false, error: data.error.message || 'Failed to send email' };
41
- }
42
- return { id: (data.data && data.data.id) || '', success: true };
43
49
  }
44
- catch (err) {
45
- return { id: '', success: false, error: err.message };
50
+ if (recipients.length === 0) {
51
+ return { id: '', success: false, error: 'No recipient' };
52
+ }
53
+ if (recipients.length === 1) {
54
+ return sendTo(recipients[0]);
46
55
  }
56
+ return __emailDeliveries({ recipients, send: sendTo, idKey: 'id' });
47
57
  }
48
58
  exports.emailResend = {
49
59
  nodeType: 'email-resend',
@@ -52,7 +62,11 @@ exports.emailResend = {
52
62
  resend: '^4.0.0',
53
63
  },
54
64
  generateHandler() {
55
- return (0, commerce_tracking_1.assertHandlerHasNoModuleRefs)((0, types_1.handlerToString)(email_resend) + '\n' + teleport_shared_1.EmailSender.generateEmailSenderHelperCode(), 'email-resend');
65
+ return (0, commerce_tracking_1.assertHandlerHasNoModuleRefs)((0, types_1.handlerToString)(email_resend) +
66
+ '\n' +
67
+ teleport_shared_1.EmailSender.generateEmailSenderHelperCode() +
68
+ '\n' +
69
+ email_recipients_1.EMAIL_RECIPIENTS_HELPER_SOURCE, 'email-resend');
56
70
  },
57
71
  };
58
72
  //# sourceMappingURL=email-resend.js.map