oxygen-cli 1.23.2 → 1.24.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,13 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v1.24.0 (2022-07-19)
4
+
5
+ #### :tada: New Feature
6
+ * Add `twilio.getLastSentApiSms` (by Akiva Brookler).
7
+
8
+ #### :house: Internal
9
+ * Bump dependencies.
10
+
3
11
  ## v1.23.2 (2022-06-17)
4
12
 
5
13
  #### :beetle: Bug Fix
@@ -122,6 +122,74 @@ module.exports = function () {
122
122
 
123
123
  return msg.body;
124
124
  };
125
+ /**
126
+ * @summary Retrieves last SMS message sent from API.
127
+ * @function getLastSentApiSms
128
+ * @param {Boolean} removeOnRead - Specifies whether to delete the message after reading it.
129
+ * @param {Number} timeout - Timeout in milliseconds for waiting for the message to arrive.
130
+ * @param {Number=} notOlderThan - Retrieve message only if it arrived not before the given time (in ms). Default is 4 minutes.
131
+ * @return {String} SMS text.
132
+ */
133
+
134
+
135
+ module.getLastSentApiSms = async function (removeOnRead, timeout, notOlderThan) {
136
+ helpers.assertArgumentBool(removeOnRead, 'removeOnRead');
137
+ helpers.assertArgumentNumberNonNegative(timeout, 'timeout');
138
+
139
+ if (!notOlderThan) {
140
+ notOlderThan = 4 * 60 * 1000;
141
+ }
142
+
143
+ var msg;
144
+ var now = Date.now();
145
+ var earliestMessageDate = new Date(now - notOlderThan);
146
+
147
+ while (!msg && Date.now() - now < timeout) {
148
+ await (() => {
149
+ return new Promise((resolve, reject) => {
150
+ _client.messages.list({
151
+ dateSentAfter: earliestMessageDate
152
+ }, function (err, messages) {
153
+ var _msg;
154
+
155
+ if (messages && typeof messages[Symbol.iterator] === 'function') {
156
+ for (_msg of messages) {
157
+ if (_msg.direction == 'outbound-api') {
158
+ var _msgDate = Date.parse(_msg.dateCreated); // if message is newer than the previous one - save it
159
+
160
+
161
+ if (msg && Date.parse(msg.dateCreated) < _msgDate) {
162
+ msg = _msg;
163
+ } else if (!msg) {
164
+ msg = _msg;
165
+ }
166
+ }
167
+ }
168
+ }
169
+
170
+ resolve();
171
+ });
172
+ });
173
+ })();
174
+ await _util.default.sleep(800);
175
+ }
176
+
177
+ if (!msg) {
178
+ throw new OxError(errHelper.errorCode.TWILIO_ERROR, "Couldn't get the SMS within " + timeout + 'ms.');
179
+ }
180
+
181
+ if (removeOnRead) {
182
+ await (() => {
183
+ return new Promise((resolve, reject) => {
184
+ _client.messages(msg.sid).remove().then(() => {
185
+ resolve();
186
+ });
187
+ });
188
+ })();
189
+ }
190
+
191
+ return msg.body;
192
+ };
125
193
  /**
126
194
  * @summary Send an SMS.
127
195
  * @function sendSms
@@ -189,4 +257,4 @@ module.exports = function () {
189
257
 
190
258
  return module;
191
259
  };
192
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS10d2lsaW8uanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsInV0aWxzIiwicmVxdWlyZSIsIk94RXJyb3IiLCJPeEVycm9yQ29udHNydWN0b3IiLCJlcnJIZWxwZXIiLCJoZWxwZXJzIiwiX2NsaWVudCIsImlzSW5pdGlhbGl6ZWQiLCJ1bmRlZmluZWQiLCJpbml0IiwiYWNjb3VudFNpZCIsImF1dGhUb2tlbiIsImdldExhc3RTbXMiLCJyZW1vdmVPblJlYWQiLCJ0aW1lb3V0Iiwibm90T2xkZXJUaGFuIiwiZnJvbU51bWJlciIsImFzc2VydEFyZ3VtZW50Qm9vbCIsImFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmUiLCJhc3NlcnRBcmd1bWVudFN0cmluZyIsIm1zZyIsIm5vdyIsIkRhdGUiLCJlYXJsaWVzdE1lc3NhZ2VEYXRlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJtZXNzYWdlcyIsImxpc3QiLCJkYXRlU2VudEFmdGVyIiwiZXJyIiwiX21zZyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiZGlyZWN0aW9uIiwiZnJvbSIsIl9tc2dEYXRlIiwicGFyc2UiLCJkYXRlQ3JlYXRlZCIsImxpYlV0aWxzIiwic2xlZXAiLCJlcnJvckNvZGUiLCJUV0lMSU9fRVJST1IiLCJzaWQiLCJyZW1vdmUiLCJ0aGVuIiwiYm9keSIsInNlbmRTbXMiLCJ0byIsIm1lc3NhZ2UiLCJhc3NlcnRBcmd1bWVudE5vbkVtcHR5U3RyaW5nIiwicmVzcG9uc2UiLCJjcmVhdGUiLCJjYXRjaCIsIm1vcmVJbmZvIiwiY29kZSIsImFzc2VydEFyZ3VtZW50IiwidmFsIiwibmFtZSIsImNhbGwiLCJhc3NlcnRBcmd1bWVudE51bWJlciIsImFzc2VydEFyZ3VtZW50Qm9vbE9wdGlvbmFsIiwiYXNzZXJ0QXJndW1lbnRUaW1lb3V0Il0sIm1hcHBpbmdzIjoiOzs7O0FBYUE7O0FBQ0E7Ozs7QUFkQTtBQUNBO0FB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Q0FBc0MsSUFBdEMsRUFBNENGLEdBQTVDLEVBQWlEQyxJQUFqRCxDQUFwRDs7QUFDQXJELEVBQUFBLE9BQU8sQ0FBQ3lELHFCQUFSLEdBQWdDLENBQUNMLEdBQUQsRUFBTUMsSUFBTixLQUFlMUQsS0FBSyxDQUFDOEQscUJBQU4sQ0FBNEJILElBQTVCLENBQWlDLElBQWpDLEVBQXVDRixHQUF2QyxFQUE0Q0MsSUFBNUMsQ0FBL0M7O0FBRUEsU0FBTzVELE1BQVA7QUFDSCxDQWpKRCIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoQykgMjAxNS1wcmVzZW50IENsb3VkQmVhdCBMaW1pdGVkXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIEBuYW1lIHR3aWxpb1xyXG4gKiBAZGVzY3JpcHRpb24gUHJvdmlkZXMgbWV0aG9kcyBmb3Igd29ya2luZyB3aXRoIFR3aWxpbyBzZXJ2aWNlLlxyXG4gKi9cclxuaW1wb3J0IE94RXJyb3JDb250c3J1Y3RvciBmcm9tICcuLi9lcnJvcnMvT3h5Z2VuRXJyb3InO1xyXG5pbXBvcnQgbGliVXRpbHMgZnJvbSAnLi4vbGliL3V0aWwnO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcclxuICAgIGNvbnN0IHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xyXG4gICAgY29uc3QgT3hFcnJvciA9IHRoaXMuT3hFcnJvciA9IE94RXJyb3JDb250c3J1Y3RvcjtcclxuICAgIGNvbnN0IGVyckhlbHBlciA9IHRoaXMuZXJySGVscGVyID0gcmVxdWlyZSgnLi4vZXJyb3JzL2hlbHBlcicpO1xyXG4gICAgY29uc3QgaGVscGVycyA9IHRoaXMuaGVscGVycyA9IHt9O1xyXG5cclxuICAgIHZhciBfY2xpZW50O1xyXG5cclxuICAgIG1vZHVsZS5pc0luaXRpYWxpemVkID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIF9jbGllbnQgIT09IHVuZGVmaW5lZDtcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBTZXQgVHdpbGlvIGF1dGhlbnRpY2F0aW9uIGRldGFpbHMuXHJcbiAgICAgKiBAZnVuY3Rpb24gaW5pdFxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IGFjY291bnRTaWQgLSBBY2NvdW50IFNJRC5cclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBhdXRoVG9rZW4gLSBBdXRoZW50aWNhdGlvbiB0b2tlbi5cclxuICAgICAqL1xyXG4gICAgbW9kdWxlLmluaXQgPSBmdW5jdGlvbihhY2NvdW50U2lkLCBhdXRoVG9rZW4pIHtcclxuICAgICAgICBfY2xpZW50ID0gcmVxdWlyZSgndHdpbGlvJykoYWNjb3VudFNpZCwgYXV0aFRva2VuKTtcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBSZXRyaWV2ZXMgbGFzdCBTTVMgbWVzc2FnZS5cclxuICAgICAqIEBmdW5jdGlvbiBnZXRMYXN0U21zXHJcbiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IHJlbW92ZU9uUmVhZCAtIFNwZWNpZmllcyB3aGV0aGVyIHRvIGRlbGV0ZSB0aGUgbWVzc2FnZSBhZnRlciByZWFkaW5nIGl0LlxyXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IHRpbWVvdXQgLSBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3Igd2FpdGluZyBmb3IgdGhlIG1lc3NhZ2UgdG8gYXJyaXZlLlxyXG4gICAgICogQHBhcmFtIHtOdW1iZXI9fSBub3RPbGRlclRoYW4gLSBSZXRyaWV2ZSBtZXNzYWdlIG9ubHkgaWYgaXQgYXJyaXZlZCBub3QgYmVmb3JlIHRoZSBnaXZlbiB0aW1lIChpbiBtcykuIERlZmF1bHQgaXMgNCBtaW51dGVzLlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmc9fSBmcm9tTnVtYmVyIC0gRnJvbSBudW1iZXIgdG8gZmlsdGVyIG1lc3NhZ2VcclxuICAgICAqIEByZXR1cm4ge1N0cmluZ30gU01TIHRleHQuXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5nZXRMYXN0U21zID0gYXN5bmMgZnVuY3Rpb24ocmVtb3ZlT25SZWFkLCB0aW1lb3V0LCBub3RPbGRlclRoYW4sIGZyb21OdW1iZXIpIHtcclxuICAgICAgICBoZWxwZXJzLmFzc2VydEFyZ3VtZW50Qm9vbChyZW1vdmVPblJlYWQsICdyZW1vdmVPblJlYWQnKTtcclxuICAgICAgICBoZWxwZXJzLmFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmUodGltZW91dCwgJ3RpbWVvdXQnKTtcclxuICAgICAgICBpZiAoZnJvbU51bWJlcikge1xyXG4gICAgICAgICAgICBoZWxwZXJzLmFzc2VydEFyZ3VtZW50U3RyaW5nKGZyb21OdW1iZXIsICdmcm9tTnVtYmVyJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIW5vdE9sZGVyVGhhbikge1xyXG4gICAgICAgICAgICBub3RPbGRlclRoYW4gPSA0KjYwKjEwMDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBtc2c7XHJcbiAgICAgICAgdmFyIG5vdyA9IERhdGUubm93KCk7XHJcbiAgICAgICAgdmFyIGVhcmxpZXN0TWVzc2FnZURhdGUgPSBuZXcgRGF0ZShub3cgLSBub3RPbGRlclRoYW4pO1xyXG4gICAgICAgIHdoaWxlICghbXNnICYmIChEYXRlLm5vdygpIC0gbm93KSA8IHRpbWVvdXQpIHtcclxuICAgICAgICAgICAgYXdhaXQgKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgX2NsaWVudC5tZXNzYWdlcy5saXN0KHsgZGF0ZVNlbnRBZnRlcjogZWFybGllc3RNZXNzYWdlRGF0ZSB9LCBmdW5jdGlvbihlcnIsIG1lc3NhZ2VzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfbXNnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobWVzc2FnZXMgJiYgdHlwZW9mIG1lc3NhZ2VzW1N5bWJvbC5pdGVyYXRvcl0gPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoX21zZyBvZiBtZXNzYWdlcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfbXNnLmRpcmVjdGlvbiA9PSAnaW5ib3VuZCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZyb21OdW1iZXIgJiYgX21zZy5mcm9tICE9PSBmcm9tTnVtYmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZ25vcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfbXNnRGF0ZSA9IERhdGUucGFyc2UoX21zZy5kYXRlQ3JlYXRlZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBtZXNzYWdlIGlzIG5ld2VyIHRoYW4gdGhlIHByZXZpb3VzIG9uZSAtIHNhdmUgaXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtc2cgJiYgRGF0ZS5wYXJzZShtc2cuZGF0ZUNyZWF0ZWQpIDwgX21zZ0RhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSBfbXNnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghbXNnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gX21zZztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSkoKTtcclxuICAgICAgICAgICAgYXdhaXQgbGliVXRpbHMuc2xlZXAoODAwKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghbXNnKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuVFdJTElPX0VSUk9SLCBcIkNvdWxkbid0IGdldCB0aGUgU01TIHdpdGhpbiBcIiArIHRpbWVvdXQgKyAnbXMuJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocmVtb3ZlT25SZWFkKSB7XHJcbiAgICAgICAgICAgIGF3YWl0ICgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIF9jbGllbnQubWVzc2FnZXMobXNnLnNpZCkucmVtb3ZlKCkudGhlbigoKSA9PiB7IHJlc29sdmUoKTsgfSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSkoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBtc2cuYm9keTtcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBTZW5kIGFuIFNNUy5cclxuICAgICAqIEBmdW5jdGlvbiBzZW5kU21zXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gZnJvbSAtIFBob25lIG51bWJlciB0byBzZW5kIGZyb20uXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gdG8gLSBQaG9uZSBudW1iZXIgdG8gc2VuZCB0by5cclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlIC0gTWVzc2FnZSB0byBzZW5kLlxyXG4gICAgICogQHJldHVybiB7U3RyaW5nfSBNZXNzYWdlIFNJRC5cclxuICAgICAqIEBleGFtcGxlIDxjYXB0aW9uPltqYXZhc2NyaXB0XSBVc2FnZSBleGFtcGxlPC9jYXB0aW9uPlxyXG4gICAgICogdHdpbGlvLmluaXQoJ0FjY291bnQgU2lkJywgJ0FjY291bnQgVG9rZW4nKTtcclxuICAgICAqIHR3aWxpby5zZW5kU21zKCcrMXh4eHh4eHh4eHgnLCAnKzk3Mnh4eHh4eHh4eCcsICdIZWxsbyBXb3JsZCEnKTtcclxuICAgICAqL1xyXG4gICAgbW9kdWxlLnNlbmRTbXMgPSBhc3luYyBmdW5jdGlvbihmcm9tLCB0bywgbWVzc2FnZSkge1xyXG4gICAgICAgIGhlbHBlcnMuYXNzZXJ0QXJndW1lbnROb25FbXB0eVN0cmluZyhmcm9tLCAnZnJvbScpO1xyXG4gICAgICAgIGhlbHBlcnMuYXNzZXJ0QXJndW1lbnROb25FbXB0eVN0cmluZyh0bywgJ3RvJyk7XHJcbiAgICAgICAgaGVscGVycy5hc3NlcnRBcmd1bWVudE5vbkVtcHR5U3RyaW5nKG1lc3NhZ2UsICdtZXNzYWdlJyk7XHJcblxyXG4gICAgICAgIHZhciByZXNwb25zZSA9IG51bGw7XHJcblxyXG4gICAgICAgIGF3YWl0ICgoKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBfY2xpZW50Lm1lc3NhZ2VzLmNyZWF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgYm9keTogbWVzc2FnZSxcclxuICAgICAgICAgICAgICAgICAgICBmcm9tOiBmcm9tLFxyXG4gICAgICAgICAgICAgICAgICAgIHRvOiB0b1xyXG4gICAgICAgICAgICAgICAgfSkudGhlbihtZXNzYWdlID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IG1lc3NhZ2Uuc2lkO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgIH0pLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBlcnI7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pKCk7XHJcblxyXG4gICAgICAgIGlmIChyZXNwb25zZS5tZXNzYWdlKSB7XHJcbiAgICAgICAgICAgIHZhciBtc2cgPSByZXNwb25zZS5tZXNzYWdlO1xyXG4gICAgICAgICAgICBpZiAocmVzcG9uc2UubW9yZUluZm8pIHtcclxuICAgICAgICAgICAgICAgIG1zZyArPSAnIEZvciBtb3JlIGluZm86ICcgKyByZXNwb25zZS5tb3JlSW5mbztcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXNwb25zZS5jb2RlKSB7XHJcbiAgICAgICAgICAgICAgICBtc2cgPSAnVW5hYmxlIHRvIGNvbm5lY3QgdG8gVHdpbGlvOiAnICsgbXNnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuVFdJTElPX0VSUk9SLCBtc2cpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgfTtcclxuXHJcbiAgICBoZWxwZXJzLmFzc2VydEFyZ3VtZW50ID0gKHZhbCwgbmFtZSkgPT4gdXRpbHMuYXNzZXJ0QXJndW1lbnQuY2FsbCh0aGlzLCB2YWwsIG5hbWUpO1xyXG4gICAgaGVscGVycy5hc3NlcnRBcmd1bWVudE5vbkVtcHR5U3RyaW5nID0gKHZhbCwgbmFtZSkgPT4gdXRpbHMuYXNzZXJ0QXJndW1lbnROb25FbXB0eVN0cmluZy5jYWxsKHRoaXMsIHZhbCwgbmFtZSk7XHJcbiAgICBoZWxwZXJzLmFzc2VydEFyZ3VtZW50U3RyaW5nID0gKHZhbCwgbmFtZSkgPT4gdXRpbHMuYXNzZXJ0QXJndW1lbnRTdHJpbmcuY2FsbCh0aGlzLCB2YWwsIG5hbWUpO1xyXG4gICAgaGVscGVycy5hc3NlcnRBcmd1bWVudE51bWJlciA9ICh2YWwsIG5hbWUpID0+IHV0aWxzLmFzc2VydEFyZ3VtZW50TnVtYmVyLmNhbGwodGhpcywgdmFsLCBuYW1lKTtcclxuICAgIGhlbHBlcnMuYXNzZXJ0QXJndW1lbnROdW1iZXJOb25OZWdhdGl2ZSA9ICh2YWwsIG5hbWUpID0+IHV0aWxzLmFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmUuY2FsbCh0aGlzLCB2YWwsIG5hbWUpO1xyXG4gICAgaGVscGVycy5hc3NlcnRBcmd1bWVudEJvb2wgPSAodmFsLCBuYW1lKSA9PiB1dGlscy5hc3NlcnRBcmd1bWVudEJvb2wuY2FsbCh0aGlzLCB2YWwsIG5hbWUpO1xyXG4gICAgaGVscGVycy5hc3NlcnRBcmd1bWVudEJvb2xPcHRpb25hbCA9ICh2YWwsIG5hbWUpID0+IHV0aWxzLmFzc2VydEFyZ3VtZW50Qm9vbE9wdGlvbmFsLmNhbGwodGhpcywgdmFsLCBuYW1lKTtcclxuICAgIGhlbHBlcnMuYXNzZXJ0QXJndW1lbnRUaW1lb3V0ID0gKHZhbCwgbmFtZSkgPT4gdXRpbHMuYXNzZXJ0QXJndW1lbnRUaW1lb3V0LmNhbGwodGhpcywgdmFsLCBuYW1lKTtcclxuXHJcbiAgICByZXR1cm4gbW9kdWxlO1xyXG59O1xyXG4iXX0=
260
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS10d2lsaW8uanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsInV0aWxzIiwicmVxdWlyZSIsIk94RXJyb3IiLCJPeEVycm9yQ29udHNydWN0b3IiLCJlcnJIZWxwZXIiLCJoZWxwZXJzIiwiX2NsaWVudCIsImlzSW5pdGlhbGl6ZWQiLCJ1bmRlZmluZWQiLCJpbml0IiwiYWNjb3VudFNpZCIsImF1dGhUb2tlbiIsImdldExhc3RTbXMiLCJyZW1vdmVPblJlYWQiLCJ0aW1lb3V0Iiwibm90T2xkZXJUaGFuIiwiZnJvbU51bWJlciIsImFzc2VydEFyZ3VtZW50Qm9vbCIsImFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmUiLCJhc3NlcnRBcmd1bWVudFN0cmluZyIsIm1zZyIsIm5vdyIsIkRhdGUiLCJlYXJsaWVzdE1lc3NhZ2VEYXRlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJtZXNzYWdlcyIsImxpc3QiLCJkYXRlU2VudEFmdGVyIiwiZXJyIiwiX21zZyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiZGlyZWN0aW9uIiwiZnJvbSIsIl9tc2dEYXRlIiwicGFyc2UiLCJkYXRlQ3JlYXRlZCIsImxpYlV0aWxzIiwic2xlZXAiLCJlcnJvckNvZGUiLCJUV0lMSU9fRVJST1IiLCJzaWQiLCJyZW1vdmUiLCJ0aGVuIiwiYm9keSIsImdldExhc3RTZW50QXBpU21zIiwic2VuZFNtcyIsInRvIiwibWVzc2FnZSIsImFzc2VydEFyZ3VtZW50Tm9uRW1wdHlTdHJpbmciLCJyZXNwb25zZSIsImNyZWF0ZSIsImNhdGNoIiwibW9yZUluZm8iLCJjb2RlIiwiYXNzZXJ0QXJndW1lbnQiLCJ2YWwiLCJuYW1lIiwiY2FsbCIsImFzc2VydEFyZ3VtZW50TnVtYmVyIiwiYXNzZXJ0QXJndW1lbnRCb29sT3B0aW9uYWwiLCJhc3NlcnRBcmd1bWVudFRpbWVvdXQiXSwibWFwcGluZ3MiOiI7Ozs7QUFhQTs7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R0FBRCxFQUFNQyxJQUFOLEtBQWUzRCxLQUFLLENBQUMrRCxxQkFBTixDQUE0QkgsSUFBNUIsQ0FBaUMsSUFBakMsRUFBdUNGLEdBQXZDLEVBQTRDQyxJQUE1QyxDQUEvQzs7QUFFQSxTQUFPN0QsTUFBUDtBQUNILENBbk5EIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChDKSAyMDE1LXByZXNlbnQgQ2xvdWRCZWF0IExpbWl0ZWRcclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICovXHJcblxyXG4vKipcclxuICogQG5hbWUgdHdpbGlvXHJcbiAqIEBkZXNjcmlwdGlvbiBQcm92aWRlcyBtZXRob2RzIGZvciB3b3JraW5nIHdpdGggVHdpbGlvIHNlcnZpY2UuXHJcbiAqL1xyXG5pbXBvcnQgT3hFcnJvckNvbnRzcnVjdG9yIGZyb20gJy4uL2Vycm9ycy9PeHlnZW5FcnJvcic7XHJcbmltcG9ydCBsaWJVdGlscyBmcm9tICcuLi9saWIvdXRpbCc7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xyXG4gICAgY29uc3QgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XHJcbiAgICBjb25zdCBPeEVycm9yID0gdGhpcy5PeEVycm9yID0gT3hFcnJvckNvbnRzcnVjdG9yO1xyXG4gICAgY29uc3QgZXJySGVscGVyID0gdGhpcy5lcnJIZWxwZXIgPSByZXF1aXJlKCcuLi9lcnJvcnMvaGVscGVyJyk7XHJcbiAgICBjb25zdCBoZWxwZXJzID0gdGhpcy5oZWxwZXJzID0ge307XHJcblxyXG4gICAgdmFyIF9jbGllbnQ7XHJcblxyXG4gICAgbW9kdWxlLmlzSW5pdGlhbGl6ZWQgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICByZXR1cm4gX2NsaWVudCAhPT0gdW5kZWZpbmVkO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFNldCBUd2lsaW8gYXV0aGVudGljYXRpb24gZGV0YWlscy5cclxuICAgICAqIEBmdW5jdGlvbiBpbml0XHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gYWNjb3VudFNpZCAtIEFjY291bnQgU0lELlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IGF1dGhUb2tlbiAtIEF1dGhlbnRpY2F0aW9uIHRva2VuLlxyXG4gICAgICovXHJcbiAgICBtb2R1bGUuaW5pdCA9IGZ1bmN0aW9uKGFjY291bnRTaWQsIGF1dGhUb2tlbikge1xyXG4gICAgICAgIF9jbGllbnQgPSByZXF1aXJlKCd0d2lsaW8nKShhY2NvdW50U2lkLCBhdXRoVG9rZW4pO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFJldHJpZXZlcyBsYXN0IFNNUyBtZXNzYWdlLlxyXG4gICAgICogQGZ1bmN0aW9uIGdldExhc3RTbXNcclxuICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gcmVtb3ZlT25SZWFkIC0gU3BlY2lmaWVzIHdoZXRoZXIgdG8gZGVsZXRlIHRoZSBtZXNzYWdlIGFmdGVyIHJlYWRpbmcgaXQuXHJcbiAgICAgKiBAcGFyYW0ge051bWJlcn0gdGltZW91dCAtIFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciB3YWl0aW5nIGZvciB0aGUgbWVzc2FnZSB0byBhcnJpdmUuXHJcbiAgICAgKiBAcGFyYW0ge051bWJlcj19IG5vdE9sZGVyVGhhbiAtIFJldHJpZXZlIG1lc3NhZ2Ugb25seSBpZiBpdCBhcnJpdmVkIG5vdCBiZWZvcmUgdGhlIGdpdmVuIHRpbWUgKGluIG1zKS4gRGVmYXVsdCBpcyA0IG1pbnV0ZXMuXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZz19IGZyb21OdW1iZXIgLSBGcm9tIG51bWJlciB0byBmaWx0ZXIgbWVzc2FnZVxyXG4gICAgICogQHJldHVybiB7U3RyaW5nfSBTTVMgdGV4dC5cclxuICAgICAqL1xyXG4gICAgbW9kdWxlLmdldExhc3RTbXMgPSBhc3luYyBmdW5jdGlvbihyZW1vdmVPblJlYWQsIHRpbWVvdXQsIG5vdE9sZGVyVGhhbiwgZnJvbU51bWJlcikge1xyXG4gICAgICAgIGhlbHBlcnMuYXNzZXJ0QXJndW1lbnRCb29sKHJlbW92ZU9uUmVhZCwgJ3JlbW92ZU9uUmVhZCcpO1xyXG4gICAgICAgIGhlbHBlcnMuYXNzZXJ0QXJndW1lbnROdW1iZXJOb25OZWdhdGl2ZSh0aW1lb3V0LCAndGltZW91dCcpO1xyXG4gICAgICAgIGlmIChmcm9tTnVtYmVyKSB7XHJcbiAgICAgICAgICAgIGhlbHBlcnMuYXNzZXJ0QXJndW1lbnRTdHJpbmcoZnJvbU51bWJlciwgJ2Zyb21OdW1iZXInKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghbm90T2xkZXJUaGFuKSB7XHJcbiAgICAgICAgICAgIG5vdE9sZGVyVGhhbiA9IDQqNjAqMTAwMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIG1zZztcclxuICAgICAgICB2YXIgbm93ID0gRGF0ZS5ub3coKTtcclxuICAgICAgICB2YXIgZWFybGllc3RNZXNzYWdlRGF0ZSA9IG5ldyBEYXRlKG5vdyAtIG5vdE9sZGVyVGhhbik7XHJcbiAgICAgICAgd2hpbGUgKCFtc2cgJiYgKERhdGUubm93KCkgLSBub3cpIDwgdGltZW91dCkge1xyXG4gICAgICAgICAgICBhd2FpdCAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBfY2xpZW50Lm1lc3NhZ2VzLmxpc3QoeyBkYXRlU2VudEFmdGVyOiBlYXJsaWVzdE1lc3NhZ2VEYXRlIH0sIGZ1bmN0aW9uKGVyciwgbWVzc2FnZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9tc2c7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlcyAmJiB0eXBlb2YgbWVzc2FnZXNbU3ltYm9sLml0ZXJhdG9yXSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChfbXNnIG9mIG1lc3NhZ2VzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9tc2cuZGlyZWN0aW9uID09ICdpbmJvdW5kJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZnJvbU51bWJlciAmJiBfbXNnLmZyb20gIT09IGZyb21OdW1iZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9tc2dEYXRlID0gRGF0ZS5wYXJzZShfbXNnLmRhdGVDcmVhdGVkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIG1lc3NhZ2UgaXMgbmV3ZXIgdGhhbiB0aGUgcHJldmlvdXMgb25lIC0gc2F2ZSBpdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1zZyAmJiBEYXRlLnBhcnNlKG1zZy5kYXRlQ3JlYXRlZCkgPCBfbXNnRGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9IF9tc2c7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFtc2cpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSBfbXNnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KSgpO1xyXG4gICAgICAgICAgICBhd2FpdCBsaWJVdGlscy5zbGVlcCg4MDApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFtc2cpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5UV0lMSU9fRVJST1IsIFwiQ291bGRuJ3QgZ2V0IHRoZSBTTVMgd2l0aGluIFwiICsgdGltZW91dCArICdtcy4nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChyZW1vdmVPblJlYWQpIHtcclxuICAgICAgICAgICAgYXdhaXQgKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgX2NsaWVudC5tZXNzYWdlcyhtc2cuc2lkKS5yZW1vdmUoKS50aGVuKCgpID0+IHsgcmVzb2x2ZSgpOyB9KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG1zZy5ib2R5O1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFJldHJpZXZlcyBsYXN0IFNNUyBtZXNzYWdlIHNlbnQgZnJvbSBBUEkuXHJcbiAgICAgKiBAZnVuY3Rpb24gZ2V0TGFzdFNlbnRBcGlTbXNcclxuICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gcmVtb3ZlT25SZWFkIC0gU3BlY2lmaWVzIHdoZXRoZXIgdG8gZGVsZXRlIHRoZSBtZXNzYWdlIGFmdGVyIHJlYWRpbmcgaXQuXHJcbiAgICAgKiBAcGFyYW0ge051bWJlcn0gdGltZW91dCAtIFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciB3YWl0aW5nIGZvciB0aGUgbWVzc2FnZSB0byBhcnJpdmUuXHJcbiAgICAgKiBAcGFyYW0ge051bWJlcj19IG5vdE9sZGVyVGhhbiAtIFJldHJpZXZlIG1lc3NhZ2Ugb25seSBpZiBpdCBhcnJpdmVkIG5vdCBiZWZvcmUgdGhlIGdpdmVuIHRpbWUgKGluIG1zKS4gRGVmYXVsdCBpcyA0IG1pbnV0ZXMuXHJcbiAgICAgKiBAcmV0dXJuIHtTdHJpbmd9IFNNUyB0ZXh0LlxyXG4gICAgICovXHJcbiAgICBtb2R1bGUuZ2V0TGFzdFNlbnRBcGlTbXMgPSBhc3luYyBmdW5jdGlvbiAocmVtb3ZlT25SZWFkLCB0aW1lb3V0LCBub3RPbGRlclRoYW4pIHtcclxuICAgICAgICBoZWxwZXJzLmFzc2VydEFyZ3VtZW50Qm9vbChyZW1vdmVPblJlYWQsICdyZW1vdmVPblJlYWQnKTtcclxuICAgICAgICBoZWxwZXJzLmFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmUodGltZW91dCwgJ3RpbWVvdXQnKTtcclxuXHJcbiAgICAgICAgaWYgKCFub3RPbGRlclRoYW4pIHtcclxuICAgICAgICAgICAgbm90T2xkZXJUaGFuID0gNCAqIDYwICogMTAwMDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciBtc2c7XHJcbiAgICAgICAgdmFyIG5vdyA9IERhdGUubm93KCk7XHJcbiAgICAgICAgdmFyIGVhcmxpZXN0TWVzc2FnZURhdGUgPSBuZXcgRGF0ZShub3cgLSBub3RPbGRlclRoYW4pO1xyXG5cclxuICAgICAgICB3aGlsZSAoIW1zZyAmJiBEYXRlLm5vdygpIC0gbm93IDwgdGltZW91dCkge1xyXG4gICAgICAgICAgICBhd2FpdCAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBfY2xpZW50Lm1lc3NhZ2VzLmxpc3Qoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRlU2VudEFmdGVyOiBlYXJsaWVzdE1lc3NhZ2VEYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24gKGVyciwgbWVzc2FnZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9tc2c7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobWVzc2FnZXMgJiYgdHlwZW9mIG1lc3NhZ2VzW1N5bWJvbC5pdGVyYXRvcl0gPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoX21zZyBvZiBtZXNzYWdlcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfbXNnLmRpcmVjdGlvbiA9PSAnb3V0Ym91bmQtYXBpJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX21zZ0RhdGUgPSBEYXRlLnBhcnNlKF9tc2cuZGF0ZUNyZWF0ZWQpOyAvLyBpZiBtZXNzYWdlIGlzIG5ld2VyIHRoYW4gdGhlIHByZXZpb3VzIG9uZSAtIHNhdmUgaXRcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtc2cgJiYgRGF0ZS5wYXJzZShtc2cuZGF0ZUNyZWF0ZWQpIDwgX21zZ0RhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9IF9tc2c7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIW1zZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gX21zZztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pKCk7XHJcbiAgICAgICAgICAgIGF3YWl0IGxpYlV0aWxzLnNsZWVwKDgwMCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIW1zZykge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLlRXSUxJT19FUlJPUiwgXCJDb3VsZG4ndCBnZXQgdGhlIFNNUyB3aXRoaW4gXCIgKyB0aW1lb3V0ICsgJ21zLicpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHJlbW92ZU9uUmVhZCkge1xyXG4gICAgICAgICAgICBhd2FpdCAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBfY2xpZW50Lm1lc3NhZ2VzKG1zZy5zaWQpLnJlbW92ZSgpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSkoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBtc2cuYm9keTtcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBTZW5kIGFuIFNNUy5cclxuICAgICAqIEBmdW5jdGlvbiBzZW5kU21zXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gZnJvbSAtIFBob25lIG51bWJlciB0byBzZW5kIGZyb20uXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gdG8gLSBQaG9uZSBudW1iZXIgdG8gc2VuZCB0by5cclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlIC0gTWVzc2FnZSB0byBzZW5kLlxyXG4gICAgICogQHJldHVybiB7U3RyaW5nfSBNZXNzYWdlIFNJRC5cclxuICAgICAqIEBleGFtcGxlIDxjYXB0aW9uPltqYXZhc2NyaXB0XSBVc2FnZSBleGFtcGxlPC9jYXB0aW9uPlxyXG4gICAgICogdHdpbGlvLmluaXQoJ0FjY291bnQgU2lkJywgJ0FjY291bnQgVG9rZW4nKTtcclxuICAgICAqIHR3aWxpby5zZW5kU21zKCcrMXh4eHh4eHh4eHgnLCAnKzk3Mnh4eHh4eHh4eCcsICdIZWxsbyBXb3JsZCEnKTtcclxuICAgICAqL1xyXG4gICAgbW9kdWxlLnNlbmRTbXMgPSBhc3luYyBmdW5jdGlvbihmcm9tLCB0bywgbWVzc2FnZSkge1xyXG4gICAgICAgIGhlbHBlcnMuYXNzZXJ0QXJndW1lbnROb25FbXB0eVN0cmluZyhmcm9tLCAnZnJvbScpO1xyXG4gICAgICAgIGhlbHBlcnMuYXNzZXJ0QXJndW1lbnROb25FbXB0eVN0cmluZyh0bywgJ3RvJyk7XHJcbiAgICAgICAgaGVscGVycy5hc3NlcnRBcmd1bWVudE5vbkVtcHR5U3RyaW5nKG1lc3NhZ2UsICdtZXNzYWdlJyk7XHJcblxyXG4gICAgICAgIHZhciByZXNwb25zZSA9IG51bGw7XHJcblxyXG4gICAgICAgIGF3YWl0ICgoKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBfY2xpZW50Lm1lc3NhZ2VzLmNyZWF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgYm9keTogbWVzc2FnZSxcclxuICAgICAgICAgICAgICAgICAgICBmcm9tOiBmcm9tLFxyXG4gICAgICAgICAgICAgICAgICAgIHRvOiB0b1xyXG4gICAgICAgICAgICAgICAgfSkudGhlbihtZXNzYWdlID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IG1lc3NhZ2Uuc2lkO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgIH0pLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBlcnI7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pKCk7XHJcblxyXG4gICAgICAgIGlmIChyZXNwb25zZS5tZXNzYWdlKSB7XHJcbiAgICAgICAgICAgIHZhciBtc2cgPSByZXNwb25zZS5tZXNzYWdlO1xyXG4gICAgICAgICAgICBpZiAocmVzcG9uc2UubW9yZUluZm8pIHtcclxuICAgICAgICAgICAgICAgIG1zZyArPSAnIEZvciBtb3JlIGluZm86ICcgKyByZXNwb25zZS5tb3JlSW5mbztcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXNwb25zZS5jb2RlKSB7XHJcbiAgICAgICAgICAgICAgICBtc2cgPSAnVW5hYmxlIHRvIGNvbm5lY3QgdG8gVHdpbGlvOiAnICsgbXNnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuVFdJTElPX0VSUk9SLCBtc2cpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgfTtcclxuXHJcbiAgICBoZWxwZXJzLmFzc2VydEFyZ3VtZW50ID0gKHZhbCwgbmFtZSkgPT4gdXRpbHMuYXNzZXJ0QXJndW1lbnQuY2FsbCh0aGlzLCB2YWwsIG5hbWUpO1xyXG4gICAgaGVscGVycy5hc3NlcnRBcmd1bWVudE5vbkVtcHR5U3RyaW5nID0gKHZhbCwgbmFtZSkgPT4gdXRpbHMuYXNzZXJ0QXJndW1lbnROb25FbXB0eVN0cmluZy5jYWxsKHRoaXMsIHZhbCwgbmFtZSk7XHJcbiAgICBoZWxwZXJzLmFzc2VydEFyZ3VtZW50U3RyaW5nID0gKHZhbCwgbmFtZSkgPT4gdXRpbHMuYXNzZXJ0QXJndW1lbnRTdHJpbmcuY2FsbCh0aGlzLCB2YWwsIG5hbWUpO1xyXG4gICAgaGVscGVycy5hc3NlcnRBcmd1bWVudE51bWJlciA9ICh2YWwsIG5hbWUpID0+IHV0aWxzLmFzc2VydEFyZ3VtZW50TnVtYmVyLmNhbGwodGhpcywgdmFsLCBuYW1lKTtcclxuICAgIGhlbHBlcnMuYXNzZXJ0QXJndW1lbnROdW1iZXJOb25OZWdhdGl2ZSA9ICh2YWwsIG5hbWUpID0+IHV0aWxzLmFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmUuY2FsbCh0aGlzLCB2YWwsIG5hbWUpO1xyXG4gICAgaGVscGVycy5hc3NlcnRBcmd1bWVudEJvb2wgPSAodmFsLCBuYW1lKSA9PiB1dGlscy5hc3NlcnRBcmd1bWVudEJvb2wuY2FsbCh0aGlzLCB2YWwsIG5hbWUpO1xyXG4gICAgaGVscGVycy5hc3NlcnRBcmd1bWVudEJvb2xPcHRpb25hbCA9ICh2YWwsIG5hbWUpID0+IHV0aWxzLmFzc2VydEFyZ3VtZW50Qm9vbE9wdGlvbmFsLmNhbGwodGhpcywgdmFsLCBuYW1lKTtcclxuICAgIGhlbHBlcnMuYXNzZXJ0QXJndW1lbnRUaW1lb3V0ID0gKHZhbCwgbmFtZSkgPT4gdXRpbHMuYXNzZXJ0QXJndW1lbnRUaW1lb3V0LmNhbGwodGhpcywgdmFsLCBuYW1lKTtcclxuXHJcbiAgICByZXR1cm4gbW9kdWxlO1xyXG59O1xyXG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oxygen-cli",
3
- "version": "1.23.2",
3
+ "version": "1.24.0",
4
4
  "description": "Automation framework for testing modern applications",
5
5
  "main": "./build/index.js",
6
6
  "bin": {
@@ -38,23 +38,22 @@
38
38
  "@babel/cli": "7.14.5",
39
39
  "@babel/core": "7.14.6",
40
40
  "@babel/preset-env": "7.14.7",
41
- "babel-plugin-source-map-support": "2.1.3",
41
+ "babel-plugin-source-map-support": "2.2.0",
42
42
  "cross-env": "7.0.3",
43
43
  "doctrine": "3.0.0",
44
44
  "eslint": "6.8.0",
45
45
  "husky": "4.3.8",
46
- "md-reverse": "1.0.0",
47
- "npm-run-all": "4.1.5"
46
+ "md-reverse": "1.0.0"
48
47
  },
49
48
  "dependencies": {
50
- "@applitools/eyes-webdriverio": "5.35.3",
51
- "@lambdatest/node-rest-client": "1.0.2",
49
+ "@applitools/eyes-webdriverio": "5.35.7",
50
+ "@lambdatest/node-rest-client": "1.0.3",
52
51
  "@oxygenhq/chrome-remote-interface": "0.30.0",
53
52
  "@oxygenhq/logger": "0.5.1",
54
53
  "@oxygenhq/mitmproxy-node": "1.0.1",
55
- "@wdio/cli": "7.20.2",
56
- "@wdio/devtools-service": "7.20.2",
57
- "@wdio/sync": "7.20.2",
54
+ "@wdio/cli": "7.20.7",
55
+ "@wdio/devtools-service": "7.20.7",
56
+ "@wdio/sync": "7.20.7",
58
57
  "async": "3.2.4",
59
58
  "chai": "4.3.6",
60
59
  "chrome-har": "0.11.12",
@@ -65,14 +64,14 @@
65
64
  "deasync": "0.1.26",
66
65
  "decache": "4.6.1",
67
66
  "easyxml": "2.0.1",
68
- "ejs": "3.0.2",
67
+ "ejs": "3.1.8",
69
68
  "esm": "3.2.25",
70
- "fast-xml-parser": "4.0.8",
69
+ "fast-xml-parser": "4.0.9",
71
70
  "fibers": "5.0.0",
72
71
  "glob": "7.1.7",
73
72
  "glob-to-regexp": "0.4.1",
74
73
  "global-agent": "3.0.0",
75
- "got": "11.8.2",
74
+ "got": "11.8.5",
76
75
  "imap-simple": "5.1.0",
77
76
  "is-glob": "4.0.3",
78
77
  "jimp": "0.16.1",
@@ -81,7 +80,7 @@
81
80
  "mailparser": "3.5.0",
82
81
  "minimist": "1.2.6",
83
82
  "mockery": "2.1.0",
84
- "moment": "2.29.3",
83
+ "moment": "2.29.4",
85
84
  "node-addon-api": "3.0.2",
86
85
  "objects-to-csv": "1.3.6",
87
86
  "pdf2json": "1.2.5",
@@ -94,9 +93,9 @@
94
93
  "stacktrace-parser": "0.1.10",
95
94
  "testdouble": "3.16.6",
96
95
  "testingbot-api": "1.0.7",
97
- "text-to-image": "2.4.4",
96
+ "text-to-image": "5.2.0",
98
97
  "twilio": "3.77.2",
99
- "webdriverio": "7.20.2",
98
+ "webdriverio": "7.20.7",
100
99
  "when": "3.7.8",
101
100
  "xlsx": "0.18.5"
102
101
  },
@@ -104,10 +103,9 @@
104
103
  "odbc": "2.4.4"
105
104
  },
106
105
  "scripts": {
107
- "build": "run-s clean compile",
106
+ "build": "npm run clean && npm run compile",
108
107
  "clean": "rimraf ./build",
109
108
  "compile": "babel src/ -d build/ --config-file ./.babelrc --copy-files",
110
- "test": "run-s test:*",
111
109
  "test:lint": "eslint src test",
112
110
  "test:unit": "jest",
113
111
  "prepublishOnly": "npm run build && node tools/dos2unix src/lib/cli.js",