oxygen-cli 1.34.2 → 1.35.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v1.35.0 (2024-06-18)
4
+
5
+ #### :tada: New Feature
6
+ * Add support for sending emails with `email` module.
7
+
3
8
  ## v1.34.1 (2024-06-10)
4
9
 
5
10
  #### :house: Internal
@@ -7,7 +12,7 @@
7
12
 
8
13
  ## v1.34.0 (2024-06-07)
9
14
 
10
- #### :house: Internal
15
+ #### :tada: New Feature
11
16
  * Add NTLM authentication support to `http` module.
12
17
 
13
18
  ## v1.33.6 (2024-06-06)
@@ -23,15 +23,21 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
23
23
  * @name email
24
24
  * @description Provides methods for working with email via IMAP.
25
25
  */
26
- var errHelper = require('../errors/helper');
26
+ const nodemailer = require('nodemailer');
27
27
 
28
- module.exports = function () {
29
- var imaps = require('imap-simple');
28
+ const imaps = require('imap-simple');
29
+
30
+ const simpleParser = require('mailparser').simpleParser;
30
31
 
31
- const simpleParser = require('mailparser').simpleParser;
32
+ const errHelper = require('../errors/helper');
32
33
 
34
+ const AUTH_TIMEOUT = 30000;
35
+
36
+ module.exports = function () {
33
37
  var _config;
34
38
 
39
+ var _smtpConfig;
40
+
35
41
  module.isInitialized = function () {
36
42
  return _config !== undefined;
37
43
  };
@@ -43,12 +49,12 @@ module.exports = function () {
43
49
  * @param {String} host - Host name (e.g. 'imap.gmail.com').
44
50
  * @param {Number} port - Port number (e.g. 993).
45
51
  * @param {Boolean} tls - true to use TLS, false otherwise.
46
- * @param {Number} authTimeout - Authentication timeout in milliseconds.
52
+ * @param {Number=} authTimeout - Authentication timeout in milliseconds.
47
53
  * @param {Boolean=} enableSNI - Enable sending SNI when establishing the connection. This is required for some mail servers. Default is false.
48
54
  */
49
55
 
50
56
 
51
- module.init = function (user, password, host, port, tls, authTimeout, enableSNI) {
57
+ module.init = function (user, password, host, port, tls, authTimeout = AUTH_TIMEOUT, enableSNI = undefined) {
52
58
  _utils.default.assertArgumentNonEmptyString(user, 'user');
53
59
 
54
60
  _utils.default.assertArgumentNonEmptyString(password, 'password');
@@ -70,6 +76,13 @@ module.exports = function () {
70
76
  tls: tls,
71
77
  authTimeout: authTimeout
72
78
  }
79
+ };
80
+ _smtpConfig = {
81
+ username: user,
82
+ password,
83
+ host: host,
84
+ port,
85
+ tls
73
86
  }; // set servername if SNI is enabled or we are using Gmail
74
87
 
75
88
  if (enableSNI || host === 'imap.gmail.com') {
@@ -206,7 +219,54 @@ module.exports = function () {
206
219
 
207
220
  return mail;
208
221
  };
222
+ /**
223
+ * @summary Send email using SMTP.
224
+ * @function send
225
+ * @param {String|Array} to - Receiver's email address.
226
+ * @param {String} subject - Email subject.
227
+ * @param {String} content - Email body as a plain text.
228
+ * @param {String=} html - Optional, Email body as HTML.
229
+ */
230
+
231
+
232
+ module.send = async function (to, subject, content, html = undefined) {
233
+ let err = undefined;
234
+
235
+ try {
236
+ // Create a SMTP transporter object
237
+ const transporter = nodemailer.createTransport({
238
+ host: _smtpConfig.host,
239
+ port: _smtpConfig.port,
240
+ secure: _smtpConfig.tls,
241
+ auth: {
242
+ user: _smtpConfig.username,
243
+ pass: _smtpConfig.password
244
+ },
245
+ sendmail: false,
246
+ logger: false,
247
+ transactionLog: false,
248
+ debug: false
249
+ }); // Message object
250
+
251
+ const message = {
252
+ to: to,
253
+ // Subject of the message
254
+ subject: subject || '',
255
+ // plaintext body
256
+ text: content,
257
+ // HTML body
258
+ html: html
259
+ };
260
+ await transporter.sendMail(message);
261
+ } catch (e) {
262
+ err = e;
263
+ }
264
+
265
+ if (err) {
266
+ throw new _OxygenError.default(errHelper.errorCode.EMAIL_ERROR, err.toString());
267
+ }
268
+ };
209
269
 
210
270
  return module;
211
271
  };
212
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1lbWFpbC5qcyJdLCJuYW1lcyI6WyJlcnJIZWxwZXIiLCJyZXF1aXJlIiwibW9kdWxlIiwiZXhwb3J0cyIsImltYXBzIiwic2ltcGxlUGFyc2VyIiwiX2NvbmZpZyIsImlzSW5pdGlhbGl6ZWQiLCJ1bmRlZmluZWQiLCJpbml0IiwidXNlciIsInBhc3N3b3JkIiwiaG9zdCIsInBvcnQiLCJ0bHMiLCJhdXRoVGltZW91dCIsImVuYWJsZVNOSSIsInV0aWxzIiwiYXNzZXJ0QXJndW1lbnROb25FbXB0eVN0cmluZyIsImFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmUiLCJhc3NlcnRBcmd1bWVudEJvb2wiLCJpbWFwIiwidGxzT3B0aW9ucyIsInNlcnZlcm5hbWUiLCJnZXRMYXN0RW1haWwiLCJzaW5jZU1pbnV0ZXMiLCJzdWJqZWN0IiwidGltZW91dCIsIm1haWwiLCJub3ciLCJEYXRlIiwiZ2V0VGltZSIsImVyciIsImNvbm5lY3Rpb24iLCJjb25uZWN0Iiwib3BlbkJveCIsInN0YXJ0RGF0ZSIsInNldFRpbWUiLCJ0b0lTT1N0cmluZyIsInNlYXJjaENyaXRlcmlhIiwiZmV0Y2hPcHRpb25zIiwiYm9kaWVzIiwic3RydWN0IiwibWFya1NlZW4iLCJyZXN1bHRzIiwic2VhcmNoIiwicmVzdWx0IiwiaGVhZGVyUGFydCIsIl8iLCJmaW5kIiwicGFydHMiLCJib2R5UGFydCIsImlkIiwiYXR0cmlidXRlcyIsInVpZCIsImlkSGVhZGVyIiwic2ltcGxlIiwiYm9keSIsImF0dGFjaG1lbnRzIiwiZ2V0UGFydHMiLCJwYXJ0IiwiZGlzcG9zaXRpb24iLCJ0eXBlIiwidG9VcHBlckNhc2UiLCJwYXJ0RGF0YSIsImdldFBhcnREYXRhIiwicHVzaCIsImZpbGVuYW1lIiwicGFyYW1zIiwiZGF0YSIsImh0bWwiLCJ0ZXh0QXNIdG1sIiwidGV4dCIsImNvbnN0cnVjdG9yIiwibmFtZSIsInRlc3QiLCJ0byIsImZyb20iLCJkYXRlIiwiZSIsIk94RXJyb3IiLCJlcnJvckNvZGUiLCJFTUFJTF9FUlJPUiIsInRvU3RyaW5nIiwiVElNRU9VVCJdLCJtYXBwaW5ncyI6Ijs7OztBQWNBOztBQUNBOztBQUNBOzs7O0FBaEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFLQSxJQUFJQSxTQUFTLEdBQUdDLE9BQU8sQ0FBQyxrQkFBRCxDQUF2Qjs7QUFFQUMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCLFlBQVc7QUFDeEIsTUFBSUMsS0FBSyxHQUFHSCxPQUFPLENBQUMsYUFBRCxDQUFuQjs7QUFDQSxRQUFNSSxZQUFZLEdBQUdKLE9BQU8sQ0FBQyxZQUFELENBQVAsQ0FBc0JJLFlBQTNDOztBQUNBLE1BQUlDLE9BQUo7O0FBRUFKLEVBQUFBLE1BQU0sQ0FBQ0ssYUFBUCxHQUF1QixZQUFXO0FBQzlCLFdBQU9ELE9BQU8sS0FBS0UsU0FBbkI7QUFDSCxHQUZEO0FBSUE7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0lOLEVBQUFBLE1BQU0sQ0FBQ08sSUFBUCxHQUFjLFVBQVNDLElBQVQsRUFBZUMsUUFBZixFQUF5QkMsSUFBekIsRUFBK0JDLElBQS9CLEVBQXFDQyxHQUFyQyxFQUEwQ0MsV0FBMUMsRUFBdURDLFNBQXZELEVBQWtFO0FBQzVFQyxtQkFBTUMsNEJBQU4sQ0FBbUNSLElBQW5DLEVBQXlDLE1BQXpDOztBQUNBTyxtQkFBTUMsNEJBQU4sQ0FBbUNQLFFBQW5DLEVBQTZDLFVBQTdDOztBQUNBTSxtQkFBTUMsNEJBQU4sQ0FBbUNOLElBQW5DLEVBQXlDLE1BQXpDOztBQUNBSyxtQkFBTUUsK0JBQU4sQ0FBc0NOLElBQXRDLEVBQTRDLE1BQTVDOztBQUNBSSxtQkFBTUcsa0JBQU4sQ0FBeUJOLEdBQXpCLEVBQThCLEtBQTlCOztBQUNBRyxtQkFBTUUsK0JBQU4sQ0FBc0NKLFdBQXRDLEVBQW1ELGFBQW5EOztB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QUFTO0FBQ0wsWUFBTSxJQUFJZ0Qsb0JBQUosQ0FBWWhGLFNBQVMsQ0FBQ2lGLFNBQVYsQ0FBb0JDLFdBQWhDLEVBQTZDbEQsR0FBRyxDQUFDbUQsUUFBSixFQUE3QyxDQUFOO0FBQ0gsS0FGRCxNQUVPLElBQUksQ0FBQ3ZELElBQUwsRUFBVztBQUNkLFlBQU0sSUFBSW9ELG9CQUFKLENBQVloRixTQUFTLENBQUNpRixTQUFWLENBQW9CRyxPQUFoQyxFQUF5QyxrQ0FBa0N6RCxPQUFsQyxHQUE0QyxNQUFyRixDQUFOO0FBQ0g7O0FBRUQsV0FBT0MsSUFBUDtBQUNILEdBL0ZEOztBQWlHQSxTQUFPMUIsTUFBUDtBQUNILENBL0tEIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChDKSAyMDE1LXByZXNlbnQgQ2xvdWRCZWF0IExpbWl0ZWRcclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICovXHJcblxyXG4vKipcclxuICogQG5hbWUgZW1haWxcclxuICogQGRlc2NyaXB0aW9uIFByb3ZpZGVzIG1ldGhvZHMgZm9yIHdvcmtpbmcgd2l0aCBlbWFpbCB2aWEgSU1BUC5cclxuICovXHJcblxyXG5pbXBvcnQgT3hFcnJvciBmcm9tICcuLi9lcnJvcnMvT3h5Z2VuRXJyb3InO1xyXG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XHJcbnZhciBlcnJIZWxwZXIgPSByZXF1aXJlKCcuLi9lcnJvcnMvaGVscGVyJyk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xyXG4gICAgdmFyIGltYXBzID0gcmVxdWlyZSgnaW1hcC1zaW1wbGUnKTtcclxuICAgIGNvbnN0IHNpbXBsZVBhcnNlciA9IHJlcXVpcmUoJ21haWxwYXJzZXInKS5zaW1wbGVQYXJzZXI7XHJcbiAgICB2YXIgX2NvbmZpZztcclxuXHJcbiAgICBtb2R1bGUuaXNJbml0aWFsaXplZCA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiBfY29uZmlnICE9PSB1bmRlZmluZWQ7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgU2V0IGVtYWlsIGNvbm5lY3Rpb24gZGV0YWlscy5cclxuICAgICAqIEBmdW5jdGlvbiBpbml0XHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gdXNlciAtIFVzZXJuYW1lIChlLmcuICd5b3VyQGVtYWlsLmFkZHJlc3MnKS5cclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBwYXNzd29yZCAtIFBhc3N3b3JkLlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IGhvc3QgLSBIb3N0IG5hbWUgKGUuZy4gJ2ltYXAuZ21haWwuY29tJykuXHJcbiAgICAgKiBAcGFyYW0ge051bWJlcn0gcG9ydCAtIFBvcnQgbnVtYmVyIChlLmcuIDk5MykuXHJcbiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IHRscyAtIHRydWUgdG8gdXNlIFRMUywgZmFsc2Ugb3RoZXJ3aXNlLlxyXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IGF1dGhUaW1lb3V0IC0gQXV0aGVudGljYXRpb24gdGltZW91dCBpbiBtaWxsaXNlY29uZHMuXHJcbiAgICAgKiBAcGFyYW0ge0Jvb2xlYW49fSBlbmFibGVTTkkgLSBFbmFibGUgc2VuZGluZyBTTkkgd2hlbiBlc3RhYmxpc2hpbmcgdGhlIGNvbm5lY3Rpb24uIFRoaXMgaXMgcmVxdWlyZWQgZm9yIHNvbWUgbWFpbCBzZXJ2ZXJzLiBEZWZhdWx0IGlzIGZhbHNlLiBcclxuICAgICAqL1xyXG4gICAgbW9kdWxlLmluaXQgPSBmdW5jdGlvbih1c2VyLCBwYXNzd29yZCwgaG9zdCwgcG9ydCwgdGxzLCBhdXRoVGltZW91dCwgZW5hYmxlU05JKSB7XHJcbiAgICAgICAgdXRpbHMuYXNzZXJ0QXJndW1lbnROb25FbXB0eVN0cmluZyh1c2VyLCAndXNlcicpO1xyXG4gICAgICAgIHV0aWxzLmFzc2VydEFyZ3VtZW50Tm9uRW1wdHlTdHJpbmcocGFzc3dvcmQsICdwYXNzd29yZCcpO1xyXG4gICAgICAgIHV0aWxzLmFzc2VydEFyZ3VtZW50Tm9uRW1wdHlTdHJpbmcoaG9zdCwgJ2hvc3QnKTtcclxuICAgICAgICB1dGlscy5hc3NlcnRBcmd1bWVudE51bWJlck5vbk5lZ2F0aXZlKHBvcnQsICdwb3J0Jyk7XHJcbiAgICAgICAgdXRpbHMuYXNzZXJ0QXJndW1lbnRCb29sKHRscywgJ3RscycpO1xyXG4gICAgICAgIHV0aWxzLmFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmUoYXV0aFRpbWVvdXQsICdhdXRoVGltZW91dCcpO1xyXG5cclxuICAgICAgICBfY29uZmlnID0ge1xyXG4gICAgICAgICAgICBpbWFwOiB7XHJcbiAgICAgICAgICAgICAgICB1c2VyOiB1c2VyLFxyXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQ6IHBhc3N3b3JkLFxyXG4gICAgICAgICAgICAgICAgaG9zdDogaG9zdCxcclxuICAgICAgICAgICAgICAgIHBvcnQ6IHBvcnQsXHJcbiAgICAgICAgICAgICAgICB0bHM6IHRscyxcclxuICAgICAgICAgICAgICAgIGF1dGhUaW1lb3V0OiBhdXRoVGltZW91dFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgLy8gc2V0IHNlcnZlcm5hbWUgaWYgU05JIGlzIGVuYWJsZWQgb3Igd2UgYXJlIHVzaW5nIEdtYWlsXHJcbiAgICAgICAgaWYgKGVuYWJsZVNOSSB8fCBob3N0ID09PSAnaW1hcC5nbWFpbC5jb20nKSB7XHJcbiAgICAgICAgICAgIF9jb25maWcuaW1hcC50bHNPcHRpb25zID0geyBzZXJ2ZXJuYW1lOiBob3N0IH07XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFJldHJpZXZlcyBsYXN0IHVuc2VlbiBlbWFpbC5cclxuICAgICAqIEBmdW5jdGlvbiBnZXRMYXN0RW1haWxcclxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBzaW5jZU1pbnV0ZXMgLSBTZWFyY2ggZm9yIGVtYWlscyByZWNlaXZlZCBzaW5jZSB0aGUgc3BlY2lmaWVkIGFtb3VudCBvZiBtaW51dGVzIGludG8gcGFzdC5cclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfFJlZ2V4fSBzdWJqZWN0IC0gUmV0dXJuIGVtYWlsIG1hdGNoaW5nIHRoZSBzcGVjaWZpZWQgc3ViamVjdC5cclxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSB0aW1lb3V0IC0gVGltZW91dCAoaW4gbWlsbGlzZWNvbmRzKSBmb3Igd2FpdGluZyBmb3IgdGhlIG1lc3NhZ2UgdG8gYXJyaXZlLlxyXG4gICAgICogQHJldHVybiB7T2JqZWN0fSBFbWFpbCBib2R5LCB0ZXh0LCB0ZXh0QXNIdG1sLCBhdHRhY2htZW50cyBpZiBhbnksIGFuZCBUTywgRlJPTSwgU1VCSkVDVCwgREFURSBoZWFkZXJzLlxyXG4gICAgICogQGV4YW1wbGUgPGNhcHRpb24+W2phdmFzY3JpcHRdIFVzYWdlIGV4YW1wbGU8L2NhcHRpb24+XHJcbiAgICAgKiBlbWFpbC5pbml0KCdbWU9VUl9FTUFJTF1AZ21haWwuY29tJywgJ3Bhc3N3b3JkJywgJ2ltYXAuZ21haWwuY29tJywgOTkzLCB0cnVlLCAzMDAwKTtcclxuICAgICAqIHZhciBtYWlsID0gZW1haWwuZ2V0TGFzdEVtYWlsKDYwLCAnZW1haWwgc3ViamVjdCcsIDUwMDApO1xyXG4gICAgICogbG9nLmluZm8obWFpbCk7XHJcbiAgICAgKiBcclxuICAgICAqIGlmKHIuYXR0YWNobWVudHMgJiYgci5hdHRhY2htZW50cy5sZW5ndGggPiAwKXtcclxuICAgICAqIFx0Y29uc3QgZnMgPSByZXF1aXJlKCdmcycpO1xyXG4gICAgICogXHRyLmF0dGFjaG1lbnRzLm1hcCgoYXR0YWNobWVudCkgPT4ge1xyXG4gICAgICogXHRcdGxldCBmaWxlRGVzY3JpcHRvcjtcclxuICAgICAqIFx0XHR0cnl7XHJcbiAgICAgKiBcdFx0XHRmaWxlRGVzY3JpcHRvciA9IGZzLm9wZW5TeW5jKGF0dGFjaG1lbnQuZmlsZW5hbWUsICd3Jyk7XHJcbiAgICAgKiBcdFx0fSBjYXRjaChlKSB7XHJcbiAgICAgKiBcdFx0XHR0aHJvdyAnY291bGQgbm90IG9wZW4gZmlsZTogJyArIGU7XHJcbiAgICAgKiBcdFx0fVxyXG4gICAgICogXHRcdFxyXG4gICAgICogXHRcdHRyeXtcclxuICAgICAqIFx0XHRcdGZzLndyaXRlRmlsZVN5bmMoZmlsZURlc2NyaXB0b3IsIGF0dGFjaG1lbnQuZGF0YSk7XHJcbiAgICAgKiBcdFx0fSBjYXRjaChlKSB7XHJcbiAgICAgKiBcdFx0XHR0aHJvdyAnZXJyb3Igd3JpdGluZyBmaWxlOiAnICsgZTtcclxuICAgICAqIFx0XHR9XHJcbiAgICAgKiBcdFx0XHJcbiAgICAgKiBcdFx0ZnMuY2xvc2VTeW5jKGZpbGVEZXNjcmlwdG9yKTtcclxuICAgICAqIFx0fSk7XHJcbiAgICAgKiB9XHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5nZXRMYXN0RW1haWwgPSBhc3luYyBmdW5jdGlvbihzaW5jZU1pbnV0ZXMsIHN1YmplY3QsIHRpbWVvdXQpIHtcclxuICAgICAgICB1dGlscy5hc3NlcnRBcmd1bWVudE51bWJlck5vbk5lZ2F0aXZlKHNpbmNlTWludXRlcywgJ3NpbmNlTWludXRlcycpO1xyXG4gICAgICAgIHV0aWxzLmFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmUodGltZW91dCwgJ3RpbWVvdXQnKTtcclxuXHJcbiAgICAgICAgdmFyIG1haWw7XHJcbiAgICAgICAgdmFyIG5vdyA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgdmFyIGVycjtcclxuXHJcbiAgICAgICAgd2hpbGUgKCFlcnIgJiYgIW1haWwgJiYgKChuZXcgRGF0ZSgpKS5nZXRUaW1lKCkgLSBub3cpIDwgdGltZW91dCkge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY29ubmVjdGlvbiA9IGF3YWl0IGltYXBzLmNvbm5lY3QoX2NvbmZpZyk7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCBjb25uZWN0aW9uLm9wZW5Cb3goJ0lOQk9YJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gZmV0Y2ggdW5zZWVuIGVtYWlscyBmcm9tIHRoZSBsYXN0IHNpbmNlTWludXRlc1xyXG4gICAgICAgICAgICAgICAgdmFyIHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgICAgICAgICBzdGFydERhdGUuc2V0VGltZShEYXRlLm5vdygpIC0gKHNpbmNlTWludXRlcyAqIDYwICogMTAwMCkpO1xyXG4gICAgICAgICAgICAgICAgc3RhcnREYXRlID0gc3RhcnREYXRlLnRvSVNPU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICB2YXIgc2VhcmNoQ3JpdGVyaWEgPSBbJ1VOU0VFTicsIFsnU0lOQ0UnLCBzdGFydERhdGVdXTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBmZXRjaCBjZXJ0YWluIGhlYWRlcnMgYW5kIHN0cmlwcGVkIGRvd24gYm9keVxyXG4gICAgICAgICAgICAgICAgdmFyIGZldGNoT3B0aW9ucyA9IHtcclxuICAgICAgICAgICAgICAgICAgICBib2RpZXM6IFsnSEVBREVSLkZJRUxEUyAoRlJPTSBUTyBTVUJKRUNUIERBVEUpJywgJ1RFWFQnXSxcclxuICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Q6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgbWFya1NlZW46IGZhbHNlXHJcbiAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBjb25uZWN0aW9uLnNlYXJjaChzZWFyY2hDcml0ZXJpYSwgZmV0Y2hPcHRpb25zKTtcclxuXHJcbiAgICAgICAgICAgICAgICBmb3IgKHZhciByZXN1bHQgb2YgcmVzdWx0cykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhlYWRlclBhcnQgPSBfLmZpbmQocmVzdWx0LnBhcnRzLCB7ICd3aGljaCc6IGZldGNoT3B0aW9ucy5ib2RpZXNbMF0gfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9keVBhcnQgPSBfLmZpbmQocmVzdWx0LnBhcnRzLCB7ICd3aGljaCc6IGZldGNoT3B0aW9ucy5ib2RpZXNbMV0gfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlkID0gcmVzdWx0LmF0dHJpYnV0ZXMudWlkO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlkSGVhZGVyID0gJ0ltYXAtSWQ6ICcraWQrJ1xcclxcbic7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2ltcGxlID0gYXdhaXQgc2ltcGxlUGFyc2VyKGlkSGVhZGVyK2JvZHlQYXJ0LmJvZHkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGF0dGFjaG1lbnRzID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFydHMgPSBpbWFwcy5nZXRQYXJ0cyhyZXN1bHQuYXR0cmlidXRlcy5zdHJ1Y3QpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHBhcnQgb2YgcGFydHMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnQuZGlzcG9zaXRpb24gJiYgcGFydC5kaXNwb3NpdGlvbi50eXBlLnRvVXBwZXJDYXNlKCkgPT09ICdBVFRBQ0hNRU5UJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFydERhdGEgPSBhd2FpdCBjb25uZWN0aW9uLmdldFBhcnREYXRhKHJlc3VsdCwgcGFydCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50cy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZTogcGFydC5kaXNwb3NpdGlvbi5wYXJhbXMuZmlsZW5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogcGFydERhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBsZXQgYm9keTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaHRtbDtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgdGV4dEFzSHRtbDtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc2ltcGxlLmh0bWwgfHwgc2ltcGxlLnRleHQgfHwgc2ltcGxlLnRleHRBc0h0bWwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGFyc2VkIHN1Y2Nlc3NcclxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keSA9IGJvZHlQYXJ0LnRleHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwgPSBzaW1wbGUuaHRtbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEFzSHRtbCA9IHNpbXBsZS50ZXh0QXNIdG1sO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvbid0IHBhcnNlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5ID0gYm9keVBhcnQuYm9keTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChoZWFkZXJQYXJ0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmplY3QgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdWJqZWN0LmNvbnN0cnVjdG9yLm5hbWUgPT09ICdSZWdFeHAnICYmIHN1YmplY3QudGVzdChoZWFkZXJQYXJ0LmJvZHkuc3ViamVjdFswXSkpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN1YmplY3QgPT09IGhlYWRlclBhcnQuYm9keS5zdWJqZWN0WzBdKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0byA9IGhlYWRlclBhcnQuYm9keS50byA/IGhlYWRlclBhcnQuYm9keS50b1swXSA6IG51bGw7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbCA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tOiBoZWFkZXJQYXJ0LmJvZHkuZnJvbVswXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bzogdG8sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViamVjdDogaGVhZGVyUGFydC5ib2R5LnN1YmplY3RbMF0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZTogaGVhZGVyUGFydC5ib2R5LmRhdGVbMF0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogYm9keSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50czogYXR0YWNobWVudHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEFzSHRtbDogdGV4dEFzSHRtbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sOiBodG1sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICBlcnIgPSBlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuRU1BSUxfRVJST1IsIGVyci50b1N0cmluZygpKTtcclxuICAgICAgICB9IGVsc2UgaWYgKCFtYWlsKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuVElNRU9VVCwgXCJDb3VsZG4ndCBnZXQgYW4gZW1haWwgd2l0aGluIFwiICsgdGltZW91dCArICcgbXMuJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbWFpbDtcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIG1vZHVsZTtcclxufTtcclxuIl19
272
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1lbWFpbC5qcyJdLCJuYW1lcyI6WyJub2RlbWFpbGVyIiwicmVxdWlyZSIsImltYXBzIiwic2ltcGxlUGFyc2VyIiwiZXJySGVscGVyIiwiQVVUSF9USU1FT1VUIiwibW9kdWxlIiwiZXhwb3J0cyIsIl9jb25maWciLCJfc210cENvbmZpZyIsImlzSW5pdGlhbGl6ZWQiLCJ1bmRlZmluZWQiLCJpbml0IiwidXNlciIsInBhc3N3b3JkIiwiaG9zdCIsInBvcnQiLCJ0bHMiLCJhdXRoVGltZW91dCIsImVuYWJsZVNOSSIsInV0aWxzIiwiYXNzZXJ0QXJndW1lbnROb25FbXB0eVN0cmluZyIsImFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmUiLCJhc3NlcnRBcmd1bWVudEJvb2wiLCJpbWFwIiwidXNlcm5hbWUiLCJ0bHNPcHRpb25zIiwic2VydmVybmFtZSIsImdldExhc3RFbWFpbCIsInNpbmNlTWludXRlcyIsInN1YmplY3QiLCJ0aW1lb3V0IiwibWFpbCIsIm5vdyIsIkRhdGUiLCJnZXRUaW1lIiwiZXJyIiwiY29ubmVjdGlvbiIsImNvbm5lY3QiLCJvcGVuQm94Iiwic3RhcnREYXRlIiwic2V0VGltZSIsInRvSVNPU3RyaW5nIiwic2VhcmNoQ3JpdGVyaWEiLCJmZXRjaE9wdGlvbnMiLCJib2RpZXMiLCJzdHJ1Y3QiLCJtYXJrU2VlbiIsInJlc3VsdHMiLCJzZWFyY2giLCJyZXN1bHQiLCJoZWFkZXJQYXJ0IiwiXyIsImZpbmQiLCJwYXJ0cyIsImJvZHlQYXJ0IiwiaWQiLCJhdHRyaWJ1dGVzIiwidWlkIiwiaWRIZWFkZXIiLCJzaW1wbGUiLCJib2R5IiwiYXR0YWNobWVudHMiLCJnZXRQYXJ0cyIsInBhcnQiLCJkaXNwb3NpdGlvbiIsInR5cGUiLCJ0b1VwcGVyQ2FzZSIsInBhcnREYXRhIiwiZ2V0UGFydERhdGEiLCJwdXNoIiwiZmlsZW5hbWUiLCJwYXJhbXMiLCJkYXRhIiwiaHRtbCIsInRleHRBc0h0bWwiLCJ0ZXh0IiwiY29uc3RydWN0b3IiLCJuYW1lIiwidGVzdCIsInRvIiwiZnJvbSIsImRhdGUiLCJlIiwiT3hFcnJvciIsImVycm9yQ29kZSIsIkVNQUlMX0VSUk9SIiwidG9TdHJpbmciLCJUSU1FT1VUIiwic2VuZCIsImNvbnRlbnQiLCJ0cmFuc3BvcnRlciIsImNyZWF0ZVRyYW5zcG9ydCIsInNlY3VyZSIsImF1dGgiLCJwYXNzIiwic2VuZG1haWwiLCJsb2dnZXIiLCJ0cmFuc2FjdGlvbkxvZyIsImRlYnVnIiwibWVzc2FnZSIsInNlbmRNYWlsIl0sIm1hcHBpbmdzIjoiOzs7O0FBY0E7O0FBQ0E7O0FBQ0E7Ozs7QUFoQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUtBLE1BQU1BLFVBQVUsR0FBR0MsT0FBTyxDQUFDLFlBQUQsQ0FBMUI7O0FBQ0EsTUFBTUMsS0FBSyxHQUFHRCxPQUFPLENBQUMsYUFBRCxDQUFyQjs7QUFDQSxNQUFNRSxZQUFZLEdBQUdGLE9BQU8sQ0FBQyxZQUFELENBQVAsQ0FBc0JFLFlBQTNDOztBQUVBLE1BQU1DLFNBQVMsR0FBR0gsT0FBTyxDQUFDLGtCQUFELENBQXpCOztBQUNBLE1BQU1JLFlBQVksR0FBRyxLQUFyQjs7QUFFQUMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCLFlBQVc7QUFDeEIsTUFBSUMsT0FBSjs7QUFDQSxNQUFJQyxXQUFKOztBQUVBSCxFQUFBQSxNQUFNLENBQUNJLGFBQVAsR0FBdUIsWUFBVztBQUM5QixXQUFPRixPQUFPLEtBQUtHLFNBQW5CO0FBQ0gsR0FGRDtBQUlBO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNJTCxFQUFBQSxNQUFNLENBQUNNLElBQVAsR0FBYyxVQUFTQyxJQUFULEVBQWVDLFFBQWYsRUFBeUJDLElBQXpCLEVBQStCQyxJQUEvQixFQUFxQ0MsR0FBckMsRUFBMENDLFdBQVcsR0FBR2IsWUFBeEQs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LypcclxuICogQ29weXJpZ2h0IChDKSAyMDE1LXByZXNlbnQgQ2xvdWRCZWF0IExpbWl0ZWRcclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICovXHJcblxyXG4vKipcclxuICogQG5hbWUgZW1haWxcclxuICogQGRlc2NyaXB0aW9uIFByb3ZpZGVzIG1ldGhvZHMgZm9yIHdvcmtpbmcgd2l0aCBlbWFpbCB2aWEgSU1BUC5cclxuICovXHJcblxyXG5pbXBvcnQgT3hFcnJvciBmcm9tICcuLi9lcnJvcnMvT3h5Z2VuRXJyb3InO1xyXG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XHJcbmNvbnN0IG5vZGVtYWlsZXIgPSByZXF1aXJlKCdub2RlbWFpbGVyJyk7XHJcbmNvbnN0IGltYXBzID0gcmVxdWlyZSgnaW1hcC1zaW1wbGUnKTtcclxuY29uc3Qgc2ltcGxlUGFyc2VyID0gcmVxdWlyZSgnbWFpbHBhcnNlcicpLnNpbXBsZVBhcnNlcjtcclxuXHJcbmNvbnN0IGVyckhlbHBlciA9IHJlcXVpcmUoJy4uL2Vycm9ycy9oZWxwZXInKTtcclxuY29uc3QgQVVUSF9USU1FT1VUID0gMzAwMDA7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xyXG4gICAgdmFyIF9jb25maWc7XHJcbiAgICB2YXIgX3NtdHBDb25maWc7XHJcblxyXG4gICAgbW9kdWxlLmlzSW5pdGlhbGl6ZWQgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICByZXR1cm4gX2NvbmZpZyAhPT0gdW5kZWZpbmVkO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFNldCBlbWFpbCBjb25uZWN0aW9uIGRldGFpbHMuXHJcbiAgICAgKiBAZnVuY3Rpb24gaW5pdFxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHVzZXIgLSBVc2VybmFtZSAoZS5nLiAneW91ckBlbWFpbC5hZGRyZXNzJykuXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gcGFzc3dvcmQgLSBQYXNzd29yZC5cclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBob3N0IC0gSG9zdCBuYW1lIChlLmcuICdpbWFwLmdtYWlsLmNvbScpLlxyXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IHBvcnQgLSBQb3J0IG51bWJlciAoZS5nLiA5OTMpLlxyXG4gICAgICogQHBhcmFtIHtCb29sZWFufSB0bHMgLSB0cnVlIHRvIHVzZSBUTFMsIGZhbHNlIG90aGVyd2lzZS5cclxuICAgICAqIEBwYXJhbSB7TnVtYmVyPX0gYXV0aFRpbWVvdXQgLSBBdXRoZW50aWNhdGlvbiB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcy5cclxuICAgICAqIEBwYXJhbSB7Qm9vbGVhbj19IGVuYWJsZVNOSSAtIEVuYWJsZSBzZW5kaW5nIFNOSSB3aGVuIGVzdGFibGlzaGluZyB0aGUgY29ubmVjdGlvbi4gVGhpcyBpcyByZXF1aXJlZCBmb3Igc29tZSBtYWlsIHNlcnZlcnMuIERlZmF1bHQgaXMgZmFsc2UuIFxyXG4gICAgICovXHJcbiAgICBtb2R1bGUuaW5pdCA9IGZ1bmN0aW9uKHVzZXIsIHBhc3N3b3JkLCBob3N0LCBwb3J0LCB0bHMsIGF1dGhUaW1lb3V0ID0gQVVUSF9USU1FT1VULCBlbmFibGVTTkkgPSB1bmRlZmluZWQpIHtcclxuICAgICAgICB1dGlscy5hc3NlcnRBcmd1bWVudE5vbkVtcHR5U3RyaW5nKHVzZXIsICd1c2VyJyk7XHJcbiAgICAgICAgdXRpbHMuYXNzZXJ0QXJndW1lbnROb25FbXB0eVN0cmluZyhwYXNzd29yZCwgJ3Bhc3N3b3JkJyk7XHJcbiAgICAgICAgdXRpbHMuYXNzZXJ0QXJndW1lbnROb25FbXB0eVN0cmluZyhob3N0LCAnaG9zdCcpO1xyXG4gICAgICAgIHV0aWxzLmFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmUocG9ydCwgJ3BvcnQnKTtcclxuICAgICAgICB1dGlscy5hc3NlcnRBcmd1bWVudEJvb2wodGxzLCAndGxzJyk7XHJcbiAgICAgICAgdXRpbHMuYXNzZXJ0QXJndW1lbnROdW1iZXJOb25OZWdhdGl2ZShhdXRoVGltZW91dCwgJ2F1dGhUaW1lb3V0Jyk7XHJcblxyXG4gICAgICAgIF9jb25maWcgPSB7XHJcbiAgICAgICAgICAgIGltYXA6IHtcclxuICAgICAgICAgICAgICAgIHVzZXI6IHVzZXIsXHJcbiAgICAgICAgICAgICAgICBwYXNzd29yZDogcGFzc3dvcmQsXHJcbiAgICAgICAgICAgICAgICBob3N0OiBob3N0LFxyXG4gICAgICAgICAgICAgICAgcG9ydDogcG9ydCxcclxuICAgICAgICAgICAgICAgIHRsczogdGxzLFxyXG4gICAgICAgICAgICAgICAgYXV0aFRpbWVvdXQ6IGF1dGhUaW1lb3V0XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIF9zbXRwQ29uZmlnID0ge1xyXG4gICAgICAgICAgICB1c2VybmFtZTogdXNlcixcclxuICAgICAgICAgICAgcGFzc3dvcmQsXHJcbiAgICAgICAgICAgIGhvc3Q6IGhvc3QsXHJcbiAgICAgICAgICAgIHBvcnQsXHJcbiAgICAgICAgICAgIHRscyxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICAvLyBzZXQgc2VydmVybmFtZSBpZiBTTkkgaXMgZW5hYmxlZCBvciB3ZSBhcmUgdXNpbmcgR21haWxcclxuICAgICAgICBpZiAoZW5hYmxlU05JIHx8IGhvc3QgPT09ICdpbWFwLmdtYWlsLmNvbScpIHtcclxuICAgICAgICAgICAgX2NvbmZpZy5pbWFwLnRsc09wdGlvbnMgPSB7IHNlcnZlcm5hbWU6IGhvc3QgfTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgUmV0cmlldmVzIGxhc3QgdW5zZWVuIGVtYWlsLlxyXG4gICAgICogQGZ1bmN0aW9uIGdldExhc3RFbWFpbFxyXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IHNpbmNlTWludXRlcyAtIFNlYXJjaCBmb3IgZW1haWxzIHJlY2VpdmVkIHNpbmNlIHRoZSBzcGVjaWZpZWQgYW1vdW50IG9mIG1pbnV0ZXMgaW50byBwYXN0LlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd8UmVnZXh9IHN1YmplY3QgLSBSZXR1cm4gZW1haWwgbWF0Y2hpbmcgdGhlIHNwZWNpZmllZCBzdWJqZWN0LlxyXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IHRpbWVvdXQgLSBUaW1lb3V0IChpbiBtaWxsaXNlY29uZHMpIGZvciB3YWl0aW5nIGZvciB0aGUgbWVzc2FnZSB0byBhcnJpdmUuXHJcbiAgICAgKiBAcmV0dXJuIHtPYmplY3R9IEVtYWlsIGJvZHksIHRleHQsIHRleHRBc0h0bWwsIGF0dGFjaG1lbnRzIGlmIGFueSwgYW5kIFRPLCBGUk9NLCBTVUJKRUNULCBEQVRFIGhlYWRlcnMuXHJcbiAgICAgKiBAZXhhbXBsZSA8Y2FwdGlvbj5bamF2YXNjcmlwdF0gVXNhZ2UgZXhhbXBsZTwvY2FwdGlvbj5cclxuICAgICAqIGVtYWlsLmluaXQoJ1tZT1VSX0VNQUlMXUBnbWFpbC5jb20nLCAncGFzc3dvcmQnLCAnaW1hcC5nbWFpbC5jb20nLCA5OTMsIHRydWUsIDMwMDApO1xyXG4gICAgICogdmFyIG1haWwgPSBlbWFpbC5nZXRMYXN0RW1haWwoNjAsICdlbWFpbCBzdWJqZWN0JywgNTAwMCk7XHJcbiAgICAgKiBsb2cuaW5mbyhtYWlsKTtcclxuICAgICAqIFxyXG4gICAgICogaWYoci5hdHRhY2htZW50cyAmJiByLmF0dGFjaG1lbnRzLmxlbmd0aCA+IDApe1xyXG4gICAgICogXHRjb25zdCBmcyA9IHJlcXVpcmUoJ2ZzJyk7XHJcbiAgICAgKiBcdHIuYXR0YWNobWVudHMubWFwKChhdHRhY2htZW50KSA9PiB7XHJcbiAgICAgKiBcdFx0bGV0IGZpbGVEZXNjcmlwdG9yO1xyXG4gICAgICogXHRcdHRyeXtcclxuICAgICAqIFx0XHRcdGZpbGVEZXNjcmlwdG9yID0gZnMub3BlblN5bmMoYXR0YWNobWVudC5maWxlbmFtZSwgJ3cnKTtcclxuICAgICAqIFx0XHR9IGNhdGNoKGUpIHtcclxuICAgICAqIFx0XHRcdHRocm93ICdjb3VsZCBub3Qgb3BlbiBmaWxlOiAnICsgZTtcclxuICAgICAqIFx0XHR9XHJcbiAgICAgKiBcdFx0XHJcbiAgICAgKiBcdFx0dHJ5e1xyXG4gICAgICogXHRcdFx0ZnMud3JpdGVGaWxlU3luYyhmaWxlRGVzY3JpcHRvciwgYXR0YWNobWVudC5kYXRhKTtcclxuICAgICAqIFx0XHR9IGNhdGNoKGUpIHtcclxuICAgICAqIFx0XHRcdHRocm93ICdlcnJvciB3cml0aW5nIGZpbGU6ICcgKyBlO1xyXG4gICAgICogXHRcdH1cclxuICAgICAqIFx0XHRcclxuICAgICAqIFx0XHRmcy5jbG9zZVN5bmMoZmlsZURlc2NyaXB0b3IpO1xyXG4gICAgICogXHR9KTtcclxuICAgICAqIH1cclxuICAgICAqL1xyXG4gICAgbW9kdWxlLmdldExhc3RFbWFpbCA9IGFzeW5jIGZ1bmN0aW9uKHNpbmNlTWludXRlcywgc3ViamVjdCwgdGltZW91dCkge1xyXG4gICAgICAgIHV0aWxzLmFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmUoc2luY2VNaW51dGVzLCAnc2luY2VNaW51dGVzJyk7XHJcbiAgICAgICAgdXRpbHMuYXNzZXJ0QXJndW1lbnROdW1iZXJOb25OZWdhdGl2ZSh0aW1lb3V0LCAndGltZW91dCcpO1xyXG5cclxuICAgICAgICB2YXIgbWFpbDtcclxuICAgICAgICB2YXIgbm93ID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKTtcclxuICAgICAgICB2YXIgZXJyO1xyXG5cclxuICAgICAgICB3aGlsZSAoIWVyciAmJiAhbWFpbCAmJiAoKG5ldyBEYXRlKCkpLmdldFRpbWUoKSAtIG5vdykgPCB0aW1lb3V0KSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb25uZWN0aW9uID0gYXdhaXQgaW1hcHMuY29ubmVjdChfY29uZmlnKTtcclxuICAgICAgICAgICAgICAgIGF3YWl0IGNvbm5lY3Rpb24ub3BlbkJveCgnSU5CT1gnKTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBmZXRjaCB1bnNlZW4gZW1haWxzIGZyb20gdGhlIGxhc3Qgc2luY2VNaW51dGVzXHJcbiAgICAgICAgICAgICAgICB2YXIgc3RhcnREYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgICAgICAgICAgIHN0YXJ0RGF0ZS5zZXRUaW1lKERhdGUubm93KCkgLSAoc2luY2VNaW51dGVzICogNjAgKiAxMDAwKSk7XHJcbiAgICAgICAgICAgICAgICBzdGFydERhdGUgPSBzdGFydERhdGUudG9JU09TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIHZhciBzZWFyY2hDcml0ZXJpYSA9IFsnVU5TRUVOJywgWydTSU5DRScsIHN0YXJ0RGF0ZV1dO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIGZldGNoIGNlcnRhaW4gaGVhZGVycyBhbmQgc3RyaXBwZWQgZG93biBib2R5XHJcbiAgICAgICAgICAgICAgICB2YXIgZmV0Y2hPcHRpb25zID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGJvZGllczogWydIRUFERVIuRklFTERTIChGUk9NIFRPIFNVQkpFQ1QgREFURSknLCAnVEVYVCddLFxyXG4gICAgICAgICAgICAgICAgICAgIHN0cnVjdDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICBtYXJrU2VlbjogZmFsc2VcclxuICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IGNvbm5lY3Rpb24uc2VhcmNoKHNlYXJjaENyaXRlcmlhLCBmZXRjaE9wdGlvbnMpO1xyXG5cclxuICAgICAgICAgICAgICAgIGZvciAodmFyIHJlc3VsdCBvZiByZXN1bHRzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaGVhZGVyUGFydCA9IF8uZmluZChyZXN1bHQucGFydHMsIHsgJ3doaWNoJzogZmV0Y2hPcHRpb25zLmJvZGllc1swXSB9KTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBib2R5UGFydCA9IF8uZmluZChyZXN1bHQucGFydHMsIHsgJ3doaWNoJzogZmV0Y2hPcHRpb25zLmJvZGllc1sxXSB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaWQgPSByZXN1bHQuYXR0cmlidXRlcy51aWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaWRIZWFkZXIgPSAnSW1hcC1JZDogJytpZCsnXFxyXFxuJztcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzaW1wbGUgPSBhd2FpdCBzaW1wbGVQYXJzZXIoaWRIZWFkZXIrYm9keVBhcnQuYm9keSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXR0YWNobWVudHMgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJ0cyA9IGltYXBzLmdldFBhcnRzKHJlc3VsdC5hdHRyaWJ1dGVzLnN0cnVjdCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcGFydCBvZiBwYXJ0cykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFydC5kaXNwb3NpdGlvbiAmJiBwYXJ0LmRpc3Bvc2l0aW9uLnR5cGUudG9VcHBlckNhc2UoKSA9PT0gJ0FUVEFDSE1FTlQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJ0RGF0YSA9IGF3YWl0IGNvbm5lY3Rpb24uZ2V0UGFydERhdGEocmVzdWx0LCBwYXJ0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lOiBwYXJ0LmRpc3Bvc2l0aW9uLnBhcmFtcy5maWxlbmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBwYXJ0RGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBib2R5O1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBodG1sO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCB0ZXh0QXNIdG1sO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzaW1wbGUuaHRtbCB8fCBzaW1wbGUudGV4dCB8fCBzaW1wbGUudGV4dEFzSHRtbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBwYXJzZWQgc3VjY2Vzc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5ID0gYm9keVBhcnQudGV4dDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaHRtbCA9IHNpbXBsZS5odG1sO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0QXNIdG1sID0gc2ltcGxlLnRleHRBc0h0bWw7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG9uJ3QgcGFyc2VkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkgPSBib2R5UGFydC5ib2R5O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhlYWRlclBhcnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViamVjdCAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN1YmplY3QuY29uc3RydWN0b3IubmFtZSA9PT0gJ1JlZ0V4cCcgJiYgc3ViamVjdC50ZXN0KGhlYWRlclBhcnQuYm9keS5zdWJqZWN0WzBdKSkgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3ViamVjdCA9PT0gaGVhZGVyUGFydC5ib2R5LnN1YmplY3RbMF0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRvID0gaGVhZGVyUGFydC5ib2R5LnRvID8gaGVhZGVyUGFydC5ib2R5LnRvWzBdIDogbnVsbDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWlsID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb206IGhlYWRlclBhcnQuYm9keS5mcm9tWzBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvOiB0byxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJqZWN0OiBoZWFkZXJQYXJ0LmJvZHkuc3ViamVjdFswXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlOiBoZWFkZXJQYXJ0LmJvZHkuZGF0ZVswXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBib2R5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRzOiBhdHRhY2htZW50cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0QXNIdG1sOiB0ZXh0QXNIdG1sLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWw6IGh0bWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIGVyciA9IGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5FTUFJTF9FUlJPUiwgZXJyLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoIW1haWwpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5USU1FT1VULCBcIkNvdWxkbid0IGdldCBhbiBlbWFpbCB3aXRoaW4gXCIgKyB0aW1lb3V0ICsgJyBtcy4nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBtYWlsO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFNlbmQgZW1haWwgdXNpbmcgU01UUC5cclxuICAgICAqIEBmdW5jdGlvbiBzZW5kXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ3xBcnJheX0gdG8gLSBSZWNlaXZlcidzIGVtYWlsIGFkZHJlc3MuXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gc3ViamVjdCAtIEVtYWlsIHN1YmplY3QuXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gY29udGVudCAtIEVtYWlsIGJvZHkgYXMgYSBwbGFpbiB0ZXh0LlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmc9fSBodG1sIC0gT3B0aW9uYWwsIEVtYWlsIGJvZHkgYXMgSFRNTC5cclxuICAgICAqL1xyXG4gICAgbW9kdWxlLnNlbmQgPSBhc3luYyBmdW5jdGlvbih0bywgc3ViamVjdCwgY29udGVudCwgaHRtbCA9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGxldCBlcnIgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgLy8gQ3JlYXRlIGEgU01UUCB0cmFuc3BvcnRlciBvYmplY3RcclxuICAgICAgICAgICAgY29uc3QgdHJhbnNwb3J0ZXIgPSBub2RlbWFpbGVyLmNyZWF0ZVRyYW5zcG9ydCh7XHJcbiAgICAgICAgICAgICAgICBob3N0OiBfc210cENvbmZpZy5ob3N0LFxyXG4gICAgICAgICAgICAgICAgcG9ydDogX3NtdHBDb25maWcucG9ydCxcclxuICAgICAgICAgICAgICAgIHNlY3VyZTogX3NtdHBDb25maWcudGxzLFxyXG4gICAgICAgICAgICAgICAgYXV0aDoge1xyXG4gICAgICAgICAgICAgICAgICAgIHVzZXI6IF9zbXRwQ29uZmlnLnVzZXJuYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIHBhc3M6IF9zbXRwQ29uZmlnLnBhc3N3b3JkLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHNlbmRtYWlsOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGxvZ2dlcjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICB0cmFuc2FjdGlvbkxvZzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBkZWJ1ZzogZmFsc2UsXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgLy8gTWVzc2FnZSBvYmplY3RcclxuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHtcclxuICAgICAgICAgICAgICAgIHRvOiB0byxcclxuICAgICAgICAgICAgICAgIC8vIFN1YmplY3Qgb2YgdGhlIG1lc3NhZ2VcclxuICAgICAgICAgICAgICAgIHN1YmplY3Q6IHN1YmplY3QgfHwgJycsXHJcbiAgICAgICAgICAgICAgICAvLyBwbGFpbnRleHQgYm9keVxyXG4gICAgICAgICAgICAgICAgdGV4dDogY29udGVudCxcclxuICAgICAgICAgICAgICAgIC8vIEhUTUwgYm9keVxyXG4gICAgICAgICAgICAgICAgaHRtbDogaHRtbCxcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIGF3YWl0IHRyYW5zcG9ydGVyLnNlbmRNYWlsKG1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBlcnIgPSBlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuRU1BSUxfRVJST1IsIGVyci50b1N0cmluZygpKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBtb2R1bGU7XHJcbn07XHJcbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oxygen-cli",
3
- "version": "1.34.2",
3
+ "version": "1.35.0",
4
4
  "description": "Automation framework for testing modern applications",
5
5
  "main": "./build/index.js",
6
6
  "bin": {
@@ -72,14 +72,14 @@
72
72
  "cucumber": "6.0.5",
73
73
  "deasync": "0.1.28",
74
74
  "decache": "4.6.2",
75
- "des.js": "^1.1.0",
75
+ "des.js": "1.1.0",
76
76
  "download": "8.0.0",
77
77
  "easyxml": "2.0.1",
78
78
  "ejs": "3.1.9",
79
79
  "esm": "3.2.25",
80
80
  "fast-xml-parser": "4.2.5",
81
81
  "fibers": "5.0.3",
82
- "form-data": "^4.0.0",
82
+ "form-data": "4.0.0",
83
83
  "glob": "7.2.3",
84
84
  "glob-to-regexp": "0.4.1",
85
85
  "global-agent": "3.0.0",
@@ -87,7 +87,7 @@
87
87
  "imap-simple": "5.1.0",
88
88
  "is-glob": "4.0.3",
89
89
  "jimp": "0.16.3",
90
- "js-md4": "^0.3.2",
90
+ "js-md4": "0.3.2",
91
91
  "junit-report-builder": "3.0.1",
92
92
  "lodash": "4.17.21",
93
93
  "mailparser": "3.5.0",
@@ -95,6 +95,7 @@
95
95
  "mockery": "2.1.0",
96
96
  "moment": "2.29.4",
97
97
  "node-addon-api": "3.0.2",
98
+ "nodemailer": "6.9.13",
98
99
  "object-hash": "3.0.0",
99
100
  "objects-to-csv": "1.3.6",
100
101
  "pdf2json": "1.2.5",