@nocobase/plugin-workflow-mailer 2.3.0-beta.13 → 2.3.0-beta.15

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 (173) hide show
  1. package/dist/externalVersion.js +6 -6
  2. package/dist/node_modules/joi/package.json +1 -1
  3. package/dist/node_modules/nodemailer/dist/cjs/addressparser/index.d.ts +59 -0
  4. package/dist/node_modules/nodemailer/dist/cjs/addressparser/index.js +790 -0
  5. package/dist/node_modules/nodemailer/dist/cjs/base64/index.d.ts +36 -0
  6. package/dist/node_modules/nodemailer/dist/cjs/base64/index.js +119 -0
  7. package/dist/node_modules/nodemailer/dist/cjs/dkim/index.d.ts +52 -0
  8. package/dist/node_modules/nodemailer/dist/cjs/dkim/index.js +228 -0
  9. package/dist/node_modules/nodemailer/dist/cjs/dkim/message-parser.d.ts +48 -0
  10. package/dist/node_modules/nodemailer/dist/cjs/dkim/message-parser.js +180 -0
  11. package/dist/node_modules/nodemailer/dist/cjs/dkim/relaxed-body.d.ts +36 -0
  12. package/dist/node_modules/nodemailer/dist/cjs/dkim/relaxed-body.js +148 -0
  13. package/dist/node_modules/nodemailer/dist/cjs/dkim/sign.d.ts +52 -0
  14. package/dist/node_modules/nodemailer/dist/cjs/dkim/sign.js +165 -0
  15. package/dist/node_modules/nodemailer/dist/cjs/errors.d.ts +96 -0
  16. package/dist/node_modules/nodemailer/dist/cjs/errors.js +70 -0
  17. package/dist/node_modules/nodemailer/dist/cjs/fetch/cookies.d.ts +107 -0
  18. package/dist/node_modules/nodemailer/dist/cjs/fetch/cookies.js +282 -0
  19. package/dist/node_modules/nodemailer/dist/cjs/fetch/index.d.ts +65 -0
  20. package/dist/node_modules/nodemailer/dist/cjs/fetch/index.js +384 -0
  21. package/dist/node_modules/nodemailer/dist/cjs/json-transport/index.d.ts +64 -0
  22. package/dist/node_modules/nodemailer/dist/cjs/json-transport/index.js +99 -0
  23. package/dist/node_modules/nodemailer/dist/cjs/mail-composer/index.d.ts +174 -0
  24. package/dist/node_modules/nodemailer/dist/cjs/mail-composer/index.js +613 -0
  25. package/dist/node_modules/nodemailer/dist/cjs/mailer/index.d.ts +237 -0
  26. package/dist/node_modules/nodemailer/dist/cjs/mailer/index.js +415 -0
  27. package/dist/node_modules/nodemailer/dist/cjs/mailer/mail-message.d.ts +97 -0
  28. package/dist/node_modules/nodemailer/dist/cjs/mailer/mail-message.js +342 -0
  29. package/dist/node_modules/nodemailer/dist/cjs/mime-funcs/index.d.ts +161 -0
  30. package/dist/node_modules/nodemailer/dist/cjs/mime-funcs/index.js +787 -0
  31. package/dist/node_modules/nodemailer/dist/cjs/mime-funcs/mime-types.d.ts +2 -0
  32. package/dist/node_modules/nodemailer/dist/cjs/mime-funcs/mime-types.js +2103 -0
  33. package/dist/node_modules/nodemailer/dist/cjs/mime-node/index.d.ts +333 -0
  34. package/dist/node_modules/nodemailer/dist/cjs/mime-node/index.js +1493 -0
  35. package/dist/node_modules/nodemailer/dist/cjs/mime-node/last-newline.d.ts +5 -0
  36. package/dist/node_modules/nodemailer/dist/cjs/mime-node/last-newline.js +32 -0
  37. package/dist/node_modules/nodemailer/dist/cjs/mime-node/le-unix.d.ts +9 -0
  38. package/dist/node_modules/nodemailer/dist/cjs/mime-node/le-unix.js +40 -0
  39. package/dist/node_modules/nodemailer/dist/cjs/mime-node/le-windows.d.ts +10 -0
  40. package/dist/node_modules/nodemailer/dist/cjs/mime-node/le-windows.js +47 -0
  41. package/dist/node_modules/nodemailer/dist/cjs/nodemailer.d.ts +124 -0
  42. package/dist/node_modules/nodemailer/dist/cjs/nodemailer.js +1 -0
  43. package/dist/node_modules/nodemailer/dist/cjs/package-info.d.ts +3 -0
  44. package/dist/node_modules/nodemailer/dist/cjs/package-info.js +7 -0
  45. package/dist/node_modules/nodemailer/dist/cjs/package.json +3 -0
  46. package/dist/node_modules/nodemailer/dist/cjs/punycode/index.d.ts +73 -0
  47. package/dist/node_modules/nodemailer/{lib → dist/cjs}/punycode/index.js +62 -111
  48. package/dist/node_modules/nodemailer/dist/cjs/qp/index.d.ts +32 -0
  49. package/dist/node_modules/nodemailer/dist/cjs/qp/index.js +207 -0
  50. package/dist/node_modules/nodemailer/dist/cjs/sendmail-transport/index.d.ts +69 -0
  51. package/dist/node_modules/nodemailer/dist/cjs/sendmail-transport/index.js +210 -0
  52. package/dist/node_modules/nodemailer/dist/cjs/ses-transport/index.d.ts +112 -0
  53. package/dist/node_modules/nodemailer/dist/cjs/ses-transport/index.js +252 -0
  54. package/dist/node_modules/nodemailer/dist/cjs/shared/index.d.ts +260 -0
  55. package/dist/node_modules/nodemailer/dist/cjs/shared/index.js +680 -0
  56. package/dist/node_modules/nodemailer/dist/cjs/shared/objects.d.ts +23 -0
  57. package/dist/node_modules/nodemailer/dist/cjs/shared/objects.js +43 -0
  58. package/dist/node_modules/nodemailer/dist/cjs/shared/url.d.ts +21 -0
  59. package/dist/node_modules/nodemailer/dist/cjs/shared/url.js +255 -0
  60. package/dist/node_modules/nodemailer/dist/cjs/smtp-connection/data-stream.d.ts +15 -0
  61. package/dist/node_modules/nodemailer/dist/cjs/smtp-connection/data-stream.js +108 -0
  62. package/dist/node_modules/nodemailer/dist/cjs/smtp-connection/http-proxy-client.d.ts +47 -0
  63. package/dist/node_modules/nodemailer/dist/cjs/smtp-connection/http-proxy-client.js +189 -0
  64. package/dist/node_modules/nodemailer/dist/cjs/smtp-connection/index.d.ts +416 -0
  65. package/dist/node_modules/nodemailer/dist/cjs/smtp-connection/index.js +1837 -0
  66. package/dist/node_modules/nodemailer/dist/cjs/smtp-pool/index.d.ts +133 -0
  67. package/dist/node_modules/nodemailer/dist/cjs/smtp-pool/index.js +569 -0
  68. package/dist/node_modules/nodemailer/dist/cjs/smtp-pool/pool-resource.d.ts +62 -0
  69. package/dist/node_modules/nodemailer/dist/cjs/smtp-pool/pool-resource.js +257 -0
  70. package/dist/node_modules/nodemailer/dist/cjs/smtp-transport/index.d.ts +156 -0
  71. package/dist/node_modules/nodemailer/dist/cjs/smtp-transport/index.js +371 -0
  72. package/dist/node_modules/nodemailer/dist/cjs/stream-transport/index.d.ts +65 -0
  73. package/dist/node_modules/nodemailer/dist/cjs/stream-transport/index.js +146 -0
  74. package/dist/node_modules/nodemailer/dist/cjs/well-known/index.d.ts +35 -0
  75. package/dist/node_modules/nodemailer/dist/cjs/well-known/index.js +41 -0
  76. package/dist/node_modules/nodemailer/dist/cjs/well-known/services.d.ts +2 -0
  77. package/dist/node_modules/nodemailer/dist/cjs/well-known/services.js +674 -0
  78. package/dist/node_modules/nodemailer/dist/cjs/xoauth2/index.d.ts +201 -0
  79. package/dist/node_modules/nodemailer/dist/cjs/xoauth2/index.js +426 -0
  80. package/dist/node_modules/nodemailer/dist/esm/addressparser/index.d.ts +59 -0
  81. package/dist/node_modules/nodemailer/{lib → dist/esm}/addressparser/index.js +361 -131
  82. package/dist/node_modules/nodemailer/dist/esm/base64/index.d.ts +36 -0
  83. package/dist/node_modules/nodemailer/{lib → dist/esm}/base64/index.js +31 -56
  84. package/dist/node_modules/nodemailer/dist/esm/dkim/index.d.ts +52 -0
  85. package/dist/node_modules/nodemailer/{lib → dist/esm}/dkim/index.js +49 -78
  86. package/dist/node_modules/nodemailer/dist/esm/dkim/message-parser.d.ts +48 -0
  87. package/dist/node_modules/nodemailer/{lib → dist/esm}/dkim/message-parser.js +64 -42
  88. package/dist/node_modules/nodemailer/dist/esm/dkim/relaxed-body.d.ts +36 -0
  89. package/dist/node_modules/nodemailer/dist/esm/dkim/relaxed-body.js +141 -0
  90. package/dist/node_modules/nodemailer/dist/esm/dkim/sign.d.ts +52 -0
  91. package/dist/node_modules/nodemailer/{lib → dist/esm}/dkim/sign.js +50 -46
  92. package/dist/node_modules/nodemailer/dist/esm/errors.d.ts +96 -0
  93. package/dist/node_modules/nodemailer/{lib → dist/esm}/errors.js +26 -18
  94. package/dist/node_modules/nodemailer/dist/esm/fetch/cookies.d.ts +107 -0
  95. package/dist/node_modules/nodemailer/dist/esm/fetch/cookies.js +242 -0
  96. package/dist/node_modules/nodemailer/dist/esm/fetch/index.d.ts +65 -0
  97. package/dist/node_modules/nodemailer/{lib → dist/esm}/fetch/index.js +80 -147
  98. package/dist/node_modules/nodemailer/dist/esm/json-transport/index.d.ts +64 -0
  99. package/dist/node_modules/nodemailer/{lib → dist/esm}/json-transport/index.js +19 -39
  100. package/dist/node_modules/nodemailer/dist/esm/mail-composer/index.d.ts +174 -0
  101. package/dist/node_modules/nodemailer/{lib → dist/esm}/mail-composer/index.js +199 -265
  102. package/dist/node_modules/nodemailer/dist/esm/mailer/index.d.ts +237 -0
  103. package/dist/node_modules/nodemailer/{lib → dist/esm}/mailer/index.js +128 -234
  104. package/dist/node_modules/nodemailer/dist/esm/mailer/mail-message.d.ts +97 -0
  105. package/dist/node_modules/nodemailer/{lib → dist/esm}/mailer/mail-message.js +62 -114
  106. package/dist/node_modules/nodemailer/dist/esm/mime-funcs/index.d.ts +161 -0
  107. package/dist/node_modules/nodemailer/dist/esm/mime-funcs/index.js +738 -0
  108. package/dist/node_modules/nodemailer/dist/esm/mime-funcs/mime-types.d.ts +2 -0
  109. package/dist/node_modules/nodemailer/{lib → dist/esm}/mime-funcs/mime-types.js +29 -42
  110. package/dist/node_modules/nodemailer/dist/esm/mime-node/index.d.ts +333 -0
  111. package/dist/node_modules/nodemailer/{lib → dist/esm}/mime-node/index.js +259 -372
  112. package/dist/node_modules/nodemailer/dist/esm/mime-node/last-newline.d.ts +5 -0
  113. package/dist/node_modules/nodemailer/{lib → dist/esm}/mime-node/last-newline.js +4 -10
  114. package/dist/node_modules/nodemailer/dist/esm/mime-node/le-unix.d.ts +9 -0
  115. package/dist/node_modules/nodemailer/{lib → dist/esm}/mime-node/le-unix.js +6 -11
  116. package/dist/node_modules/nodemailer/dist/esm/mime-node/le-windows.d.ts +10 -0
  117. package/dist/node_modules/nodemailer/{lib → dist/esm}/mime-node/le-windows.js +6 -13
  118. package/dist/node_modules/nodemailer/dist/esm/nodemailer.d.ts +124 -0
  119. package/dist/node_modules/nodemailer/dist/esm/nodemailer.js +166 -0
  120. package/dist/node_modules/nodemailer/dist/esm/package-info.d.ts +3 -0
  121. package/dist/node_modules/nodemailer/dist/esm/package-info.js +4 -0
  122. package/dist/node_modules/nodemailer/dist/esm/package.json +3 -0
  123. package/dist/node_modules/nodemailer/dist/esm/punycode/index.d.ts +73 -0
  124. package/dist/node_modules/nodemailer/dist/esm/punycode/index.js +405 -0
  125. package/dist/node_modules/nodemailer/dist/esm/qp/index.d.ts +32 -0
  126. package/dist/node_modules/nodemailer/{lib → dist/esm}/qp/index.js +38 -67
  127. package/dist/node_modules/nodemailer/dist/esm/sendmail-transport/index.d.ts +69 -0
  128. package/dist/node_modules/nodemailer/{lib → dist/esm}/sendmail-transport/index.js +51 -101
  129. package/dist/node_modules/nodemailer/dist/esm/ses-transport/index.d.ts +112 -0
  130. package/dist/node_modules/nodemailer/dist/esm/ses-transport/index.js +212 -0
  131. package/dist/node_modules/nodemailer/dist/esm/shared/index.d.ts +260 -0
  132. package/dist/node_modules/nodemailer/{lib → dist/esm}/shared/index.js +156 -272
  133. package/dist/node_modules/nodemailer/dist/esm/shared/objects.d.ts +23 -0
  134. package/dist/node_modules/nodemailer/{lib → dist/esm}/shared/objects.js +13 -17
  135. package/dist/node_modules/nodemailer/dist/esm/shared/url.d.ts +21 -0
  136. package/dist/node_modules/nodemailer/dist/esm/shared/url.js +214 -0
  137. package/dist/node_modules/nodemailer/dist/esm/smtp-connection/data-stream.d.ts +15 -0
  138. package/dist/node_modules/nodemailer/dist/esm/smtp-connection/data-stream.js +103 -0
  139. package/dist/node_modules/nodemailer/dist/esm/smtp-connection/http-proxy-client.d.ts +47 -0
  140. package/dist/node_modules/nodemailer/{lib → dist/esm}/smtp-connection/http-proxy-client.js +49 -74
  141. package/dist/node_modules/nodemailer/dist/esm/smtp-connection/index.d.ts +416 -0
  142. package/dist/node_modules/nodemailer/{lib → dist/esm}/smtp-connection/index.js +574 -794
  143. package/dist/node_modules/nodemailer/dist/esm/smtp-pool/index.d.ts +133 -0
  144. package/dist/node_modules/nodemailer/{lib → dist/esm}/smtp-pool/index.js +172 -284
  145. package/dist/node_modules/nodemailer/dist/esm/smtp-pool/pool-resource.d.ts +62 -0
  146. package/dist/node_modules/nodemailer/{lib → dist/esm}/smtp-pool/pool-resource.js +57 -97
  147. package/dist/node_modules/nodemailer/dist/esm/smtp-transport/index.d.ts +156 -0
  148. package/dist/node_modules/nodemailer/{lib → dist/esm}/smtp-transport/index.js +81 -179
  149. package/dist/node_modules/nodemailer/dist/esm/stream-transport/index.d.ts +65 -0
  150. package/dist/node_modules/nodemailer/{lib → dist/esm}/stream-transport/index.js +36 -74
  151. package/dist/node_modules/nodemailer/dist/esm/well-known/index.d.ts +35 -0
  152. package/dist/node_modules/nodemailer/{lib → dist/esm}/well-known/index.js +5 -16
  153. package/dist/node_modules/nodemailer/dist/esm/well-known/services.d.ts +2 -0
  154. package/dist/node_modules/nodemailer/dist/esm/well-known/services.js +671 -0
  155. package/dist/node_modules/nodemailer/dist/esm/xoauth2/index.d.ts +201 -0
  156. package/dist/node_modules/nodemailer/{lib → dist/esm}/xoauth2/index.js +125 -187
  157. package/dist/node_modules/nodemailer/{lib → dist}/well-known/services.json +9 -2
  158. package/dist/node_modules/nodemailer/package.json +1 -1
  159. package/package.json +3 -3
  160. package/dist/node_modules/nodemailer/.gitattributes +0 -6
  161. package/dist/node_modules/nodemailer/.ncurc.js +0 -9
  162. package/dist/node_modules/nodemailer/.prettierignore +0 -8
  163. package/dist/node_modules/nodemailer/.prettierrc +0 -12
  164. package/dist/node_modules/nodemailer/.prettierrc.js +0 -10
  165. package/dist/node_modules/nodemailer/.release-please-config.json +0 -9
  166. package/dist/node_modules/nodemailer/eslint.config.js +0 -88
  167. package/dist/node_modules/nodemailer/lib/dkim/relaxed-body.js +0 -154
  168. package/dist/node_modules/nodemailer/lib/fetch/cookies.js +0 -276
  169. package/dist/node_modules/nodemailer/lib/mime-funcs/index.js +0 -671
  170. package/dist/node_modules/nodemailer/lib/nodemailer.js +0 -1
  171. package/dist/node_modules/nodemailer/lib/ses-transport/index.js +0 -266
  172. package/dist/node_modules/nodemailer/lib/shared/url.js +0 -151
  173. package/dist/node_modules/nodemailer/lib/smtp-connection/data-stream.js +0 -105
@@ -1,266 +0,0 @@
1
- 'use strict';
2
-
3
- const EventEmitter = require('events');
4
- const packageData = require('../../package.json');
5
- const shared = require('../shared');
6
- const errors = require('../errors');
7
- const LeWindows = require('../mime-node/le-windows');
8
- const MimeNode = require('../mime-node');
9
-
10
- /**
11
- * Tags AWS SDK rejections that carry no `code` property (SDK v3 errors only
12
- * have a `name`) with the generic SES transport error code, keeping the
13
- * original error object intact
14
- */
15
- function tagSesError(err) {
16
- if (err && typeof err === 'object' && !err.code) {
17
- err.code = errors.ESES;
18
- }
19
- return err;
20
- }
21
-
22
- /**
23
- * Generates a Transport object for AWS SES
24
- *
25
- * @constructor
26
- * @param {Object} optional config parameter
27
- */
28
- class SESTransport extends EventEmitter {
29
- constructor(options) {
30
- super();
31
- options = options || {};
32
-
33
- this.options = options;
34
- this.ses = this.options.SES;
35
-
36
- this.name = 'SESTransport';
37
- this.version = packageData.version;
38
-
39
- this.logger = shared.getLogger(this.options, {
40
- component: this.options.component || 'ses-transport'
41
- });
42
- }
43
-
44
- getRegion(cb) {
45
- if (this.ses.sesClient.config && typeof this.ses.sesClient.config.region === 'function') {
46
- // Resolve the region provider. Use the two-argument form of then() so that a
47
- // synchronous throw from cb is not recaught here and used to invoke cb a second time.
48
- return this.ses.sesClient.config.region().then(
49
- region => cb(null, region),
50
- err => cb(err)
51
- );
52
- }
53
- return cb(null, false);
54
- }
55
-
56
- /**
57
- * Compiles a mailcomposer message and forwards it to SES
58
- *
59
- * @param {Object} emailMessage MailComposer object
60
- * @param {Function} callback Callback function to run when the sending is completed
61
- */
62
- send(mail, callback) {
63
- let fromHeader = mail.message._headers.find(header => /^from$/i.test(header.key));
64
- if (fromHeader) {
65
- const mimeNode = new MimeNode('text/plain');
66
- fromHeader = mimeNode._convertAddresses(mimeNode._parseAddresses(fromHeader.value));
67
- }
68
-
69
- const envelope = mail.message.getEnvelope();
70
- const messageId = mail.message.messageId();
71
-
72
- const recipients = [].concat(envelope.to || []);
73
- if (recipients.length > 3) {
74
- recipients.push('...and ' + recipients.splice(2).length + ' more');
75
- }
76
- this.logger.info(
77
- {
78
- tnx: 'send',
79
- messageId
80
- },
81
- 'Sending message %s to <%s>',
82
- messageId,
83
- recipients.join(', ')
84
- );
85
-
86
- const getRawMessage = next => {
87
- // do not use Message-ID and Date in DKIM signature
88
- if (!mail.data._dkim) {
89
- mail.data._dkim = {};
90
- }
91
- if (mail.data._dkim.skipFields && typeof mail.data._dkim.skipFields === 'string') {
92
- mail.data._dkim.skipFields += ':date:message-id';
93
- } else {
94
- mail.data._dkim.skipFields = 'date:message-id';
95
- }
96
-
97
- const sourceStream = mail.message.createReadStream();
98
- const stream = sourceStream.pipe(new LeWindows());
99
- const chunks = [];
100
- let chunklen = 0;
101
-
102
- stream.on('readable', () => {
103
- let chunk;
104
- while ((chunk = stream.read()) !== null) {
105
- chunks.push(chunk);
106
- chunklen += chunk.length;
107
- }
108
- });
109
-
110
- sourceStream.once('error', err => stream.emit('error', err));
111
-
112
- stream.once('error', err => next(err));
113
-
114
- stream.once('end', () => next(null, Buffer.concat(chunks, chunklen)));
115
- };
116
-
117
- setImmediate(() =>
118
- getRawMessage((err, raw) => {
119
- if (err) {
120
- this.logger.error(
121
- {
122
- err,
123
- tnx: 'send',
124
- messageId
125
- },
126
- 'Failed creating message for %s. %s',
127
- messageId,
128
- err.message
129
- );
130
- return callback(err);
131
- }
132
-
133
- // mail.data.ses is caller supplied message data, so copy its own keys only
134
- const sesMessage = shared.copyOwnKeys(
135
- {
136
- Content: {
137
- Raw: {
138
- // required
139
- Data: raw // required
140
- }
141
- },
142
- FromEmailAddress: fromHeader || envelope.from,
143
- Destination: {
144
- ToAddresses: envelope.to
145
- }
146
- },
147
- mail.data.ses
148
- );
149
-
150
- this.getRegion((err, region) => {
151
- if (err || !region) {
152
- region = 'us-east-1';
153
- }
154
-
155
- let sendPromise;
156
- try {
157
- // command construction or dispatch can throw synchronously on a
158
- // misconfigured SDK; surface it as a single error callback instead
159
- // of letting it escape into getRegion's promise chain
160
- const command = new this.ses.SendEmailCommand(sesMessage);
161
- sendPromise = this.ses.sesClient.send(command);
162
- } catch (err) {
163
- tagSesError(err);
164
- this.logger.error(
165
- {
166
- err,
167
- tnx: 'send'
168
- },
169
- 'Send error for %s: %s',
170
- messageId,
171
- err.message
172
- );
173
- setImmediate(() => callback(err));
174
- return;
175
- }
176
-
177
- sendPromise
178
- .then(data => {
179
- if (region === 'us-east-1') {
180
- region = 'email';
181
- }
182
-
183
- const info = {
184
- envelope: {
185
- from: envelope.from,
186
- to: envelope.to
187
- },
188
- messageId: '<' + data.MessageId + (!/@/.test(data.MessageId) ? '@' + region + '.amazonses.com' : '') + '>',
189
- response: data.MessageId,
190
- raw
191
- };
192
-
193
- // invoke the callback outside the promise chain so a throw from it
194
- // is not recaught by .catch() and used to call it a second time
195
- setImmediate(() => callback(null, info));
196
- })
197
- .catch(err => {
198
- tagSesError(err);
199
- this.logger.error(
200
- {
201
- err,
202
- tnx: 'send'
203
- },
204
- 'Send error for %s: %s',
205
- messageId,
206
- err.message
207
- );
208
- setImmediate(() => callback(err));
209
- });
210
- });
211
- })
212
- );
213
- }
214
-
215
- /**
216
- * Verifies SES configuration
217
- *
218
- * @param {Function} callback Callback function
219
- */
220
- verify(callback) {
221
- let promise;
222
- if (!callback) {
223
- promise = new Promise((resolve, reject) => {
224
- callback = shared.callbackPromise(resolve, reject);
225
- });
226
- }
227
-
228
- const cb = err => {
229
- if (err && !['InvalidParameterValue', 'MessageRejected'].includes(err.code || err.Code || err.name)) {
230
- return callback(tagSesError(err));
231
- }
232
- return callback(null, true);
233
- };
234
-
235
- const sesMessage = {
236
- Content: {
237
- Raw: {
238
- Data: Buffer.from('From: <invalid@invalid>\r\nTo: <invalid@invalid>\r\n Subject: Invalid\r\n\r\nInvalid')
239
- }
240
- },
241
- FromEmailAddress: 'invalid@invalid',
242
- Destination: {
243
- ToAddresses: ['invalid@invalid']
244
- }
245
- };
246
-
247
- // the region value is not used for anything when verifying, but the lookup
248
- // exercises the client configuration the same way as send() does
249
- this.getRegion(() => {
250
- let sendPromise;
251
- try {
252
- const command = new this.ses.SendEmailCommand(sesMessage);
253
- sendPromise = this.ses.sesClient.send(command);
254
- } catch (err) {
255
- setImmediate(() => cb(err));
256
- return;
257
- }
258
-
259
- sendPromise.then(() => setImmediate(() => cb(null))).catch(err => setImmediate(() => cb(err)));
260
- });
261
-
262
- return promise;
263
- }
264
- }
265
-
266
- module.exports = SESTransport;
@@ -1,151 +0,0 @@
1
- 'use strict';
2
-
3
- // URL parsing wrapper. Prefers the WHATWG `URL` (a global on Node 10+, and
4
- // available as `require('url').URL` since Node 6.13+) and only falls back to the
5
- // legacy, deprecation-warning-emitting `url.parse()` / `url.resolve()` on ancient
6
- // Node versions that predate the WHATWG implementation.
7
- //
8
- // The WHATWG `URL` exposes a different shape than the legacy parser, so results
9
- // are normalized back into the legacy field names the rest of the codebase reads
10
- // (`protocol`, `hostname`, `port`, `pathname`, `path`, `search`, `auth`, `query`,
11
- // `href`). This keeps every existing call site unchanged.
12
- //
13
- // Known, accepted divergences from the legacy parser:
14
- // - non-special schemes (smtp:/smtps:/direct:) are not host-lowercased by
15
- // WHATWG; cosmetic only, SMTP/DNS hosts are case-insensitive. (IDNA mapping
16
- // and IPv6 brackets are normalized back by normalizeHostname below.)
17
- // - a literal unescaped ':' inside a password is percent-encoded by WHATWG;
18
- // such passwords should be percent-encoded by the caller anyway.
19
-
20
- const urllib = require('url');
21
- const punycode = require('../punycode');
22
-
23
- // WHATWG URL constructor if available, otherwise undefined (Node < 6.13).
24
- const URLImpl = (typeof URL !== 'undefined' && URL) || urllib.URL;
25
-
26
- // Matches a "scheme:" not followed by "//" (and with something after it), used
27
- // to re-insert the authority separator the legacy parser did not require.
28
- const SLASHLESS_AUTHORITY = /^([a-zA-Z][a-zA-Z0-9+.-]*:)(?!\/\/)(.+)$/;
29
-
30
- // decodeURIComponent that never throws. Legacy url.parse() decodes the auth
31
- // component but tolerates malformed percent sequences, so mirror that.
32
- function safeDecode(str) {
33
- try {
34
- return decodeURIComponent(str);
35
- } catch (_err) {
36
- return str;
37
- }
38
- }
39
-
40
- // Derives the legacy-shaped bare hostname from a WHATWG URL. WHATWG keeps IPv6
41
- // literals bracketed ('[::1]') and, for non-special schemes (smtp:/smtps:/socks:),
42
- // percent-encodes a non-ASCII host instead of IDNA-mapping it. Both forms are
43
- // un-resolvable when handed to net/dns/http.request — which is what every call
44
- // site does — so map them back to what legacy url.parse() returned: the bare
45
- // address and the punycode form. Idempotent on plain ASCII and already-punycode
46
- // hosts, so special-scheme hosts (already IDNA-mapped by WHATWG) pass through.
47
- function normalizeHostname(raw) {
48
- let hostname = raw || '';
49
- if (!hostname) {
50
- // Host-less URL (e.g. 'direct:'): legacy returned '' here, not null;
51
- // consumers do `hostname.length` / `'.' + hostname`, so keep it a string.
52
- return '';
53
- }
54
- if (hostname.charAt(0) === '[' && hostname.charAt(hostname.length - 1) === ']') {
55
- return hostname.slice(1, -1);
56
- }
57
- return punycode.toASCII(safeDecode(hostname));
58
- }
59
-
60
- module.exports.parse = (input, parseQueryString) => {
61
- input = input || '';
62
-
63
- if (!URLImpl) {
64
- // Node < 6.13: no WHATWG URL available, use the legacy parser.
65
- return urllib.parse(input, parseQueryString);
66
- }
67
-
68
- // Legacy url.parse() parses a "user:pass@host:port" authority that follows
69
- // the scheme even without the "//" separator, for schemes outside its
70
- // built-in slashed-protocol list (smtp:/smtps:/socks:/...). The WHATWG
71
- // parser instead treats a scheme not followed by "//" as an opaque path.
72
- // Re-insert the "//" so slash-less connection/proxy URLs keep resolving to
73
- // an authority, as they did before. This assumes a slash-authority scheme,
74
- // which every consumer here uses (http/https/smtp/smtps/socks/direct); an
75
- // opaque scheme like mailto:/data:/tel: would be mis-split, but none reach
76
- // this module.
77
- const slashless = SLASHLESS_AUTHORITY.exec(input);
78
- const normalized = slashless ? slashless[1] + '//' + slashless[2] : input;
79
-
80
- let u;
81
- try {
82
- u = new URLImpl(normalized);
83
- } catch (_err) {
84
- // WHATWG rejects some input the legacy parser tolerated (empty/relative
85
- // strings, scheme-relative '//host/path', out-of-range ports, ...). Fall
86
- // back to the legacy parser so behavior — including the downstream errors
87
- // callers rely on — is preserved. This is the only path that can still
88
- // emit a deprecation warning; it fires for anything WHATWG cannot
89
- // represent, including legitimate relative URLs, not just malformed input.
90
- return urllib.parse(input, parseQueryString);
91
- }
92
-
93
- const hostname = normalizeHostname(u.hostname);
94
- const port = u.port || null;
95
- const pathname = u.pathname || null;
96
- const search = u.search || null;
97
-
98
- // Legacy `.auth` is the decoded "user[:pass]" string; WHATWG keeps the
99
- // username/password percent-encoded, so decode to stay byte-compatible with
100
- // existing consumers (parseConnectionUrl, Basic/Proxy-Authorization headers).
101
- let auth = null;
102
- if (u.username || u.password) {
103
- // Gate on password too: legacy url.parse('smtps://:pass@host').auth was
104
- // ':pass'. Dropping it would silently connect unauthenticated.
105
- auth = safeDecode(u.username) + (u.password ? ':' + safeDecode(u.password) : '');
106
- }
107
-
108
- let query;
109
- if (parseQueryString) {
110
- // Mirror querystring.parse(): null-prototype object, repeated keys → array.
111
- query = Object.create(null);
112
- u.searchParams.forEach((value, key) => {
113
- if (Object.prototype.hasOwnProperty.call(query, key)) {
114
- if (Array.isArray(query[key])) {
115
- query[key].push(value);
116
- } else {
117
- query[key] = [query[key], value];
118
- }
119
- } else {
120
- query[key] = value;
121
- }
122
- });
123
- } else {
124
- query = search ? search.slice(1) : null;
125
- }
126
-
127
- return {
128
- protocol: u.protocol || null,
129
- host: u.host || null,
130
- hostname,
131
- port,
132
- pathname,
133
- search,
134
- path: (pathname || '') + (search || '') || null,
135
- href: u.href,
136
- auth,
137
- query
138
- };
139
- };
140
-
141
- module.exports.resolve = (from, to) => {
142
- if (!URLImpl) {
143
- return urllib.resolve(from, to);
144
- }
145
- try {
146
- return new URLImpl(to, from).href;
147
- } catch (_err) {
148
- // Malformed target — fall back to the legacy resolver.
149
- return urllib.resolve(from, to);
150
- }
151
- };
@@ -1,105 +0,0 @@
1
- 'use strict';
2
-
3
- const { Transform } = require('stream');
4
-
5
- /**
6
- * Escapes dots in the beginning of lines. Ends the stream with <CR><LF>.<CR><LF>
7
- * Also makes sure that only <CR><LF> sequences are used for linebreaks
8
- *
9
- * @param {Object} options Stream options
10
- */
11
- class DataStream extends Transform {
12
- constructor(options) {
13
- super(options);
14
- this.options = options || {};
15
-
16
- this.inByteCount = 0;
17
- this.outByteCount = 0;
18
- this.lastByte = false;
19
- }
20
-
21
- /**
22
- * Escapes dots
23
- */
24
- _transform(chunk, encoding, done) {
25
- const chunks = [];
26
- let chunklen = 0;
27
- let i,
28
- len,
29
- lastPos = 0;
30
- let buf;
31
-
32
- if (!chunk || !chunk.length) {
33
- return done();
34
- }
35
-
36
- if (typeof chunk === 'string') {
37
- chunk = Buffer.from(chunk);
38
- }
39
-
40
- this.inByteCount += chunk.length;
41
-
42
- for (i = 0, len = chunk.length; i < len; i++) {
43
- if (chunk[i] === 0x2e) {
44
- // .
45
- if ((i && chunk[i - 1] === 0x0a) || (!i && (!this.lastByte || this.lastByte === 0x0a))) {
46
- buf = chunk.slice(lastPos, i + 1);
47
- chunks.push(buf);
48
- chunks.push(Buffer.from('.'));
49
- chunklen += buf.length + 1;
50
- lastPos = i + 1;
51
- }
52
- } else if (chunk[i] === 0x0a) {
53
- // \n
54
- if ((i && chunk[i - 1] !== 0x0d) || (!i && this.lastByte !== 0x0d)) {
55
- if (i > lastPos) {
56
- buf = chunk.slice(lastPos, i);
57
- chunks.push(buf);
58
- chunklen += buf.length + 2;
59
- } else {
60
- chunklen += 2;
61
- }
62
- chunks.push(Buffer.from('\r\n'));
63
- lastPos = i + 1;
64
- }
65
- }
66
- }
67
-
68
- if (chunklen) {
69
- // add last piece
70
- if (lastPos < chunk.length) {
71
- buf = chunk.slice(lastPos);
72
- chunks.push(buf);
73
- chunklen += buf.length;
74
- }
75
-
76
- this.outByteCount += chunklen;
77
- this.push(Buffer.concat(chunks, chunklen));
78
- } else {
79
- this.outByteCount += chunk.length;
80
- this.push(chunk);
81
- }
82
-
83
- this.lastByte = chunk[chunk.length - 1];
84
- done();
85
- }
86
-
87
- /**
88
- * Finalizes the stream with a dot on a single line
89
- */
90
- _flush(done) {
91
- let buf;
92
- if (this.lastByte === 0x0a) {
93
- buf = Buffer.from('.\r\n');
94
- } else if (this.lastByte === 0x0d) {
95
- buf = Buffer.from('\n.\r\n');
96
- } else {
97
- buf = Buffer.from('\r\n.\r\n');
98
- }
99
- this.outByteCount += buf.length;
100
- this.push(buf);
101
- done();
102
- }
103
- }
104
-
105
- module.exports = DataStream;