aiplang 2.0.0 → 2.1.0

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 (53) hide show
  1. package/bin/aiplang.js +7 -7
  2. package/package.json +7 -5
  3. package/server/node_modules/.package-lock.json +9 -0
  4. package/server/node_modules/nodemailer/.gitattributes +6 -0
  5. package/server/node_modules/nodemailer/.ncurc.js +9 -0
  6. package/server/node_modules/nodemailer/.prettierignore +8 -0
  7. package/server/node_modules/nodemailer/.prettierrc +12 -0
  8. package/server/node_modules/nodemailer/.prettierrc.js +10 -0
  9. package/server/node_modules/nodemailer/.release-please-config.json +9 -0
  10. package/server/node_modules/nodemailer/CHANGELOG.md +976 -0
  11. package/server/node_modules/nodemailer/CODE_OF_CONDUCT.md +76 -0
  12. package/server/node_modules/nodemailer/LICENSE +16 -0
  13. package/server/node_modules/nodemailer/README.md +86 -0
  14. package/server/node_modules/nodemailer/SECURITY.txt +22 -0
  15. package/server/node_modules/nodemailer/eslint.config.js +88 -0
  16. package/server/node_modules/nodemailer/lib/addressparser/index.js +382 -0
  17. package/server/node_modules/nodemailer/lib/base64/index.js +140 -0
  18. package/server/node_modules/nodemailer/lib/dkim/index.js +245 -0
  19. package/server/node_modules/nodemailer/lib/dkim/message-parser.js +154 -0
  20. package/server/node_modules/nodemailer/lib/dkim/relaxed-body.js +154 -0
  21. package/server/node_modules/nodemailer/lib/dkim/sign.js +116 -0
  22. package/server/node_modules/nodemailer/lib/errors.js +58 -0
  23. package/server/node_modules/nodemailer/lib/fetch/cookies.js +276 -0
  24. package/server/node_modules/nodemailer/lib/fetch/index.js +278 -0
  25. package/server/node_modules/nodemailer/lib/json-transport/index.js +82 -0
  26. package/server/node_modules/nodemailer/lib/mail-composer/index.js +599 -0
  27. package/server/node_modules/nodemailer/lib/mailer/index.js +446 -0
  28. package/server/node_modules/nodemailer/lib/mailer/mail-message.js +312 -0
  29. package/server/node_modules/nodemailer/lib/mime-funcs/index.js +610 -0
  30. package/server/node_modules/nodemailer/lib/mime-funcs/mime-types.js +2109 -0
  31. package/server/node_modules/nodemailer/lib/mime-node/index.js +1334 -0
  32. package/server/node_modules/nodemailer/lib/mime-node/last-newline.js +33 -0
  33. package/server/node_modules/nodemailer/lib/mime-node/le-unix.js +40 -0
  34. package/server/node_modules/nodemailer/lib/mime-node/le-windows.js +49 -0
  35. package/server/node_modules/nodemailer/lib/nodemailer.js +151 -0
  36. package/server/node_modules/nodemailer/lib/punycode/index.js +460 -0
  37. package/server/node_modules/nodemailer/lib/qp/index.js +230 -0
  38. package/server/node_modules/nodemailer/lib/sendmail-transport/index.js +205 -0
  39. package/server/node_modules/nodemailer/lib/ses-transport/index.js +223 -0
  40. package/server/node_modules/nodemailer/lib/shared/index.js +698 -0
  41. package/server/node_modules/nodemailer/lib/smtp-connection/data-stream.js +105 -0
  42. package/server/node_modules/nodemailer/lib/smtp-connection/http-proxy-client.js +144 -0
  43. package/server/node_modules/nodemailer/lib/smtp-connection/index.js +1903 -0
  44. package/server/node_modules/nodemailer/lib/smtp-pool/index.js +641 -0
  45. package/server/node_modules/nodemailer/lib/smtp-pool/pool-resource.js +256 -0
  46. package/server/node_modules/nodemailer/lib/smtp-transport/index.js +402 -0
  47. package/server/node_modules/nodemailer/lib/stream-transport/index.js +135 -0
  48. package/server/node_modules/nodemailer/lib/well-known/index.js +47 -0
  49. package/server/node_modules/nodemailer/lib/well-known/services.json +619 -0
  50. package/server/node_modules/nodemailer/lib/xoauth2/index.js +436 -0
  51. package/server/node_modules/nodemailer/package.json +48 -0
  52. package/server/server.js +686 -865
  53. /package/{FLUX-PROJECT-KNOWLEDGE.md → aiplang-knowledge.md} +0 -0
@@ -0,0 +1,33 @@
1
+ 'use strict';
2
+
3
+ const { Transform } = require('stream');
4
+
5
+ class LastNewline extends Transform {
6
+ constructor() {
7
+ super();
8
+ this.lastByte = false;
9
+ }
10
+
11
+ _transform(chunk, encoding, done) {
12
+ if (chunk.length) {
13
+ this.lastByte = chunk[chunk.length - 1];
14
+ }
15
+
16
+ this.push(chunk);
17
+ done();
18
+ }
19
+
20
+ _flush(done) {
21
+ if (this.lastByte === 0x0a) {
22
+ return done();
23
+ }
24
+ if (this.lastByte === 0x0d) {
25
+ this.push(Buffer.from('\n'));
26
+ return done();
27
+ }
28
+ this.push(Buffer.from('\r\n'));
29
+ return done();
30
+ }
31
+ }
32
+
33
+ module.exports = LastNewline;
@@ -0,0 +1,40 @@
1
+ 'use strict';
2
+
3
+ const { Transform } = require('stream');
4
+
5
+ /**
6
+ * Ensures that only <LF> is used for linebreaks
7
+ *
8
+ * @param {Object} options Stream options
9
+ */
10
+ class LeUnix extends Transform {
11
+ constructor(options) {
12
+ super(options);
13
+ }
14
+
15
+ /**
16
+ * Escapes dots
17
+ */
18
+ _transform(chunk, encoding, done) {
19
+ let buf;
20
+ let lastPos = 0;
21
+
22
+ for (let i = 0, len = chunk.length; i < len; i++) {
23
+ if (chunk[i] === 0x0d) {
24
+ // \r
25
+ buf = chunk.slice(lastPos, i);
26
+ lastPos = i + 1;
27
+ this.push(buf);
28
+ }
29
+ }
30
+ if (lastPos && lastPos < chunk.length) {
31
+ buf = chunk.slice(lastPos);
32
+ this.push(buf);
33
+ } else if (!lastPos) {
34
+ this.push(chunk);
35
+ }
36
+ done();
37
+ }
38
+ }
39
+
40
+ module.exports = LeUnix;
@@ -0,0 +1,49 @@
1
+ 'use strict';
2
+
3
+ const { Transform } = require('stream');
4
+
5
+ /**
6
+ * Ensures that only <CR><LF> sequences are used for linebreaks
7
+ *
8
+ * @param {Object} options Stream options
9
+ */
10
+ class LeWindows extends Transform {
11
+ constructor(options) {
12
+ super(options);
13
+ this.lastByte = false;
14
+ }
15
+
16
+ /**
17
+ * Escapes dots
18
+ */
19
+ _transform(chunk, encoding, done) {
20
+ let buf;
21
+ let lastPos = 0;
22
+
23
+ for (let i = 0, len = chunk.length; i < len; i++) {
24
+ if (chunk[i] === 0x0a) {
25
+ // \n
26
+ if ((i && chunk[i - 1] !== 0x0d) || (!i && this.lastByte !== 0x0d)) {
27
+ if (i > lastPos) {
28
+ buf = chunk.slice(lastPos, i);
29
+ this.push(buf);
30
+ }
31
+ this.push(Buffer.from('\r\n'));
32
+ lastPos = i + 1;
33
+ }
34
+ }
35
+ }
36
+
37
+ if (lastPos && lastPos < chunk.length) {
38
+ buf = chunk.slice(lastPos);
39
+ this.push(buf);
40
+ } else if (!lastPos) {
41
+ this.push(chunk);
42
+ }
43
+
44
+ this.lastByte = chunk[chunk.length - 1];
45
+ done();
46
+ }
47
+ }
48
+
49
+ module.exports = LeWindows;
@@ -0,0 +1,151 @@
1
+ 'use strict';
2
+
3
+ const Mailer = require('./mailer');
4
+ const shared = require('./shared');
5
+ const SMTPPool = require('./smtp-pool');
6
+ const SMTPTransport = require('./smtp-transport');
7
+ const SendmailTransport = require('./sendmail-transport');
8
+ const StreamTransport = require('./stream-transport');
9
+ const JSONTransport = require('./json-transport');
10
+ const SESTransport = require('./ses-transport');
11
+ const errors = require('./errors');
12
+ const nmfetch = require('./fetch');
13
+ const packageData = require('../package.json');
14
+
15
+ const ETHEREAL_API = (process.env.ETHEREAL_API || 'https://api.nodemailer.com').replace(/\/+$/, '');
16
+ const ETHEREAL_WEB = (process.env.ETHEREAL_WEB || 'https://ethereal.email').replace(/\/+$/, '');
17
+ const ETHEREAL_API_KEY = (process.env.ETHEREAL_API_KEY || '').replace(/\s*/g, '') || null;
18
+ const ETHEREAL_CACHE = ['true', 'yes', 'y', '1'].includes((process.env.ETHEREAL_CACHE || 'yes').toString().trim().toLowerCase());
19
+
20
+ let testAccount = false;
21
+
22
+ module.exports.createTransport = function (transporter, defaults) {
23
+ let options;
24
+
25
+ if (
26
+ // provided transporter is a configuration object, not transporter plugin
27
+ (typeof transporter === 'object' && typeof transporter.send !== 'function') ||
28
+ // provided transporter looks like a connection url
29
+ (typeof transporter === 'string' && /^(smtps?|direct):/i.test(transporter))
30
+ ) {
31
+ const urlConfig = typeof transporter === 'string' ? transporter : transporter.url;
32
+ if (urlConfig) {
33
+ // parse a configuration URL into configuration options
34
+ options = shared.parseConnectionUrl(urlConfig);
35
+ } else {
36
+ options = transporter;
37
+ }
38
+
39
+ if (options.pool) {
40
+ transporter = new SMTPPool(options);
41
+ } else if (options.sendmail) {
42
+ transporter = new SendmailTransport(options);
43
+ } else if (options.streamTransport) {
44
+ transporter = new StreamTransport(options);
45
+ } else if (options.jsonTransport) {
46
+ transporter = new JSONTransport(options);
47
+ } else if (options.SES) {
48
+ if (options.SES.ses && options.SES.aws) {
49
+ const error = new Error(
50
+ 'Using legacy SES configuration, expecting @aws-sdk/client-sesv2, see https://nodemailer.com/transports/ses/'
51
+ );
52
+ error.code = errors.ECONFIG;
53
+ throw error;
54
+ }
55
+ transporter = new SESTransport(options);
56
+ } else {
57
+ transporter = new SMTPTransport(options);
58
+ }
59
+ }
60
+
61
+ return new Mailer(transporter, options, defaults);
62
+ };
63
+
64
+ module.exports.createTestAccount = function (apiUrl, callback) {
65
+ let promise;
66
+
67
+ if (!callback && typeof apiUrl === 'function') {
68
+ callback = apiUrl;
69
+ apiUrl = false;
70
+ }
71
+
72
+ if (!callback) {
73
+ promise = new Promise((resolve, reject) => {
74
+ callback = shared.callbackPromise(resolve, reject);
75
+ });
76
+ }
77
+
78
+ if (ETHEREAL_CACHE && testAccount) {
79
+ setImmediate(() => callback(null, testAccount));
80
+ return promise;
81
+ }
82
+
83
+ apiUrl = apiUrl || ETHEREAL_API;
84
+
85
+ const chunks = [];
86
+ let chunklen = 0;
87
+
88
+ const requestHeaders = {};
89
+ const requestBody = {
90
+ requestor: packageData.name,
91
+ version: packageData.version
92
+ };
93
+
94
+ if (ETHEREAL_API_KEY) {
95
+ requestHeaders.Authorization = 'Bearer ' + ETHEREAL_API_KEY;
96
+ }
97
+
98
+ const req = nmfetch(apiUrl + '/user', {
99
+ contentType: 'application/json',
100
+ method: 'POST',
101
+ headers: requestHeaders,
102
+ body: Buffer.from(JSON.stringify(requestBody))
103
+ });
104
+
105
+ req.on('readable', () => {
106
+ let chunk;
107
+ while ((chunk = req.read()) !== null) {
108
+ chunks.push(chunk);
109
+ chunklen += chunk.length;
110
+ }
111
+ });
112
+
113
+ req.once('error', err => callback(err));
114
+
115
+ req.once('end', () => {
116
+ const res = Buffer.concat(chunks, chunklen);
117
+ let data;
118
+ try {
119
+ data = JSON.parse(res.toString());
120
+ } catch (E) {
121
+ return callback(E);
122
+ }
123
+ if (data.status !== 'success' || data.error) {
124
+ return callback(new Error(data.error || 'Request failed'));
125
+ }
126
+ delete data.status;
127
+ testAccount = data;
128
+ callback(null, testAccount);
129
+ });
130
+
131
+ return promise;
132
+ };
133
+
134
+ module.exports.getTestMessageUrl = function (info) {
135
+ if (!info || !info.response) {
136
+ return false;
137
+ }
138
+
139
+ const infoProps = new Map();
140
+ info.response.replace(/\[([^\]]+)\]$/, (m, props) => {
141
+ props.replace(/\b([A-Z0-9]+)=([^\s]+)/g, (m, key, value) => {
142
+ infoProps.set(key, value);
143
+ });
144
+ });
145
+
146
+ if (infoProps.has('STATUS') && infoProps.has('MSGID')) {
147
+ return (testAccount.web || ETHEREAL_WEB) + '/message/' + infoProps.get('MSGID');
148
+ }
149
+
150
+ return false;
151
+ };