Socket
Socket
Sign inDemoInstall

saucelabs

Package Overview
Dependencies
Maintainers
4
Versions
122
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

saucelabs - npm Package Compare versions

Comparing version 2.1.1 to 2.1.2

a.js

2

apis/performance.json

@@ -7,3 +7,3 @@ {

},
"host": "api.staging.saucelabs.net",
"host": "api.saucelabs.com",
"basePath": "/v1/performance",

@@ -10,0 +10,0 @@ "schemes": [

@@ -45,3 +45,3 @@ "use strict";

if (protocolFlattened.has(commandName)) {
throw new Error(`command ${commandName} alreadyasss registered`);
throw new Error(`command ${commandName} already registered`);
}

@@ -74,3 +74,3 @@

const REGION_MAPPING = {
'us': '',
'us': 'us-west-1.',
// default endpoint

@@ -118,2 +118,2 @@ 'eu': 'eu-central-1.'

exports.CLI_PARAMS = CLI_PARAMS;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zdGFudHMuanMiXSwibmFtZXMiOlsicHJvdG9jb2xzIiwicmVxdWlyZSIsInByb3RvY29sRmxhdHRlbmVkIiwiTWFwIiwicGFyYW1ldGVyc0ZsYXR0ZW5lZCIsInBhdGhzIiwicGFyYW1ldGVycyIsImhvc3QiLCJiYXNlUGF0aCIsIm5hbWUiLCJkZXNjcmlwdGlvbiIsIk9iamVjdCIsImVudHJpZXMiLCJzZXQiLCJlbmRwb2ludCIsIm1ldGhvZHMiLCJtZXRob2QiLCJjb21tYW5kTmFtZSIsImNoYW5nZUNhc2UiLCJjYW1lbENhc2UiLCJvcGVyYXRpb25JZCIsImRlcHJlY2F0ZWQiLCJoYXMiLCJFcnJvciIsIlBST1RPQ09MX01BUCIsIlBBUkFNRVRFUlNfTUFQIiwiSk9CX0FTU0VUX05BTUVTIiwiREVGQVVMVF9PUFRJT05TIiwidXNlciIsInByb2Nlc3MiLCJlbnYiLCJTQVVDRV9VU0VSTkFNRSIsImtleSIsIlNBVUNFX0FDQ0VTU19LRVkiLCJoZWFkbGVzcyIsInJlZ2lvbiIsIlJFR0lPTl9NQVBQSU5HIiwiU1lNQk9MX0lOU1BFQ1QiLCJTeW1ib2wiLCJmb3IiLCJTWU1CT0xfVE9TVFJJTkciLCJ0b1N0cmluZ1RhZyIsIlNZTUJPTF9JVEVSQVRPUiIsIml0ZXJhdG9yIiwiVE9fU1RSSU5HX1RBRyIsIlVTQUdFIiwiRVBJTE9HIiwiRGF0ZSIsImdldFVUQ0Z1bGxZZWFyIiwiQ0xJX1BBUkFNUyIsImFsaWFzIiwiZGVmYXVsdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7QUFFQSxNQUFNQSxTQUFTLEdBQUcsQ0FDZEMsT0FBTyxDQUFDLG9CQUFELENBRE8sRUFFZEEsT0FBTyxDQUFDLGtCQUFELENBRk8sRUFHZEEsT0FBTyxDQUFDLDBCQUFELENBSE8sQ0FBbEI7QUFNQSxNQUFNQyxpQkFBaUIsR0FBRyxJQUFJQyxHQUFKLEVBQTFCO0FBQ0EsTUFBTUMsbUJBQW1CLEdBQUcsSUFBSUQsR0FBSixFQUE1Qjs7QUFDQSxLQUFL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R0FEUjtBQUVDekMsRUFBQUEsSUFBSSxFQUFFLEtBRlA7QUFHQ0MsRUFBQUEsV0FBVyxFQUFFO0FBSGQsQ0FSdUIsRUFZdkI7QUFDQ3dDLEVBQUFBLEtBQUssRUFBRSxHQURSO0FBRUN6QyxFQUFBQSxJQUFJLEVBQUUsUUFGUDtBQUdDMEMsRUFBQUEsT0FBTyxFQUFFeEIsZUFBZSxDQUFDUSxNQUgxQjtBQUlDekIsRUFBQUEsV0FBVyxFQUFFO0FBSmQsQ0FadUIsRUFpQnZCO0FBQ0N3QyxFQUFBQSxLQUFLLEVBQUUsR0FEUjtBQUVDekMsRUFBQUEsSUFBSSxFQUFFLFVBRlA7QUFHQzBDLEVBQUFBLE9BQU8sRUFBRXhCLGVBQWUsQ0FBQ08sUUFIMUI7QUFJQ3hCLEVBQUFBLFdBQVcsRUFBRTtBQUpkLENBakJ1QixDQUFuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjaGFuZ2VDYXNlIGZyb20gJ2NoYW5nZS1jYXNlJ1xuXG5jb25zdCBwcm90b2NvbHMgPSBbXG4gICAgcmVxdWlyZSgnLi4vYXBpcy9zYXVjZS5qc29uJyksXG4gICAgcmVxdWlyZSgnLi4vYXBpcy9yZGMuanNvbicpLFxuICAgIHJlcXVpcmUoJy4uL2FwaXMvcGVyZm9ybWFuY2UuanNvbicpXG5dXG5cbmNvbnN0IHByb3RvY29sRmxhdHRlbmVkID0gbmV3IE1hcCgpXG5jb25zdCBwYXJhbWV0ZXJzRmxhdHRlbmVkID0gbmV3IE1hcCgpXG5mb3IgKGNvbnN0IHsgcGF0aHMsIHBhcmFtZXRlcnMsIGhvc3QsIGJhc2VQYXRoIH0gb2YgcHJvdG9jb2xzKSB7XG4gICAgZm9yIChjb25zdCBbbmFtZSwgZGVzY3JpcHRpb25dIG9mIE9iamVjdC5lbnRyaWVzKHBhcmFtZXRlcnMgfHwge30pKSB7XG4gICAgICAgIHBhcmFtZXRlcnNGbGF0dGVuZWQuc2V0KG5hbWUsIGRlc2NyaXB0aW9uKVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgW2VuZHBvaW50LCBtZXRob2RzXSBvZiBPYmplY3QuZW50cmllcyhwYXRocykpIHtcbiAgICAgICAgZm9yIChjb25zdCBbbWV0aG9kLCBkZXNjcmlwdGlvbl0gb2YgT2JqZWN0LmVudHJpZXMobWV0aG9kcykpIHtcbiAgICAgICAgICAgIGxldCBjb21tYW5kTmFtZSA9IGNoYW5nZUNhc2UuY2FtZWxDYXNlKGRlc2NyaXB0aW9uLm9wZXJhdGlvbklkKVxuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIG1hcmsgY29tbWFuZHMgYXMgZGVwY3JlY2F0ZWQgaW4gdGhlIGNvbW1hbmQgbmFtZXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaWYgKGRlc2NyaXB0aW9uLmRlcHJlY2F0ZWQpIHtcbiAgICAgICAgICAgICAgICBjb21tYW5kTmFtZSArPSAnRGVwcmVjYXRlZCdcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBlbnN1cmUgd2UgZG9uJ3QgZG91YmxlIHJlZ2lzdGV0IGNvbW1hbmRzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGlmIChwcm90b2NvbEZsYXR0ZW5lZC5oYXMoY29tbWFuZE5hbWUpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBjb21tYW5kICR7Y29tbWFuZE5hbWV9IGFscmVhZHlhc3NzIHJlZ2lzdGVyZWRgKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwcm90b2NvbEZsYXR0ZW5lZC5zZXQoXG4gICAgICAgICAgICAgICAgY29tbWFuZE5hbWUsXG4gICAgICAgICAgICAgICAgeyBtZXRob2QsIGVuZHBvaW50LCBkZXNjcmlwdGlvbiwgaG9zdCwgYmFzZVBhdGggfVxuICAgICAgICAgICAgKVxuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY29uc3QgUFJPVE9DT0xfTUFQID0gcHJvdG9jb2xGbGF0dGVuZWRcbmV4cG9ydCBjb25zdCBQQVJBTUVURVJTX01BUCA9IHBhcmFtZXRlcnNGbGF0dGVuZWRcbmV4cG9ydCBjb25zdCBKT0JfQVNTRVRfTkFNRVMgPSBbXG4gICAgJ2NvbnNvbGUuanNvbicsXG4gICAgJ3BlcmZvcm1hbmNlLmpzb24nLFxuICAgICdhdXRvbWF0b3IubG9nJyxcbiAgICAnc2VsZW5pdW0tc2VydmVyLmxvZycsXG4gICAgJ2xvZy5qc29uJyxcbiAgICAnbG9nY2F0LmxvZycsXG4gICAgJ3ZpZGVvLm1wNCdcbl1cblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfT1BUSU9OUyA9IHtcbiAgICB1c2VyOiBwcm9jZXNzLmVudi5TQVVDRV9VU0VSTkFNRSxcbiAgICBrZXk6IHByb2Nlc3MuZW52LlNBVUNFX0FDQ0VTU19LRVksXG4gICAgaGVhZGxlc3M6IGZhbHNlLFxuICAgIHJlZ2lvbjogJ3VzJ1xufVxuXG5leHBvcnQgY29uc3QgUkVHSU9OX01BUFBJTkcgPSB7XG4gICAgJ3VzJzogJycsIC8vIGRlZmF1bHQgZW5kcG9pbnRcbiAgICAnZXUnOiAnZXUtY2VudHJhbC0xLidcbn1cblxuZXhwb3J0IGNvbnN0IFNZTUJPTF9JTlNQRUNUID0gU3ltYm9sLmZvcignbm9kZWpzLnV0aWwuaW5zcGVjdC5jdXN0b20nKVxuZXhwb3J0IGNvbnN0IFNZTUJPTF9UT1NUUklORyA9IFN5bWJvbC50b1N0cmluZ1RhZ1xuZXhwb3J0IGNvbnN0IFNZTUJPTF9JVEVSQVRPUiA9IFN5bWJvbC5pdGVyYXRvclxuZXhwb3J0IGNvbnN0IFRPX1NUUklOR19UQUcgPSAnU2F1Y2VMYWJzIEFQSSBDbGllbnQnXG5cbmV4cG9ydCBjb25zdCBVU0FHRSA9IGBTYXVjZSBMYWJzIEFQSSBDTElcblxuVXNhZ2U6IHNsIDxjb21tYW5kPiBbb3B0aW9uc11gXG5cbmV4cG9ydCBjb25zdCBFUElMT0cgPSBgQ29weXJpZ2h0ICR7KG5ldyBEYXRlKCkpLmdldFVUQ0Z1bGxZZWFyKCl9IMKpIFNhdWNlIExhYnNgXG5cbmV4cG9ydCBjb25zdCBDTElfUEFSQU1TID0gW3tcbiAgICBhbGlhczogJ2gnLFxuICAgIG5hbWU6ICdoZWxwJyxcbiAgICBkZXNjcmlwdGlvbjogJ3ByaW50cyBoZWxwIG1lbnUnXG59LCB7XG4gICAgYWxpYXM6ICd1JyxcbiAgICBuYW1lOiAndXNlcicsXG4gICAgZGVzY3JpcHRpb246ICd5b3VyIFNhdWNlIExhYnMgdXNlcm5hbWUnXG59LCB7XG4gICAgYWxpYXM6ICdrJyxcbiAgICBuYW1lOiAna2V5JyxcbiAgICBkZXNjcmlwdGlvbjogJ3lvdXIgU2F1Y2UgTGFicyB1c2VyIGtleSdcbn0sIHtcbiAgICBhbGlhczogJ3InLFxuICAgIG5hbWU6ICdyZWdpb24nLFxuICAgIGRlZmF1bHQ6IERFRkFVTFRfT1BUSU9OUy5yZWdpb24sXG4gICAgZGVzY3JpcHRpb246ICd5b3VyIFNhdWNlIExhYnMgZGF0YWNlbnRlciByZWdpb24sIHRoZSBmb2xsb3dpbmcgcmVnaW9ucyBhcmUgYXZhaWxhYmxlOiBgdXMtd2VzdC0xYCAoc2hvcnQgYHVzYCksIGBldS1jZW50cmFsLTFgIChzaG9ydCBgZXVgKSdcbn0sIHtcbiAgICBhbGlhczogJ2gnLFxuICAgIG5hbWU6ICdoZWFkbGVzcycsXG4gICAgZGVmYXVsdDogREVGQVVMVF9PUFRJT05TLmhlYWRsZXNzLFxuICAgIGRlc2NyaXB0aW9uOiAnaWYgc2V0IHRvIHRydWUgeW91IGFyZSBhY2Nlc3NpbmcgdGhlIGhlYWRsZXNzIFNhdWNlIGluc3RhbmNlcyAodGhpcyBkaXNjYXJkcyB0aGUgYHJlZ2lvbmAgb3B0aW9uKSdcbn1dXG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zdGFudHMuanMiXSwibmFtZXMiOlsicHJvdG9jb2xzIiwicmVxdWlyZSIsInByb3RvY29sRmxhdHRlbmVkIiwiTWFwIiwicGFyYW1ldGVyc0ZsYXR0ZW5lZCIsInBhdGhzIiwicGFyYW1ldGVycyIsImhvc3QiLCJiYXNlUGF0aCIsIm5hbWUiLCJkZXNjcmlwdGlvbiIsIk9iamVjdCIsImVudHJpZXMiLCJzZXQiLCJlbmRwb2ludCIsIm1ldGhvZHMiLCJtZXRob2QiLCJjb21tYW5kTmFtZSIsImNoYW5nZUNhc2UiLCJjYW1lbENhc2UiLCJvcGVyYXRpb25JZCIsImRlcHJlY2F0ZWQiLCJoYXMiLCJFcnJvciIsIlBST1RPQ09MX01BUCIsIlBBUkFNRVRFUlNfTUFQIiwiSk9CX0FTU0VUX05BTUVTIiwiREVGQVVMVF9PUFRJT05TIiwidXNlciIsInByb2Nlc3MiLCJlbnYiLCJTQVVDRV9VU0VSTkFNRSIsImtleSIsIlNBVUNFX0FDQ0VTU19LRVkiLCJoZWFkbGVzcyIsInJlZ2lvbiIsIlJFR0lPTl9NQVBQSU5HIiwiU1lNQk9MX0lOU1BFQ1QiLCJTeW1ib2wiLCJmb3IiLCJTWU1CT0xfVE9TVFJJTkciLCJ0b1N0cmluZ1RhZyIsIlNZTUJPTF9JVEVSQVRPUiIsIml0ZXJhdG9yIiwiVE9fU1RSSU5HX1RBRyIsIlVTQUdFIiwiRVBJTE9HIiwiRGF0ZSIsImdldFVUQ0Z1bGxZZWFyIiwiQ0xJX1BBUkFNUyIsImFsaWFzIiwiZGVmYXVsdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7QUFFQSxNQUFNQSxTQUFTLEdBQUcsQ0FDZEMsT0FBTyxDQUFDLG9CQUFELENBRE8sRUFFZEEsT0FBTyxDQUFDLGtCQUFELENBRk8sRUFHZEEsT0FBTyxDQUFDLDBCQUFELENBSE8sQ0FBbEI7QUFNQSxNQUFNQyxpQkFBaUIsR0FBRyxJQUFJQyxHQUFKLEVBQTFCO0FBQ0EsTUFBTUMsbUJBQW1CLEdBQUcsSUFBSUQsR0FBSixFQUE1Qjs7QUFDQSxLQUFL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R0FEUjtBQUVDekMsRUFBQUEsSUFBSSxFQUFFLEtBRlA7QUFHQ0MsRUFBQUEsV0FBVyxFQUFFO0FBSGQsQ0FSdUIsRUFZdkI7QUFDQ3dDLEVBQUFBLEtBQUssRUFBRSxHQURSO0FBRUN6QyxFQUFBQSxJQUFJLEVBQUUsUUFGUDtBQUdDMEMsRUFBQUEsT0FBTyxFQUFFeEIsZUFBZSxDQUFDUSxNQUgxQjtBQUlDekIsRUFBQUEsV0FBVyxFQUFFO0FBSmQsQ0FadUIsRUFpQnZCO0FBQ0N3QyxFQUFBQSxLQUFLLEVBQUUsR0FEUjtBQUVDekMsRUFBQUEsSUFBSSxFQUFFLFVBRlA7QUFHQzBDLEVBQUFBLE9BQU8sRUFBRXhCLGVBQWUsQ0FBQ08sUUFIMUI7QUFJQ3hCLEVBQUFBLFdBQVcsRUFBRTtBQUpkLENBakJ1QixDQUFuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjaGFuZ2VDYXNlIGZyb20gJ2NoYW5nZS1jYXNlJ1xuXG5jb25zdCBwcm90b2NvbHMgPSBbXG4gICAgcmVxdWlyZSgnLi4vYXBpcy9zYXVjZS5qc29uJyksXG4gICAgcmVxdWlyZSgnLi4vYXBpcy9yZGMuanNvbicpLFxuICAgIHJlcXVpcmUoJy4uL2FwaXMvcGVyZm9ybWFuY2UuanNvbicpXG5dXG5cbmNvbnN0IHByb3RvY29sRmxhdHRlbmVkID0gbmV3IE1hcCgpXG5jb25zdCBwYXJhbWV0ZXJzRmxhdHRlbmVkID0gbmV3IE1hcCgpXG5mb3IgKGNvbnN0IHsgcGF0aHMsIHBhcmFtZXRlcnMsIGhvc3QsIGJhc2VQYXRoIH0gb2YgcHJvdG9jb2xzKSB7XG4gICAgZm9yIChjb25zdCBbbmFtZSwgZGVzY3JpcHRpb25dIG9mIE9iamVjdC5lbnRyaWVzKHBhcmFtZXRlcnMgfHwge30pKSB7XG4gICAgICAgIHBhcmFtZXRlcnNGbGF0dGVuZWQuc2V0KG5hbWUsIGRlc2NyaXB0aW9uKVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgW2VuZHBvaW50LCBtZXRob2RzXSBvZiBPYmplY3QuZW50cmllcyhwYXRocykpIHtcbiAgICAgICAgZm9yIChjb25zdCBbbWV0aG9kLCBkZXNjcmlwdGlvbl0gb2YgT2JqZWN0LmVudHJpZXMobWV0aG9kcykpIHtcbiAgICAgICAgICAgIGxldCBjb21tYW5kTmFtZSA9IGNoYW5nZUNhc2UuY2FtZWxDYXNlKGRlc2NyaXB0aW9uLm9wZXJhdGlvbklkKVxuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIG1hcmsgY29tbWFuZHMgYXMgZGVwY3JlY2F0ZWQgaW4gdGhlIGNvbW1hbmQgbmFtZXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaWYgKGRlc2NyaXB0aW9uLmRlcHJlY2F0ZWQpIHtcbiAgICAgICAgICAgICAgICBjb21tYW5kTmFtZSArPSAnRGVwcmVjYXRlZCdcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBlbnN1cmUgd2UgZG9uJ3QgZG91YmxlIHJlZ2lzdGV0IGNvbW1hbmRzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGlmIChwcm90b2NvbEZsYXR0ZW5lZC5oYXMoY29tbWFuZE5hbWUpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBjb21tYW5kICR7Y29tbWFuZE5hbWV9IGFscmVhZHkgcmVnaXN0ZXJlZGApXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHByb3RvY29sRmxhdHRlbmVkLnNldChcbiAgICAgICAgICAgICAgICBjb21tYW5kTmFtZSxcbiAgICAgICAgICAgICAgICB7IG1ldGhvZCwgZW5kcG9pbnQsIGRlc2NyaXB0aW9uLCBob3N0LCBiYXNlUGF0aCB9XG4gICAgICAgICAgICApXG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjb25zdCBQUk9UT0NPTF9NQVAgPSBwcm90b2NvbEZsYXR0ZW5lZFxuZXhwb3J0IGNvbnN0IFBBUkFNRVRFUlNfTUFQID0gcGFyYW1ldGVyc0ZsYXR0ZW5lZFxuZXhwb3J0IGNvbnN0IEpPQl9BU1NFVF9OQU1FUyA9IFtcbiAgICAnY29uc29sZS5qc29uJyxcbiAgICAncGVyZm9ybWFuY2UuanNvbicsXG4gICAgJ2F1dG9tYXRvci5sb2cnLFxuICAgICdzZWxlbml1bS1zZXJ2ZXIubG9nJyxcbiAgICAnbG9nLmpzb24nLFxuICAgICdsb2djYXQubG9nJyxcbiAgICAndmlkZW8ubXA0J1xuXVxuXG5leHBvcnQgY29uc3QgREVGQVVMVF9PUFRJT05TID0ge1xuICAgIHVzZXI6IHByb2Nlc3MuZW52LlNBVUNFX1VTRVJOQU1FLFxuICAgIGtleTogcHJvY2Vzcy5lbnYuU0FVQ0VfQUNDRVNTX0tFWSxcbiAgICBoZWFkbGVzczogZmFsc2UsXG4gICAgcmVnaW9uOiAndXMnXG59XG5cbmV4cG9ydCBjb25zdCBSRUdJT05fTUFQUElORyA9IHtcbiAgICAndXMnOiAndXMtd2VzdC0xLicsIC8vIGRlZmF1bHQgZW5kcG9pbnRcbiAgICAnZXUnOiAnZXUtY2VudHJhbC0xLidcbn1cblxuZXhwb3J0IGNvbnN0IFNZTUJPTF9JTlNQRUNUID0gU3ltYm9sLmZvcignbm9kZWpzLnV0aWwuaW5zcGVjdC5jdXN0b20nKVxuZXhwb3J0IGNvbnN0IFNZTUJPTF9UT1NUUklORyA9IFN5bWJvbC50b1N0cmluZ1RhZ1xuZXhwb3J0IGNvbnN0IFNZTUJPTF9JVEVSQVRPUiA9IFN5bWJvbC5pdGVyYXRvclxuZXhwb3J0IGNvbnN0IFRPX1NUUklOR19UQUcgPSAnU2F1Y2VMYWJzIEFQSSBDbGllbnQnXG5cbmV4cG9ydCBjb25zdCBVU0FHRSA9IGBTYXVjZSBMYWJzIEFQSSBDTElcblxuVXNhZ2U6IHNsIDxjb21tYW5kPiBbb3B0aW9uc11gXG5cbmV4cG9ydCBjb25zdCBFUElMT0cgPSBgQ29weXJpZ2h0ICR7KG5ldyBEYXRlKCkpLmdldFVUQ0Z1bGxZZWFyKCl9IMKpIFNhdWNlIExhYnNgXG5cbmV4cG9ydCBjb25zdCBDTElfUEFSQU1TID0gW3tcbiAgICBhbGlhczogJ2gnLFxuICAgIG5hbWU6ICdoZWxwJyxcbiAgICBkZXNjcmlwdGlvbjogJ3ByaW50cyBoZWxwIG1lbnUnXG59LCB7XG4gICAgYWxpYXM6ICd1JyxcbiAgICBuYW1lOiAndXNlcicsXG4gICAgZGVzY3JpcHRpb246ICd5b3VyIFNhdWNlIExhYnMgdXNlcm5hbWUnXG59LCB7XG4gICAgYWxpYXM6ICdrJyxcbiAgICBuYW1lOiAna2V5JyxcbiAgICBkZXNjcmlwdGlvbjogJ3lvdXIgU2F1Y2UgTGFicyB1c2VyIGtleSdcbn0sIHtcbiAgICBhbGlhczogJ3InLFxuICAgIG5hbWU6ICdyZWdpb24nLFxuICAgIGRlZmF1bHQ6IERFRkFVTFRfT1BUSU9OUy5yZWdpb24sXG4gICAgZGVzY3JpcHRpb246ICd5b3VyIFNhdWNlIExhYnMgZGF0YWNlbnRlciByZWdpb24sIHRoZSBmb2xsb3dpbmcgcmVnaW9ucyBhcmUgYXZhaWxhYmxlOiBgdXMtd2VzdC0xYCAoc2hvcnQgYHVzYCksIGBldS1jZW50cmFsLTFgIChzaG9ydCBgZXVgKSdcbn0sIHtcbiAgICBhbGlhczogJ2gnLFxuICAgIG5hbWU6ICdoZWFkbGVzcycsXG4gICAgZGVmYXVsdDogREVGQVVMVF9PUFRJT05TLmhlYWRsZXNzLFxuICAgIGRlc2NyaXB0aW9uOiAnaWYgc2V0IHRvIHRydWUgeW91IGFyZSBhY2Nlc3NpbmcgdGhlIGhlYWRsZXNzIFNhdWNlIGluc3RhbmNlcyAodGhpcyBkaXNjYXJkcyB0aGUgYHJlZ2lvbmAgb3B0aW9uKSdcbn1dXG4iXX0=

@@ -110,2 +110,3 @@ "use strict";

const params = (0, _utils.getParameters)(description.parameters);
const pathParams = params.filter(p => p.in === 'path');
/**

@@ -117,3 +118,3 @@ * validate required url params

for (const [i, urlParam] of Object.entries(params.filter(p => p.in === 'path'))) {
for (const [i, urlParam] of Object.entries(pathParams)) {
const param = args[i];

@@ -129,2 +130,13 @@ const type = urlParam.type.replace('integer', 'number');

/**
* check for body param (as last parameter as we don't expect request
* parameters for non idempotent requests)
*/
let bodyOption = params.find(p => p.in === 'body') ? args[pathParams.length] : null;
if (bodyOption && typeof bodyOption === 'string') {
bodyOption = JSON.parse(bodyOption);
}
/**
* validate required options

@@ -135,3 +147,3 @@ */

const bodyMap = new Map();
const options = args.slice(params.filter(p => p.required).length)[0] || {};
const options = args.slice(pathParams.length)[0] || {};

@@ -141,11 +153,12 @@ for (const optionParam of params.filter(p => p.in === 'query')) {

const option = options[_changeCase.default.camelCase(optionParam.name)];
const optionName = _changeCase.default.camelCase(optionParam.name);
const option = options[optionName];
const isRequired = Boolean(optionParam.required) || typeof optionParam.required === 'undefined' && typeof optionParam.default === 'undefined';
if ((isRequired || option) && (!option || typeof option !== expectedType)) {
throw new Error(`Expected parameter for option '${optionParam.name}' from type '${expectedType}', found '${typeof option}'`);
if ((isRequired || option) && !(0, _utils.isValidType)(option, expectedType)) {
throw new Error(`Expected parameter for option '${optionName}' from type '${expectedType}', found '${typeof option}'`);
}
if (option) {
if (typeof option !== 'undefined') {
bodyMap.set(optionParam.name, option);

@@ -155,7 +168,8 @@ }

/**
* convert map into json object
* get request body by using the body parameter or convert the parameter
* map into json object
*/
const body = [...bodyMap.entries()].reduce((e, [k, v]) => {
const body = bodyOption || [...bodyMap.entries()].reduce((e, [k, v]) => {
e[k] = v;

@@ -172,5 +186,6 @@ return e;

method: method.toUpperCase(),
[method === 'post' ? 'json' : 'qs']: body,
[method === 'get' ? 'qs' : 'body']: body,
json: true,
auth: this._auth
auth: this._auth,
useQuerystring: true
}, (err, response, body) => {

@@ -185,3 +200,3 @@ /* istanbul ignore if */

if (response.statusCode !== 200) {
const reason = JSON.parse(body).message || 'unknown';
const reason = (0, _utils.getErrorReason)(body);
return reject(new Error(`Failed calling ${propName}, status code: ${response.statusCode}, reason: ${reason}`));

@@ -222,3 +237,3 @@ }

if (res.statusCode !== 200) {
const reason = JSON.parse(body).message || 'unknown';
const reason = (0, _utils.getErrorReason)(body);
return reject(new Error(`There was an error downloading asset ${assetName}, status code: ${res.statusCode}, reason: ${reason}`));

@@ -267,2 +282,2 @@ }

exports.default = SauceLabs;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJTYXVjZUxhYnMiLCJjb25zdHJ1Y3RvciIsIm9wdGlvbnMiLCJfb3B0aW9ucyIsIk9iamVjdCIsImFzc2lnbiIsIkRFRkFVTFRfT1BUSU9OUyIsInVzZXJuYW1lIiwidXNlciIsIl9hY2Nlc3NLZXkiLCJrZXkiLCJfYXV0aCIsInBhc3MiLCJyZWdpb24iLCJoZWFkbGVzcyIsIlByb3h5IiwiZ2V0Iiwib2JqIiwicHJvcE5hbWUiLCJTWU1CT0xfSU5TUEVDVCIsIlNZTUJPTF9UT1NUUklORyIsIlRPX1NUUklOR19UQUciLCJTWU1CT0xfSVRFUkFUT1IiLCJzdGFydHNXaXRoIiwidW5kZWZpbmVkIiwiUFJPVE9DT0xfTUFQIiwiaGFzIiwiRXJyb3IiLCJfZG93bmxvYWRKb2JBc3NldCIsImFyZ3MiLCJkZXNjcmlwdGlvbiIsIm1ldGhvZCIsImVuZHBvaW50IiwiaG9zdCIsImJhc2VQYXRoIiwicGFyYW1zIiwicGFyYW1ldGVycyIsInVybCIsImkiLCJ1cmxQYXJhbSIsImVudHJpZXMiLCJmaWx0ZXIiLCJwIiwiaW4iLCJwYXJhbSIsInR5cGUiLCJyZXBsYWNlIiwibmFtZSIsImJvZHlNYXAiLCJNYXAiLCJzbGljZSIsInJlcXVpcmVkIiwibGVuZ3RoIiwib3B0aW9uUGFyYW0iLCJleHBlY3RlZFR5cGUiLCJvcHRpb24iLCJjaGFuZ2VDYXNlIiwiY2FtZWxDYXNlIiwiaXNSZXF1aXJlZCIsIkJvb2xlYW4iLCJkZWZhdWx0Iiwic2V0IiwiYm9keSIsInJlZHVjZSIsImUiLCJrIiwidiIsInVyaSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwidG9VcHBlckNhc2UiLCJqc29uIiwiYXV0aCIsImVyciIsInJlc3BvbnNlIiwic3RhdHVzQ29kZSIsInJlYXNvbiIsIkpTT04iLCJwYXJzZSIsIm1lc3NhZ2UiLCJqb2JJZCIsImFzc2V0TmFtZSIsImRvd25sb2FkUGF0aCIsImhtYWMiLCJyZXEiLCJEYXRlIiwibm93IiwicmVzIiwiaGVhZGVycyIsImZkIiwiZnMiLCJjcmVhdGVXcml0ZVN0cmVhbSIsInBhdGgiLCJwcm9jZXNzIiwiY3dkIiwiZW5kc1dpdGgiLCJndW56aXAiLCJ6bGliIiwiY3JlYXRlR3VuemlwIiwicGlwZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7Ozs7QUFLZSxNQUFNQSxTQUFOLENBQWdCO0FBQzNCQyxFQUFBQSxXQUFXLENBQUVDLE9BQUYsRUFBVztBQUNsQixTQUFLQyxRQUFMLEdBQWdCQyxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLEVBQWtCQywwQkFBbEIsRUFBbUNKLE9BQW5DLENBQWhCO0FBQ0EsU0FBS0ssUUFBTCxHQUFnQixLQUFLSixRQUFMLENBQWNLLElBQTlCO0FBQ0EsU0FBS0MsVUFBTCxHQUFrQixLQUFLTixRQUFMLENBQWNPLEdBQWhDO0FBQ0EsU0FBS0MsS0FBTCxHQUFhO0FBQ1RILE1BQUFBLElBQUksRUFBRSxLQUFLRCxRQURGO0FBRVRLLE1BQUFBLElBQUksRUFBRSxLQUFLSDtBQUdmOzs7O0FBTGEsS0FBYjtBQVFBLFNBQUtJLE1BQUwsR0FBYyxLQUFLVixRQUFMLENBQWNVLE1BQTVCO0FBQ0EsU0FBS0MsUUFBTCxHQUFnQixLQUFLWCxRQUFMLENBQWNXLFFBQTlCO0FBRUEsV0FBTyxJQUFJQyxLQUFKLENBQVUsRUFBVixFQUFjO0FBQUVDLE1BQUFBLEdBQUcsRUFBSSxLQUFLQSxHQUFULE1BQUksSUFBSjtBQUFMLEtBQWQsQ0FBUDtBQUNIOztBQUVEQSxFQUFBQSxHQUFHLENBQUVDLEdBQUYsRUFBT0MsUUFBUCxFQUFpQjtBQUNoQjs7OztBQUlBLFFBQUlBLFFBQVEsS0FBS0MseUJBQWIsSUFBK0JELFFBQVEsS0FBSyxTQUFoRCxFQUEyRDtBQUN2RCxhQUFPLE1BQU0scUJBQVMsSUFBVCxDQUFiO0FBQ0g7QUFFRDs7Ozs7O0FBSUEsUUFBSUEsUUFBUSxLQUFLRSwwQkFBakIsRUFBa0M7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UUFBVixDQUFtQixLQUFuQixDQUFKLEVBQStCO0FBQzNCLGdCQUFNQyxNQUFNLEdBQUdDLGNBQUtDLFlBQUwsRUFBZjs7QUFDQWQsVUFBQUEsR0FBRyxDQUFDZSxJQUFKLENBQVNILE1BQVQsRUFBaUJHLElBQWpCLENBQXNCVixFQUF0QjtBQUNILFNBSEQsTUFHTztBQUNITCxVQUFBQSxHQUFHLENBQUNlLElBQUosQ0FBU1YsRUFBVDtBQUNIO0FBQ0o7QUFDSixLQXBETSxDQUFQO0FBcURIOztBQTNNMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgZnJvbSAnZnMnXG5pbXBvcnQgemxpYiBmcm9tICd6bGliJ1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcbmltcG9ydCByZXF1ZXN0IGZyb20gJ3JlcXVlc3QnXG5pbXBvcnQgY2hhbmdlQ2FzZSBmcm9tICdjaGFuZ2UtY2FzZSdcblxuaW1wb3J0IHsgY3JlYXRlSE1BQywgZ2V0U2F1Y2VFbmRwb2ludCwgdG9TdHJpbmcsIGdldFBhcmFtZXRlcnMgfSBmcm9tICcuL3V0aWxzJ1xuaW1wb3J0IHtcbiAgICBQUk9UT0NPTF9NQVAsIERFRkFVTFRfT1BUSU9OUywgU1lNQk9MX0lOU1BFQ1QsXG4gICAgU1lNQk9MX1RPU1RSSU5HLCBTWU1CT0xfSVRFUkFUT1IsIFRPX1NUUklOR19UQUdcbn0gZnJvbSAnLi9jb25zdGFudHMnXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNhdWNlTGFicyB7XG4gICAgY29uc3RydWN0b3IgKG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIERFRkFVTFRfT1BUSU9OUywgb3B0aW9ucylcbiAgICAgICAgdGhpcy51c2VybmFtZSA9IHRoaXMuX29wdGlvbnMudXNlclxuICAgICAgICB0aGlzLl9hY2Nlc3NLZXkgPSB0aGlzLl9vcHRpb25zLmtleVxuICAgICAgICB0aGlzLl9hdXRoID0ge1xuICAgICAgICAgICAgdXNlcjogdGhpcy51c2VybmFtZSxcbiAgICAgICAgICAgIHBhc3M6IHRoaXMuX2FjY2Vzc0tleVxuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIHB1YmxpYyBmaWVsZHNcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMucmVnaW9uID0gdGhpcy5fb3B0aW9ucy5yZWdpb25cbiAgICAgICAgdGhpcy5oZWFkbGVzcyA9IHRoaXMuX29wdGlvbnMuaGVhZGxlc3NcblxuICAgICAgICByZXR1cm4gbmV3IFByb3h5KHt9LCB7IGdldDogOjp0aGlzLmdldCB9KVxuICAgIH1cblxuICAgIGdldCAob2JqLCBwcm9wTmFtZSkge1xuICAgICAgICAvKipcbiAgICAgICAgICogcHJpbnQgdG8gc3RyaW5nIG91dHB1dFxuICAgICAgICAgKiBodHRwczovL25vZGVqcy5vcmcvYXBpL3V0aWwuaHRtbCN1dGlsX3V0aWxfaW5zcGVjdF9jdXN0b21cbiAgICAgICAgICovXG4gICAgICAgIGlmIChwcm9wTmFtZSA9PT0gU1lNQk9MX0lOU1BFQ1QgfHwgcHJvcE5hbWUgPT09ICdpbnNwZWN0Jykge1xuICAgICAgICAgICAgcmV0dXJuICgpID0+IHRvU3RyaW5nKHRoaXMpXG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogcHJpbnQgdG8gc3RyaW5nIHRhZ1xuICAgICAgICAgKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9TeW1ib2wvdG9TdHJpbmdUYWdcbiAgICAgICAgICovXG4gICAgICAgIGlmIChwcm9wTmFtZSA9PT0gU1lNQk9MX1RPU1RSSU5HKSB7XG4gICAgICAgICAgICByZXR1cm4gVE9fU1RSSU5HX1RBR1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIHJldHVybiBpbnN0YW5jZSBpdGVyYXRvclxuICAgICAgICAgKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9TeW1ib2wvaXRlcmF0b3JcbiAgICAgICAgICovXG4gICAgICAgIGlmIChwcm9wTmFtZSA9PT0gU1lNQk9MX0lURVJBVE9SKSB7XG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBhbGxvdyB0byByZXR1cm4gcHVibGljbHkgcmVnaXN0ZXJlZCBjbGFzcyBwcm9wZXJ0aWVzXG4gICAgICAgICAqL1xuICAgICAgICBpZiAodGhpc1twcm9wTmFtZV0pIHtcbiAgICAgICAgICAgIHJldHVybiAhcHJvcE5hbWUuc3RhcnRzV2l0aCgnXycpID8gdGhpc1twcm9wTmFtZV0gOiB1bmRlZmluZWRcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghUFJPVE9DT0xfTUFQLmhhcyhwcm9wTmFtZSkpIHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICoganVzdCByZXR1cm4gaWYgcHJvcE5hbWUgaXMgYSBzeW1ib2wgKE5vZGUgOCBhbmQgbG93ZXIpXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGlmICh0eXBlb2YgcHJvcE5hbWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkbid0IGZpbmQgQVBJIGVuZHBvaW50IGZvciBjb21tYW5kIFwiJHtwcm9wTmFtZX1cImApXG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogaGFuZGxlIHNwZWNpYWwgY29tbWFuZHMgbm90IGRlZmluZWQgaW4gdGhlIHByb3RvY29sXG4gICAgICAgICAqL1xuICAgICAgICBpZiAocHJvcE5hbWUgPT09ICdkb3dubG9hZEpvYkFzc2V0Jykge1xuICAgICAgICAgICAgcmV0dXJuIDo6dGhpcy5fZG93bmxvYWRKb2JBc3NldFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICguLi5hcmdzKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IGRlc2NyaXB0aW9uLCBtZXRob2QsIGVuZHBvaW50LCBob3N0LCBiYXNlUGF0aCB9ID0gUFJPVE9DT0xfTUFQLmdldChwcm9wTmFtZSlcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IGdldFBhcmFtZXRlcnMoZGVzY3JpcHRpb24ucGFyYW1ldGVycylcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiB2YWxpZGF0ZSByZXF1aXJlZCB1cmwgcGFyYW1zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGxldCB1cmwgPSBlbmRwb2ludFxuICAgICAgICAgICAgZm9yIChjb25zdCBbaSwgdXJsUGFyYW1dIG9mIE9iamVjdC5lbnRyaWVzKHBhcmFtcy5maWx0ZXIocCA9PiBwLmluID09PSAncGF0aCcpKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtID0gYXJnc1tpXVxuICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSB1cmxQYXJhbS50eXBlLnJlcGxhY2UoJ2ludGVnZXInLCAnbnVtYmVyJylcblxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcGFyYW0gIT09IHR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBwYXJhbWV0ZXIgZm9yIHVybCBwYXJhbSAnJHt1cmxQYXJhbS5uYW1lfScgZnJvbSB0eXBlICcke3R5cGV9JywgZm91bmQgJyR7dHlwZW9mIHBhcmFtfSdgKVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHVybCA9IHVybC5yZXBsYWNlKGB7JHt1cmxQYXJhbS5uYW1lfX1gLCBwYXJhbSlcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiB2YWxpZGF0ZSByZXF1aXJlZCBvcHRpb25zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNvbnN0IGJvZHlNYXAgPSBuZXcgTWFwKClcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSBhcmdzLnNsaWNlKHBhcmFtcy5maWx0ZXIocCA9PiBwLnJlcXVpcmVkKS5sZW5ndGgpWzBdIHx8IHt9XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG9wdGlvblBhcmFtIG9mIHBhcmFtcy5maWx0ZXIocCA9PiBwLmluID09PSAncXVlcnknKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4cGVjdGVkVHlwZSA9IG9wdGlvblBhcmFtLnR5cGUucmVwbGFjZSgnaW50ZWdlcicsICdudW1iZXInKVxuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbiA9IG9wdGlvbnNbY2hhbmdlQ2FzZS5jYW1lbENhc2Uob3B0aW9uUGFyYW0ubmFtZSldXG4gICAgICAgICAgICAgICAgY29uc3QgaXNSZXF1aXJlZCA9IEJvb2xlYW4ob3B0aW9uUGFyYW0ucmVxdWlyZWQpIHx8ICh0eXBlb2Ygb3B0aW9uUGFyYW0ucmVxdWlyZWQgPT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBvcHRpb25QYXJhbS5kZWZhdWx0ID09PSAndW5kZWZpbmVkJylcbiAgICAgICAgICAgICAgICBpZiAoKGlzUmVxdWlyZWQgfHwgb3B0aW9uKSAmJiAoIW9wdGlvbiB8fCB0eXBlb2Ygb3B0aW9uICE9PSBleHBlY3RlZFR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgcGFyYW1ldGVyIGZvciBvcHRpb24gJyR7b3B0aW9uUGFyYW0ubmFtZX0nIGZyb20gdHlwZSAnJHtleHBlY3RlZFR5cGV9JywgZm91bmQgJyR7dHlwZW9mIG9wdGlvbn0nYClcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAob3B0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGJvZHlNYXAuc2V0KG9wdGlvblBhcmFtLm5hbWUsIG9wdGlvbilcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogY29udmVydCBtYXAgaW50byBqc29uIG9iamVjdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjb25zdCBib2R5ID0gWy4uLmJvZHlNYXAuZW50cmllcygpXS5yZWR1Y2UoKGUsIFtrLCB2XSkgPT4ge1xuICAgICAgICAgICAgICAgIGVba10gPSB2XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVcbiAgICAgICAgICAgIH0sIHt9KVxuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIG1ha2UgcmVxdWVzdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjb25zdCB1cmkgPSBnZXRTYXVjZUVuZHBvaW50KGhvc3QgKyBiYXNlUGF0aCwgdGhpcy5fb3B0aW9ucy5yZWdpb24sIHRoaXMuX29wdGlvbnMuaGVhZGxlc3MpICsgdXJsXG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gcmVxdWVzdCh7XG4gICAgICAgICAgICAgICAgdXJpLFxuICAgICAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kLnRvVXBwZXJDYXNlKCksXG4gICAgICAgICAgICAgICAgW21ldGhvZCA9PT0gJ3Bvc3QnID8gJ2pzb24nIDogJ3FzJ106IGJvZHksXG4gICAgICAgICAgICAgICAganNvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBhdXRoOiB0aGlzLl9hdXRoXG4gICAgICAgICAgICB9LCAoZXJyLCByZXNwb25zZSwgYm9keSkgPT4ge1xuICAgICAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1c0NvZGUgIT09IDIwMCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZWFzb24gPSBKU09OLnBhcnNlKGJvZHkpLm1lc3NhZ2UgfHwgJ3Vua25vd24nXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QobmV3IEVycm9yKGBGYWlsZWQgY2FsbGluZyAke3Byb3BOYW1lfSwgc3RhdHVzIGNvZGU6ICR7cmVzcG9uc2Uuc3RhdHVzQ29kZX0sIHJlYXNvbjogJHtyZWFzb259YCkpXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoYm9keSlcbiAgICAgICAgICAgIH0pKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgX2Rvd25sb2FkSm9iQXNzZXQgKGpvYklkLCBhc3NldE5hbWUsIGRvd25sb2FkUGF0aCkge1xuICAgICAgICAvKipcbiAgICAgICAgICogY2hlY2sgam9iIGlkXG4gICAgICAgICAqL1xuICAgICAgICBpZiAodHlwZW9mIGpvYklkICE9PSAnc3RyaW5nJyB8fCB0eXBlb2YgYXNzZXROYW1lICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgbmVlZCB0byBkZWZpbmUgYSBqb2IgaWQgYW5kIHRoZSBmaWxlIG5hbWUgb2YgdGhlIGFzc2V0IGFzIGEgc3RyaW5nJylcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGhtYWMgPSBhd2FpdCBjcmVhdGVITUFDKHRoaXMudXNlcm5hbWUsIHRoaXMuX2FjY2Vzc0tleSwgam9iSWQpXG4gICAgICAgIGNvbnN0IGhvc3QgPSBnZXRTYXVjZUVuZHBvaW50KCdzYXVjZWxhYnMuY29tJywgdGhpcy5fb3B0aW9ucy5yZWdpb24sIHRoaXMuX29wdGlvbnMuaGVhZGxlc3MsICdodHRwczovL2Fzc2V0cy4nKVxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVxID0gcmVxdWVzdCh7XG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgICAgICAgICB1cmk6IGAke2hvc3R9L2pvYnMvJHtqb2JJZH0vJHthc3NldE5hbWV9P3RzPSR7RGF0ZS5ub3coKX0mYXV0aD0ke2htYWN9YFxuICAgICAgICAgICAgfSwgKGVyciwgcmVzLCBib2R5KSA9PiB7XG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogY2hlY2sgaWYgcmVxdWVzdCB3YXMgc3VjY2Vzc2Z1bFxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogY2hlY2sgaWYgd2UgcmVjZWl2ZWQgdGhlIGFzc2V0XG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgaWYgKHJlcy5zdGF0dXNDb2RlICE9PSAyMDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVhc29uID0gSlNPTi5wYXJzZShib2R5KS5tZXNzYWdlIHx8ICd1bmtub3duJ1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBFcnJvcihgVGhlcmUgd2FzIGFuIGVycm9yIGRvd25sb2FkaW5nIGFzc2V0ICR7YXNzZXROYW1lfSwgc3RhdHVzIGNvZGU6ICR7cmVzLnN0YXR1c0NvZGV9LCByZWFzb246ICR7cmVhc29ufWApKVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIHBhcnNlIGFzc2V0IGFzIGpzb24gaWYgcHJvcGVyIGNvbnRlbnQgdHlwZSBpcyBnaXZlblxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIGlmIChyZXMuaGVhZGVyc1snY29udGVudC10eXBlJ10gPT09ICdhcHBsaWNhdGlvbi9qc29uJykge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9keSA9IEpTT04ucGFyc2UoYm9keSlcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG8gbm90aGluZ1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoYm9keSlcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogb25seSBwaXBlIGFzc2V0IHRvIGZpbGUgaWYgcGF0aCBpcyBnaXZlblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpZiAodHlwZW9mIGRvd25sb2FkUGF0aCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmZCA9IGZzLmNyZWF0ZVdyaXRlU3RyZWFtKHBhdGgucmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBkb3dubG9hZFBhdGgpKVxuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogdW56aXAgZ3ppcHBlZCBsb2dzXG4gICAgICAgICAgICAgICAgICogVG9EbzogdGhpcyBvbmx5IGFmZmVjdHMgdHJhY2luZyBsb2dzIHdoaWNoIGFyZSB1cGxvYWRlZCBnemlwcGVkLFxuICAgICAgICAgICAgICAgICAqICAgICAgIHRoZXJlIHNob3VsZCBiZSBzZXBlcmF0ZSBhcGkgZGVmaW5pdGlvbiBmb3IgZXh0ZW5kZWQgZGVidWdnaW5nXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgaWYgKGFzc2V0TmFtZS5lbmRzV2l0aCgnLmd6JykpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3VuemlwID0gemxpYi5jcmVhdGVHdW56aXAoKVxuICAgICAgICAgICAgICAgICAgICByZXEucGlwZShndW56aXApLnBpcGUoZmQpXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVxLnBpcGUoZmQpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJTYXVjZUxhYnMiLCJjb25zdHJ1Y3RvciIsIm9wdGlvbnMiLCJfb3B0aW9ucyIsIk9iamVjdCIsImFzc2lnbiIsIkRFRkFVTFRfT1BUSU9OUyIsInVzZXJuYW1lIiwidXNlciIsIl9hY2Nlc3NLZXkiLCJrZXkiLCJfYXV0aCIsInBhc3MiLCJyZWdpb24iLCJoZWFkbGVzcyIsIlByb3h5IiwiZ2V0Iiwib2JqIiwicHJvcE5hbWUiLCJTWU1CT0xfSU5TUEVDVCIsIlNZTUJPTF9UT1NUUklORyIsIlRPX1NUUklOR19UQUciLCJTWU1CT0xfSVRFUkFUT1IiLCJzdGFydHNXaXRoIiwidW5kZWZpbmVkIiwiUFJPVE9DT0xfTUFQIiwiaGFzIiwiRXJyb3IiLCJfZG93bmxvYWRKb2JBc3NldCIsImFyZ3MiLCJkZXNjcmlwdGlvbiIsIm1ldGhvZCIsImVuZHBvaW50IiwiaG9zdCIsImJhc2VQYXRoIiwicGFyYW1zIiwicGFyYW1ldGVycyIsInBhdGhQYXJhbXMiLCJmaWx0ZXIiLCJwIiwiaW4iLCJ1cmwiLCJpIiwidXJsUGFyYW0iLCJlbnRyaWVzIiwicGFyYW0iLCJ0eXBlIiwicmVwbGFjZSIsIm5hbWUiLCJib2R5T3B0aW9uIiwiZmluZCIsImxlbmd0aCIsIkpTT04iLCJwYXJzZSIsImJvZHlNYXAiLCJNYXAiLCJzbGljZSIsIm9wdGlvblBhcmFtIiwiZXhwZWN0ZWRUeXBlIiwib3B0aW9uTmFtZSIsImNoYW5nZUNhc2UiLCJjYW1lbENhc2UiLCJvcHRpb24iLCJpc1JlcXVpcmVkIiwiQm9vbGVhbiIsInJlcXVpcmVkIiwiZGVmYXVsdCIsInNldCIsImJvZHkiLCJyZWR1Y2UiLCJlIiwiayIsInYiLCJ1cmkiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInRvVXBwZXJDYXNlIiwianNvbiIsImF1dGgiLCJ1c2VRdWVyeXN0cmluZyIsImVyciIsInJlc3BvbnNlIiwic3RhdHVzQ29kZSIsInJlYXNvbiIsImpvYklkIiwiYXNzZXROYW1lIiwiZG93bmxvYWRQYXRoIiwiaG1hYyIsInJlcSIsIkRhdGUiLCJub3ciLCJyZXMiLCJoZWFkZXJzIiwiZmQiLCJmcyIsImNyZWF0ZVdyaXRlU3RyZWFtIiwicGF0aCIsInByb2Nlc3MiLCJjd2QiLCJlbmRzV2l0aCIsImd1bnppcCIsInpsaWIiLCJjcmVhdGVHdW56aXAiLCJwaXBlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFJQTs7OztBQUtlLE1BQU1BLFNBQU4sQ0FBZ0I7QUFDM0JDLEVBQUFBLFdBQVcsQ0FBRUMsT0FBRixFQUFXO0FBQ2xCLFNBQUtDLFFBQUwsR0FBZ0JDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLEVBQWQsRUFBa0JDLDBCQUFsQixFQUFtQ0osT0FBbkMsQ0FBaEI7QUFDQSxTQUFLSyxRQUFMLEdBQWdCLEtBQUtKLFFBQUwsQ0FBY0ssSUFBOUI7QUFDQSxTQUFLQyxVQUFMLEdBQWtCLEtBQUtOLFFBQUwsQ0FBY08sR0FBaEM7QUFDQSxTQUFLQyxLQUFMLEdBQWE7QUFDVEgsTUFBQUEsSUFBSSxFQUFFLEtBQUtELFFBREY7QUFFVEssTUFBQUEsSUFBSSxFQUFFLEtBQUtIO0FBR2Y7Ozs7QUFMYSxLQUFiO0FBUUEsU0FBS0ksTUFBTCxHQUFjLEtBQUtWLFFBQUwsQ0FBY1UsTUFBNUI7QUFDQSxTQUFLQyxRQUFMLEdBQWdCLEtBQUtYLFFBQUwsQ0FBY1csUUFBOUI7QUFFQSxXQUFPLElBQUlDLEtBQUosQ0FBVSxFQUFWLEVBQWM7QUFBRUMsTUFBQUEsR0FBRyxFQUFJLEtBQUtBLEdBQVQsTUFBSSxJQUFKO0FBQUwsS0FBZCxDQUFQO0FBQ0g7O0FBRURBLEVBQUFBLEdBQUcsQ0FBRUMsR0FBRixFQUFPQyxRQUFQLEVBQWlCO0FBQ2hCOzs7O0FBSUEsUUFBSUEsUUFBUSxLQUFLQyx5QkFBYixJQUErQkQsUUFBUSxLQUFLLFNBQWhELEVBQTJEO0FBQ3ZELGFBQU8sTUFBTSxxQkFBUyxJQUFULENB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LENBQVA7QUFDSCxXQUZELENBRUUsT0FBT0UsQ0FBUCxFQUFVLENBQ1I7QUFDSDtBQUNKOztBQUVELGVBQU9LLE9BQU8sQ0FBQ1AsSUFBRCxDQUFkO0FBQ0gsT0EvQlcsQ0FBWjtBQWlDQTs7OztBQUdBLFVBQUksT0FBT21CLFlBQVAsS0FBd0IsUUFBNUIsRUFBc0M7QUFDbEMsY0FBTU8sRUFBRSxHQUFHQyxZQUFHQyxpQkFBSCxDQUFxQkMsY0FBS3RCLE9BQUwsQ0FBYXVCLE9BQU8sQ0FBQ0MsR0FBUixFQUFiLEVBQTRCWixZQUE1QixDQUFyQixDQUFYO0FBRUE7Ozs7Ozs7QUFLQSxZQUFJRCxTQUFTLENBQUNjLFFBQVYsQ0FBbUIsS0FBbkIsQ0FBSixFQUErQjtBQUMzQixnQkFBTUMsTUFBTSxHQUFHQyxjQUFLQyxZQUFMLEVBQWY7O0FBQ0FkLFVBQUFBLEdBQUcsQ0FBQ2UsSUFBSixDQUFTSCxNQUFULEVBQWlCRyxJQUFqQixDQUFzQlYsRUFBdEI7QUFDSCxTQUhELE1BR087QUFDSEwsVUFBQUEsR0FBRyxDQUFDZSxJQUFKLENBQVNWLEVBQVQ7QUFDSDtBQUNKO0FBQ0osS0FwRE0sQ0FBUDtBQXFESDs7QUEzTjBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gJ2ZzJ1xuaW1wb3J0IHpsaWIgZnJvbSAnemxpYidcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnXG5pbXBvcnQgcmVxdWVzdCBmcm9tICdyZXF1ZXN0J1xuaW1wb3J0IGNoYW5nZUNhc2UgZnJvbSAnY2hhbmdlLWNhc2UnXG5cbmltcG9ydCB7XG4gICAgY3JlYXRlSE1BQywgZ2V0U2F1Y2VFbmRwb2ludCwgdG9TdHJpbmcsIGdldFBhcmFtZXRlcnMsXG4gICAgaXNWYWxpZFR5cGUsIGdldEVycm9yUmVhc29uXG59IGZyb20gJy4vdXRpbHMnXG5pbXBvcnQge1xuICAgIFBST1RPQ09MX01BUCwgREVGQVVMVF9PUFRJT05TLCBTWU1CT0xfSU5TUEVDVCwgU1lNQk9MX1RPU1RSSU5HLFxuICAgIFNZTUJPTF9JVEVSQVRPUiwgVE9fU1RSSU5HX1RBR1xufSBmcm9tICcuL2NvbnN0YW50cydcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2F1Y2VMYWJzIHtcbiAgICBjb25zdHJ1Y3RvciAob3B0aW9ucykge1xuICAgICAgICB0aGlzLl9vcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9PUFRJT05TLCBvcHRpb25zKVxuICAgICAgICB0aGlzLnVzZXJuYW1lID0gdGhpcy5fb3B0aW9ucy51c2VyXG4gICAgICAgIHRoaXMuX2FjY2Vzc0tleSA9IHRoaXMuX29wdGlvbnMua2V5XG4gICAgICAgIHRoaXMuX2F1dGggPSB7XG4gICAgICAgICAgICB1c2VyOiB0aGlzLnVzZXJuYW1lLFxuICAgICAgICAgICAgcGFzczogdGhpcy5fYWNjZXNzS2V5XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogcHVibGljIGZpZWxkc1xuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5yZWdpb24gPSB0aGlzLl9vcHRpb25zLnJlZ2lvblxuICAgICAgICB0aGlzLmhlYWRsZXNzID0gdGhpcy5fb3B0aW9ucy5oZWFkbGVzc1xuXG4gICAgICAgIHJldHVybiBuZXcgUHJveHkoe30sIHsgZ2V0OiA6OnRoaXMuZ2V0IH0pXG4gICAgfVxuXG4gICAgZ2V0IChvYmosIHByb3BOYW1lKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBwcmludCB0byBzdHJpbmcgb3V0cHV0XG4gICAgICAgICAqIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvdXRpbC5odG1sI3V0aWxfdXRpbF9pbnNwZWN0X2N1c3RvbVxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKHByb3BOYW1lID09PSBTWU1CT0xfSU5TUEVDVCB8fCBwcm9wTmFtZSA9PT0gJ2luc3BlY3QnKSB7XG4gICAgICAgICAgICByZXR1cm4gKCkgPT4gdG9TdHJpbmcodGhpcylcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBwcmludCB0byBzdHJpbmcgdGFnXG4gICAgICAgICAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL1N5bWJvbC90b1N0cmluZ1RhZ1xuICAgICAgICAgKi9cbiAgICAgICAgaWYgKHByb3BOYW1lID09PSBTWU1CT0xfVE9TVFJJTkcpIHtcbiAgICAgICAgICAgIHJldHVybiBUT19TVFJJTkdfVEFHXG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogcmV0dXJuIGluc3RhbmNlIGl0ZXJhdG9yXG4gICAgICAgICAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL1N5bWJvbC9pdGVyYXRvclxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKHByb3BOYW1lID09PSBTWU1CT0xfSVRFUkFUT1IpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIGFsbG93IHRvIHJldHVybiBwdWJsaWNseSByZWdpc3RlcmVkIGNsYXNzIHByb3BlcnRpZXNcbiAgICAgICAgICovXG4gICAgICAgIGlmICh0aGlzW3Byb3BOYW1lXSkge1xuICAgICAgICAgICAgcmV0dXJuICFwcm9wTmFtZS5zdGFydHNXaXRoKCdfJykgPyB0aGlzW3Byb3BOYW1lXSA6IHVuZGVmaW5lZFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFQUk9UT0NPTF9NQVAuaGFzKHByb3BOYW1lKSkge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBqdXN0IHJldHVybiBpZiBwcm9wTmFtZSBpcyBhIHN5bWJvbCAoTm9kZSA4IGFuZCBsb3dlcilcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wTmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmluZCBBUEkgZW5kcG9pbnQgZm9yIGNvbW1hbmQgXCIke3Byb3BOYW1lfVwiYClcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBoYW5kbGUgc3BlY2lhbCBjb21tYW5kcyBub3QgZGVmaW5lZCBpbiB0aGUgcHJvdG9jb2xcbiAgICAgICAgICovXG4gICAgICAgIGlmIChwcm9wTmFtZSA9PT0gJ2Rvd25sb2FkSm9iQXNzZXQnKSB7XG4gICAgICAgICAgICByZXR1cm4gOjp0aGlzLl9kb3dubG9hZEpvYkFzc2V0XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgZGVzY3JpcHRpb24sIG1ldGhvZCwgZW5kcG9pbnQsIGhvc3QsIGJhc2VQYXRoIH0gPSBQUk9UT0NPTF9NQVAuZ2V0KHByb3BOYW1lKVxuICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gZ2V0UGFyYW1ldGVycyhkZXNjcmlwdGlvbi5wYXJhbWV0ZXJzKVxuICAgICAgICAgICAgY29uc3QgcGF0aFBhcmFtcyA9IHBhcmFtcy5maWx0ZXIocCA9PiBwLmluID09PSAncGF0aCcpXG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogdmFsaWRhdGUgcmVxdWlyZWQgdXJsIHBhcmFtc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBsZXQgdXJsID0gZW5kcG9pbnRcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2ksIHVybFBhcmFtXSBvZiBPYmplY3QuZW50cmllcyhwYXRoUGFyYW1zKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtID0gYXJnc1tpXVxuICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSB1cmxQYXJhbS50eXBlLnJlcGxhY2UoJ2ludGVnZXInLCAnbnVtYmVyJylcblxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcGFyYW0gIT09IHR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBwYXJhbWV0ZXIgZm9yIHVybCBwYXJhbSAnJHt1cmxQYXJhbS5uYW1lfScgZnJvbSB0eXBlICcke3R5cGV9JywgZm91bmQgJyR7dHlwZW9mIHBhcmFtfSdgKVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHVybCA9IHVybC5yZXBsYWNlKGB7JHt1cmxQYXJhbS5uYW1lfX1gLCBwYXJhbSlcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBjaGVjayBmb3IgYm9keSBwYXJhbSAoYXMgbGFzdCBwYXJhbWV0ZXIgYXMgd2UgZG9uJ3QgZXhwZWN0IHJlcXVlc3RcbiAgICAgICAgICAgICAqIHBhcmFtZXRlcnMgZm9yIG5vbiBpZGVtcG90ZW50IHJlcXVlc3RzKVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBsZXQgYm9keU9wdGlvbiA9IHBhcmFtcy5maW5kKHAgPT4gcC5pbiA9PT0gJ2JvZHknKVxuICAgICAgICAgICAgICAgID8gYXJnc1twYXRoUGFyYW1zLmxlbmd0aF1cbiAgICAgICAgICAgICAgICA6IG51bGxcblxuICAgICAgICAgICAgaWYgKGJvZHlPcHRpb24gJiYgdHlwZW9mIGJvZHlPcHRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgYm9keU9wdGlvbiA9IEpTT04ucGFyc2UoYm9keU9wdGlvbilcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiB2YWxpZGF0ZSByZXF1aXJlZCBvcHRpb25zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNvbnN0IGJvZHlNYXAgPSBuZXcgTWFwKClcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSBhcmdzLnNsaWNlKHBhdGhQYXJhbXMubGVuZ3RoKVswXSB8fCB7fVxuICAgICAgICAgICAgZm9yIChjb25zdCBvcHRpb25QYXJhbSBvZiBwYXJhbXMuZmlsdGVyKHAgPT4gcC5pbiA9PT0gJ3F1ZXJ5JykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBleHBlY3RlZFR5cGUgPSBvcHRpb25QYXJhbS50eXBlLnJlcGxhY2UoJ2ludGVnZXInLCAnbnVtYmVyJylcbiAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25OYW1lID0gY2hhbmdlQ2FzZS5jYW1lbENhc2Uob3B0aW9uUGFyYW0ubmFtZSlcbiAgICAgICAgICAgICAgICBjb25zdCBvcHRpb24gPSBvcHRpb25zW29wdGlvbk5hbWVdXG4gICAgICAgICAgICAgICAgY29uc3QgaXNSZXF1aXJlZCA9IEJvb2xlYW4ob3B0aW9uUGFyYW0ucmVxdWlyZWQpIHx8ICh0eXBlb2Ygb3B0aW9uUGFyYW0ucmVxdWlyZWQgPT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBvcHRpb25QYXJhbS5kZWZhdWx0ID09PSAndW5kZWZpbmVkJylcbiAgICAgICAgICAgICAgICBpZiAoKGlzUmVxdWlyZWQgfHwgb3B0aW9uKSAmJiAhaXNWYWxpZFR5cGUob3B0aW9uLCBleHBlY3RlZFR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgcGFyYW1ldGVyIGZvciBvcHRpb24gJyR7b3B0aW9uTmFtZX0nIGZyb20gdHlwZSAnJHtleHBlY3RlZFR5cGV9JywgZm91bmQgJyR7dHlwZW9mIG9wdGlvbn0nYClcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9wdGlvbiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgYm9keU1hcC5zZXQob3B0aW9uUGFyYW0ubmFtZSwgb3B0aW9uKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBnZXQgcmVxdWVzdCBib2R5IGJ5IHVzaW5nIHRoZSBib2R5IHBhcmFtZXRlciBvciBjb252ZXJ0IHRoZSBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAqIG1hcCBpbnRvIGpzb24gb2JqZWN0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNvbnN0IGJvZHkgPSBib2R5T3B0aW9uIHx8IFsuLi5ib2R5TWFwLmVudHJpZXMoKV0ucmVkdWNlKChlLCBbaywgdl0pID0+IHtcbiAgICAgICAgICAgICAgICBlW2tdID0gdlxuICAgICAgICAgICAgICAgIHJldHVybiBlXG4gICAgICAgICAgICB9LCB7fSlcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBtYWtlIHJlcXVlc3RcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY29uc3QgdXJpID0gZ2V0U2F1Y2VFbmRwb2ludChob3N0ICsgYmFzZVBhdGgsIHRoaXMuX29wdGlvbnMucmVnaW9uLCB0aGlzLl9vcHRpb25zLmhlYWRsZXNzKSArIHVybFxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHJlcXVlc3Qoe1xuICAgICAgICAgICAgICAgIHVyaSxcbiAgICAgICAgICAgICAgICBtZXRob2Q6IG1ldGhvZC50b1VwcGVyQ2FzZSgpLFxuICAgICAgICAgICAgICAgIFttZXRob2QgPT09ICdnZXQnID8gJ3FzJyA6ICdib2R5J106IGJvZHksXG4gICAgICAgICAgICAgICAganNvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBhdXRoOiB0aGlzLl9hdXRoLFxuICAgICAgICAgICAgICAgIHVzZVF1ZXJ5c3RyaW5nOiB0cnVlXG4gICAgICAgICAgICB9LCAoZXJyLCByZXNwb25zZSwgYm9keSkgPT4ge1xuICAgICAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1c0NvZGUgIT09IDIwMCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZWFzb24gPSBnZXRFcnJvclJlYXNvbihib2R5KVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBFcnJvcihgRmFpbGVkIGNhbGxpbmcgJHtwcm9wTmFtZX0sIHN0YXR1cyBjb2RlOiAke3Jlc3BvbnNlLnN0YXR1c0NvZGV9LCByZWFzb246ICR7cmVhc29ufWApKVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKGJvZHkpXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIF9kb3dubG9hZEpvYkFzc2V0IChqb2JJZCwgYXNzZXROYW1lLCBkb3dubG9hZFBhdGgpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGNoZWNrIGpvYiBpZFxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKHR5cGVvZiBqb2JJZCAhPT0gJ3N0cmluZycgfHwgdHlwZW9mIGFzc2V0TmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignWW91IG5lZWQgdG8gZGVmaW5lIGEgam9iIGlkIGFuZCB0aGUgZmlsZSBuYW1lIG9mIHRoZSBhc3NldCBhcyBhIHN0cmluZycpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBobWFjID0gYXdhaXQgY3JlYXRlSE1BQyh0aGlzLnVzZXJuYW1lLCB0aGlzLl9hY2Nlc3NLZXksIGpvYklkKVxuICAgICAgICBjb25zdCBob3N0ID0gZ2V0U2F1Y2VFbmRwb2ludCgnc2F1Y2VsYWJzLmNvbScsIHRoaXMuX29wdGlvbnMucmVnaW9uLCB0aGlzLl9vcHRpb25zLmhlYWRsZXNzLCAnaHR0cHM6Ly9hc3NldHMuJylcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlcSA9IHJlcXVlc3Qoe1xuICAgICAgICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgICAgICAgICAgdXJpOiBgJHtob3N0fS9qb2JzLyR7am9iSWR9LyR7YXNzZXROYW1lfT90cz0ke0RhdGUubm93KCl9JmF1dGg9JHtobWFjfWBcbiAgICAgICAgICAgIH0sIChlcnIsIHJlcywgYm9keSkgPT4ge1xuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIGNoZWNrIGlmIHJlcXVlc3Qgd2FzIHN1Y2Nlc3NmdWxcbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXJyKVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIGNoZWNrIGlmIHdlIHJlY2VpdmVkIHRoZSBhc3NldFxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIGlmIChyZXMuc3RhdHVzQ29kZSAhPT0gMjAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlYXNvbiA9IGdldEVycm9yUmVhc29uKGJvZHkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QobmV3IEVycm9yKGBUaGVyZSB3YXMgYW4gZXJyb3IgZG93bmxvYWRpbmcgYXNzZXQgJHthc3NldE5hbWV9LCBzdGF0dXMgY29kZTogJHtyZXMuc3RhdHVzQ29kZX0sIHJlYXNvbjogJHtyZWFzb259YCkpXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogcGFyc2UgYXNzZXQgYXMganNvbiBpZiBwcm9wZXIgY29udGVudCB0eXBlIGlzIGdpdmVuXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgaWYgKHJlcy5oZWFkZXJzWydjb250ZW50LXR5cGUnXSA9PT0gJ2FwcGxpY2F0aW9uL2pzb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5ID0gSlNPTi5wYXJzZShib2R5KVxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBkbyBub3RoaW5nXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShib2R5KVxuICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBvbmx5IHBpcGUgYXNzZXQgdG8gZmlsZSBpZiBwYXRoIGlzIGdpdmVuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGlmICh0eXBlb2YgZG93bmxvYWRQYXRoID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZkID0gZnMuY3JlYXRlV3JpdGVTdHJlYW0ocGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCksIGRvd25sb2FkUGF0aCkpXG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiB1bnppcCBnemlwcGVkIGxvZ3NcbiAgICAgICAgICAgICAgICAgKiBUb0RvOiB0aGlzIG9ubHkgYWZmZWN0cyB0cmFjaW5nIGxvZ3Mgd2hpY2ggYXJlIHVwbG9hZGVkIGd6aXBwZWQsXG4gICAgICAgICAgICAgICAgICogICAgICAgdGhlcmUgc2hvdWxkIGJlIHNlcGVyYXRlIGFwaSBkZWZpbml0aW9uIGZvciBleHRlbmRlZCBkZWJ1Z2dpbmdcbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICBpZiAoYXNzZXROYW1lLmVuZHNXaXRoKCcuZ3onKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBndW56aXAgPSB6bGliLmNyZWF0ZUd1bnppcCgpXG4gICAgICAgICAgICAgICAgICAgIHJlcS5waXBlKGd1bnppcCkucGlwZShmZClcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXEucGlwZShmZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfVxufVxuIl19

@@ -10,2 +10,4 @@ "use strict";

exports.getParameters = getParameters;
exports.isValidType = isValidType;
exports.getErrorReason = getErrorReason;

@@ -55,4 +57,17 @@ require("source-map-support/register");

const dcRegion = _constants.REGION_MAPPING[region] ? region : 'us';
const prefix = headless ? 'us-east1.headless.' : _constants.REGION_MAPPING[dcRegion];
return protocol + prefix + hostname;
let locale = headless ? 'us-east1.headless.' : _constants.REGION_MAPPING[dcRegion];
let subdomain = '';
/**
* check if endpoint base has subdomain
* e.g. api.saucelabs.com
*/
if (!headless && hostname.split('.').length > 2) {
subdomain = hostname.split('.')[0] + '.';
hostname = hostname.split('.').slice(-2).join('.');
} else if (!headless && region === 'us') {
locale = '';
}
return protocol + subdomain + locale + hostname;
}

@@ -95,2 +110,47 @@ /**

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy5qcyJdLCJuYW1lcyI6WyJjcmVhdGVITUFDIiwidXNlcm5hbWUiLCJrZXkiLCJqb2JJZCIsImhtYWMiLCJjcnlwdG8iLCJjcmVhdGVIbWFjIiwid3JpdGUiLCJlbmQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsIm9uIiwiZGF0YSIsInJlYWQiLCJFcnJvciIsInRvU3RyaW5nIiwiZ2V0U2F1Y2VFbmRwb2ludCIsImhvc3RuYW1lIiwicmVnaW9uIiwiaGVhZGxlc3MiLCJwcm90b2NvbCIsImRjUmVnaW9uIiwiUkVHSU9OX01BUFBJTkciLCJwcmVmaXgiLCJzY29wZSIsIlRPX1NUUklOR19UQUciLCJfYWNjZXNzS2V5Iiwic2xpY2UiLCJfb3B0aW9ucyIsImdldFBhcmFtZXRlcnMiLCJwYXJhbWV0ZXJzIiwicGFyYW1zIiwibWFwIiwidXJsUGFyYW1ldGVyIiwiJHJlZiIsIlBBUkFNRVRFUlNfTUFQIiwiZ2V0Iiwic3BsaXQiLCJzb3J0IiwiYSIsImIiLCJyZXF1aXJlZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUE7O0FBRUE7Ozs7QUFFQTs7Ozs7Ozs7QUFRTyxTQUFTQSxVQUFULENBQXFCQyxRQUFyQixFQUErQkMsR0FBL0IsRUFBb0NDLEtBQXBDLEVBQTJDO0FBQzlDLFFBQU1DLElBQUksR0FBR0MsZ0JBQU9DLFVBQVAsQ0FBa0IsS0FBbEIsRUFBMEIsR0FBRUwsUUFBUyxJQUFHQyxHQUFJLEVBQTVDLENBQWI7O0FBQ0FFLEVBQUFBLElBQUksQ0FBQ0csS0FBTCxDQUFXSixLQUFYO0FBQ0FDLEVBQUFBLElBQUksQ0FBQ0ksR0FBTDtBQUNBLFNBQU8sSUFBSUMsT0FBSixDQUFZLENBQUNDLE9BQUQsRUFBVUMsTUFBVixLQUFxQlAsSUFBSSxDQUFDUSxFQUFMLENBQVEsVUFBUixFQUFvQixNQUFNO0FBQzlELFVBQU1DLElBQUksR0FBR1QsSUFBSSxDQUFDVSxJQUFMLEVBQWI7O0FBQ0EsUUFBSSxDQUFDRCxJQUFMLEVBQVc7QUFDUCxhQUFPRixNQUFNLENBQUMsSUFBSUksS0FBSixDQUFVLDZCQUFWLENBQUQsQ0FBYjtBQUNIOztBQUNELFdBQU9MLE9BQU8sQ0FBQ0csSUFBSSxDQUFDRyxRQUFMLENBQWMsS0FBZCxDQUFELENBQWQ7QUFDSCxHQU51QyxDQUFqQyxDQUFQO0FBT0g7QUFFRDs7Ozs7Ozs7OztBQVFPLFNBQVNDLGdCQUFULENBQTJCQyxRQUEzQixFQUFxQ0MsTUFBckMsRUFBNkNDLFFBQTdDLEVBQXVEQyxRQUFRLEdBQUcsVUFBbEUsRUFBOEU7QUFDakYsUUFBTUMsUUFBUSxHQUFHQywwQkFBZUosTUFBZixJQUF5QkEsTUFBekIsR0FBa0MsSUFBbkQ7QUFDQSxRQUFNSyxNQUFNLEdBQUdKLFFBQVEsR0FBRyxvQkFBSCxHQUEwQkcsMEJBQWVELFFBQWYsQ0FBakQ7QUFDQSxTQUFPRCxRQUFRLEdBQUdHLE1BQVgsR0FBb0JOLFFBQTNCO0FBQ0g7QUFFRDs7Ozs7OztBQUtPLFNBQVNGLFFBQVQsQ0FBbUJTLEtBQW5CLEVBQTBCO0FBQzdCLFNBQVEsR0FBRUMsd0JBQWM7V0FDakJELEtBQUssQ0FBQ3hCLFFBQVM7d0NBQ2N3QixLQUFLLENBQUNFLFVBQU4sQ0FBaUJDLEtBQWpCLENBQXVCLENBQUMsQ0FBeEIsQ0FBMkI7YUFDdERILEtBQUssQ0FBQ0ksUUFBTixDQUFlVixNQUFPO2NBQ3JCTSxLQUFLLENBQUNJLFFBQU4sQ0FBZVQsUUFBUztFQUpsQztBQU1IO0FBRUQ7Ozs7Ozs7QUFLTyxTQUFTVSxhQUFULENBQXdCQyxVQUFVLEdBQUcsRUFBckMsRUFBeUM7QUFDNUMsUUFBTUMsTUFBTSxHQUFHRCxVQUFVLENBQUNFLEdBQVgsQ0FDVkMsWUFBRCxJQUFrQkEsWUFBWSxDQUFDQyxJQUFiLEdBQ1pDLDBCQUFlQyxHQUFmLENBQW1CSCxZQUFZLENBQUNDLElBQWIsQ0FBa0JHLEtBQWxCLENBQXdCLEdBQXhCLEVBQTZCVixLQUE3QixDQUFtQyxDQUFDLENBQXBDLEVBQXVDLENBQXZDLENBQW5CLENBRFksR0FFWk0sWUFISyxDQUFmO0FBS0EsU0FBT0YsTUFBTSxDQUFDTyxJQUFQLENBQVksQ0FBQ0MsQ0FBRCxFQUFJQyxDQUFKLEtBQVU7QUFDekIsUUFBSUQsQ0FBQyxDQUFDRSxRQUFGLElBQWNELENBQUMsQ0FBQ0MsUUFBcEIsRUFBOEI7QUFDMUIsYUFBTyxDQUFQO0FBQ0g7O0FBQ0QsUUFBSUYsQ0FBQyxDQUFDRSxRQUFGLElBQWMsQ0FBQ0QsQ0FBQyxDQUFDQyxRQUFyQixFQUErQjtBQUMzQixhQUFPLENBQUMsQ0FBUjtBQUNIOztBQUNELFdBQU8sQ0FBUDtBQUNILEdBUk0sQ0FBUDtBQVNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNyeXB0byBmcm9tICdjcnlwdG8nXG5cbmltcG9ydCB7IFJFR0lPTl9NQVBQSU5HLCBUT19TVFJJTkdfVEFHLCBQQVJBTUVURVJTX01BUCB9IGZyb20gJy4vY29uc3RhbnRzJ1xuXG4vKipcbiAqIENyZWF0ZSBITUFDIHRva2VuIHRvIHJlY2VpdmUgam9iIGFzc2V0c1xuICpcbiAqIEBwYXJhbSAge3N0cmluZ30gdXNlcm5hbWUgIHVzZXJuYW1lIG9mIHVzZXJcbiAqIEBwYXJhbSAge3N0cmluZ30ga2V5ICAgICAgIGFjY2VzcyBrZXkgb2YgdXNlclxuICogQHBhcmFtICB7c3RyaW5nfSBqb2JJZCAgICAgam9iIGlkIG9mIGpvYiB5b3Ugd2FudCB0byBnZXQgYWNjZXNzIHRvXG4gKiBAcmV0dXJuIHtzdHJpbmd9ICAgICAgICAgICBobWFjIHRva2VuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVITUFDICh1c2VybmFtZSwga2V5LCBqb2JJZCkge1xuICAgIGNvbnN0IGhtYWMgPSBjcnlwdG8uY3JlYXRlSG1hYygnbWQ1JywgYCR7dXNlcm5hbWV9OiR7a2V5fWApXG4gICAgaG1hYy53cml0ZShqb2JJZClcbiAgICBobWFjLmVuZCgpXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IGhtYWMub24oJ3JlYWRhYmxlJywgKCkgPT4ge1xuICAgICAgICBjb25zdCBkYXRhID0gaG1hYy5yZWFkKClcbiAgICAgICAgaWYgKCFkYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBFcnJvcignQ291bGQgbm90IGNyZWF0ZSBITUFDIHRva2VuJykpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc29sdmUoZGF0YS50b1N0cmluZygnaGV4JykpXG4gICAgfSkpXG59XG5cbi8qKlxuICogZ2V0IHNhdWNlIEFQSSB1cmxcbiAqIEBwYXJhbSAge3N0cmluZ30gIGhvc3RuYW1lICBob3N0IG5hbWUgb2YgdGhlIEFQSSB0aGF0IGlzIGJlaW5nIHVzZWRcbiAqIEBwYXJhbSAge3N0cmluZ30gIHJlZ2lvbiAgICByZWdpb24gb2YgdGhlIGRhdGFjZW50ZXJcbiAqIEBwYXJhbSAge2Jvb2xlYW59IGhlYWRsZXNzICB0cnVlIGlmIGpvYiBpcyBydW5uaW5nIG9uIGhlYWRsZXNzIGluc3RhbmNlXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICBwcm90b2NvbCAgcHJvdGNvbCB0byBiZSB1c2VkXG4gKiBAcmV0dXJuIHtzdHJpbmd9ICAgICAgICAgICAgZW5kcG9pbnQgYmFzZSB1cmwgKGUuZy4gYGh0dHBzOi8vdXMtZWFzdDEuaGVhZGxlc3Muc2F1Y2VsYWJzLmNvbWApXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTYXVjZUVuZHBvaW50IChob3N0bmFtZSwgcmVnaW9uLCBoZWFkbGVzcywgcHJvdG9jb2wgPSAnaHR0cHM6Ly8nKSB7XG4gICAgY29uc3QgZGNSZWdpb24gPSBSRUdJT05fTUFQUElOR1tyZWdpb25dID8gcmVnaW9uIDogJ3VzJ1xuICAgIGNvbnN0IHByZWZpeCA9IGhlYWRsZXNzID8gJ3VzLWVhc3QxLmhlYWRsZXNzLicgOiBSRUdJT05fTUFQUElOR1tkY1JlZ2lvbl1cbiAgICByZXR1cm4gcHJvdG9jb2wgKyBwcmVmaXggKyBob3N0bmFtZVxufVxuXG4vKipcbiAqIHRvU3RyaW5nIG1ldGhvZCBmb3IgcHJveHkgaW5zdGFuY2VcbiAqIEBwYXJhbSAge29iamVjdH0gc2NvcGUgIGFjdHVhbCBBUEkgaW5zdGFuY2VcbiAqIEByZXR1cm4ge3N0cmluZ30gICAgICAgIHRvIHN0cmluZyBvdXRwdXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvU3RyaW5nIChzY29wZSkge1xuICAgIHJldHVybiBgJHtUT19TVFJJTkdfVEFHfSB7XG4gIHVzZXI6ICcke3Njb3BlLnVzZXJuYW1lfScsXG4gIGtleTogJ1hYWFhYWFhYLVhYWFgtWFhYWC1YWFhYLVhYWFhYWCR7c2NvcGUuX2FjY2Vzc0tleS5zbGljZSgtNil9JyxcbiAgcmVnaW9uOiAnJHtzY29wZS5fb3B0aW9ucy5yZWdpb259JyxcbiAgaGVhZGxlc3M6ICR7c2NvcGUuX29wdGlvbnMuaGVhZGxlc3N9XG59YFxufVxuXG4vKipcbiAqIGdldCBzb3J0ZWQgbGlzdCBvZiBwYXJhbWV0ZXJzIHdpdGggZnVsbCBkZXNjcmlwdGlvblxuICogQHBhcmFtICB7QXJyYXl9ICAgIFtwYXJhbWV0ZXJzPVtdXSAgcGFyYW1ldGVyIGRlZmluZWQgaW4gZW5kcG9pbnRcbiAqIEByZXR1cm4ge1tPYmplY3RdfSAgICAgICAgICAgICAgICAgIGZ1bGwgZGVzY3JpcHRpb24gb2YgcGFyYW1ldGVyc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFyYW1ldGVycyAocGFyYW1ldGVycyA9IFtdKSB7XG4gICAgY29uc3QgcGFyYW1zID0gcGFyYW1ldGVycy5tYXAoXG4gICAgICAgICh1cmxQYXJhbWV0ZXIpID0+IHVybFBhcmFtZXRlci4kcmVmXG4gICAgICAgICAgICA/IFBBUkFNRVRFUlNfTUFQLmdldCh1cmxQYXJhbWV0ZXIuJHJlZi5zcGxpdCgnLycpLnNsaWNlKC0xKVswXSlcbiAgICAgICAgICAgIDogdXJsUGFyYW1ldGVyKVxuXG4gICAgcmV0dXJuIHBhcmFtcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIGlmIChhLnJlcXVpcmVkICYmIGIucmVxdWlyZWQpIHtcbiAgICAgICAgICAgIHJldHVybiAwXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGEucmVxdWlyZWQgJiYgIWIucmVxdWlyZWQpIHtcbiAgICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAxXG4gICAgfSlcbn1cbiJdfQ==
/**
* type check for endpoint parameters
* @param {*} option given command parameters
* @param {String} expectedType expected parameter type
* @return {Boolean} true if typecheck was ok
*/
function isValidType(option, expectedType) {
if (expectedType === 'array') {
return Array.isArray(option);
}
return typeof option === expectedType;
}
/**
* get error message from API call
* @param {*} body body message of response
* @return {String} error message
*/
function getErrorReason(body = {}) {
if (typeof body === 'string') {
try {
body = JSON.parse(body);
} catch (e) {
body = {
message: body
};
}
}
/**
* due to a bug in the performance API we need to workaround this
*/
if (Array.isArray(body)) {
body = {
message: body[0]
};
}
return body.message || body.detail || 'unknown';
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy5qcyJdLCJuYW1lcyI6WyJjcmVhdGVITUFDIiwidXNlcm5hbWUiLCJrZXkiLCJqb2JJZCIsImhtYWMiLCJjcnlwdG8iLCJjcmVhdGVIbWFjIiwid3JpdGUiLCJlbmQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsIm9uIiwiZGF0YSIsInJlYWQiLCJFcnJvciIsInRvU3RyaW5nIiwiZ2V0U2F1Y2VFbmRwb2ludCIsImhvc3RuYW1lIiwicmVnaW9uIiwiaGVhZGxlc3MiLCJwcm90b2NvbCIsImRjUmVnaW9uIiwiUkVHSU9OX01BUFBJTkciLCJsb2NhbGUiLCJzdWJkb21haW4iLCJzcGxpdCIsImxlbmd0aCIsInNsaWNlIiwiam9pbiIsInNjb3BlIiwiVE9fU1RSSU5HX1RBRyIsIl9hY2Nlc3NLZXkiLCJfb3B0aW9ucyIsImdldFBhcmFtZXRlcnMiLCJwYXJhbWV0ZXJzIiwicGFyYW1zIiwibWFwIiwidXJsUGFyYW1ldGVyIiwiJHJlZiIsIlBBUkFNRVRFUlNfTUFQIiwiZ2V0Iiwic29ydCIsImEiLCJiIiwicmVxdWlyZWQiLCJpc1ZhbGlkVHlwZSIsIm9wdGlvbiIsImV4cGVjdGVkVHlwZSIsIkFycmF5IiwiaXNBcnJheSIsImdldEVycm9yUmVhc29uIiwiYm9keSIsIkpTT04iLCJwYXJzZSIsImUiLCJtZXNzYWdlIiwiZGV0YWlsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBOztBQUVBOzs7O0FBRUE7Ozs7Ozs7O0FBUU8sU0FBU0EsVUFBVCxDQUFxQkMsUUFBckIsRUFBK0JDLEdBQS9CLEVBQW9DQyxLQUFwQyxFQUEyQztBQUM5QyxRQUFNQyxJQUFJLEdBQUdDLGdCQUFPQyxVQUFQLENBQWtCLEtBQWxCLEVBQTBCLEdBQUVMLFFBQVMsSUFBR0MsR0FBSSxFQUE1QyxDQUFiOztBQUNBRSxFQUFBQSxJQUFJLENBQUNHLEtBQUwsQ0FBV0osS0FBWDtBQUNBQyxFQUFBQSxJQUFJLENBQUNJLEdBQUw7QUFDQSxTQUFP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SUEsWUFBWSxLQUFLLE9BQXJCLEVBQThCO0FBQzFCLFdBQU9DLEtBQUssQ0FBQ0MsT0FBTixDQUFjSCxNQUFkLENBQVA7QUFDSDs7QUFDRCxTQUFPLE9BQU9BLE1BQVAsS0FBa0JDLFlBQXpCO0FBQ0g7QUFFRDs7Ozs7OztBQUtPLFNBQVNHLGNBQVQsQ0FBeUJDLElBQUksR0FBRyxFQUFoQyxFQUFvQztBQUN2QyxNQUFJLE9BQU9BLElBQVAsS0FBZ0IsUUFBcEIsRUFBOEI7QUFDMUIsUUFBSTtBQUNBQSxNQUFBQSxJQUFJLEdBQUdDLElBQUksQ0FBQ0MsS0FBTCxDQUFXRixJQUFYLENBQVA7QUFDSCxLQUZELENBRUUsT0FBT0csQ0FBUCxFQUFVO0FBQ1JILE1BQUFBLElBQUksR0FBRztBQUFFSSxRQUFBQSxPQUFPLEVBQUVKO0FBQVgsT0FBUDtBQUNIO0FBQ0o7QUFFRDs7Ozs7QUFHQSxNQUFJSCxLQUFLLENBQUNDLE9BQU4sQ0FBY0UsSUFBZCxDQUFKLEVBQXlCO0FBQ3JCQSxJQUFBQSxJQUFJLEdBQUc7QUFBRUksTUFBQUEsT0FBTyxFQUFFSixJQUFJLENBQUMsQ0FBRDtBQUFmLEtBQVA7QUFDSDs7QUFFRCxTQUFPQSxJQUFJLENBQUNJLE9BQUwsSUFBZ0JKLElBQUksQ0FBQ0ssTUFBckIsSUFBK0IsU0FBdEM7QUFDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjcnlwdG8gZnJvbSAnY3J5cHRvJ1xuXG5pbXBvcnQgeyBSRUdJT05fTUFQUElORywgVE9fU1RSSU5HX1RBRywgUEFSQU1FVEVSU19NQVAgfSBmcm9tICcuL2NvbnN0YW50cydcblxuLyoqXG4gKiBDcmVhdGUgSE1BQyB0b2tlbiB0byByZWNlaXZlIGpvYiBhc3NldHNcbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd9IHVzZXJuYW1lICB1c2VybmFtZSBvZiB1c2VyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IGtleSAgICAgICBhY2Nlc3Mga2V5IG9mIHVzZXJcbiAqIEBwYXJhbSAge3N0cmluZ30gam9iSWQgICAgIGpvYiBpZCBvZiBqb2IgeW91IHdhbnQgdG8gZ2V0IGFjY2VzcyB0b1xuICogQHJldHVybiB7c3RyaW5nfSAgICAgICAgICAgaG1hYyB0b2tlblxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSE1BQyAodXNlcm5hbWUsIGtleSwgam9iSWQpIHtcbiAgICBjb25zdCBobWFjID0gY3J5cHRvLmNyZWF0ZUhtYWMoJ21kNScsIGAke3VzZXJuYW1lfToke2tleX1gKVxuICAgIGhtYWMud3JpdGUoam9iSWQpXG4gICAgaG1hYy5lbmQoKVxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiBobWFjLm9uKCdyZWFkYWJsZScsICgpID0+IHtcbiAgICAgICAgY29uc3QgZGF0YSA9IGhtYWMucmVhZCgpXG4gICAgICAgIGlmICghZGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlamVjdChuZXcgRXJyb3IoJ0NvdWxkIG5vdCBjcmVhdGUgSE1BQyB0b2tlbicpKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXNvbHZlKGRhdGEudG9TdHJpbmcoJ2hleCcpKVxuICAgIH0pKVxufVxuXG4vKipcbiAqIGdldCBzYXVjZSBBUEkgdXJsXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICBob3N0bmFtZSAgaG9zdCBuYW1lIG9mIHRoZSBBUEkgdGhhdCBpcyBiZWluZyB1c2VkXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICByZWdpb24gICAgcmVnaW9uIG9mIHRoZSBkYXRhY2VudGVyXG4gKiBAcGFyYW0gIHtib29sZWFufSBoZWFkbGVzcyAgdHJ1ZSBpZiBqb2IgaXMgcnVubmluZyBvbiBoZWFkbGVzcyBpbnN0YW5jZVxuICogQHBhcmFtICB7c3RyaW5nfSAgcHJvdG9jb2wgIHByb3Rjb2wgdG8gYmUgdXNlZFxuICogQHJldHVybiB7c3RyaW5nfSAgICAgICAgICAgIGVuZHBvaW50IGJhc2UgdXJsIChlLmcuIGBodHRwczovL3VzLWVhc3QxLmhlYWRsZXNzLnNhdWNlbGFicy5jb21gKVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2F1Y2VFbmRwb2ludCAoaG9zdG5hbWUsIHJlZ2lvbiwgaGVhZGxlc3MsIHByb3RvY29sID0gJ2h0dHBzOi8vJykge1xuICAgIGNvbnN0IGRjUmVnaW9uID0gUkVHSU9OX01BUFBJTkdbcmVnaW9uXSA/IHJlZ2lvbiA6ICd1cydcbiAgICBsZXQgbG9jYWxlID0gaGVhZGxlc3MgPyAndXMtZWFzdDEuaGVhZGxlc3MuJyA6IFJFR0lPTl9NQVBQSU5HW2RjUmVnaW9uXVxuICAgIGxldCBzdWJkb21haW4gPSAnJ1xuXG4gICAgLyoqXG4gICAgICogY2hlY2sgaWYgZW5kcG9pbnQgYmFzZSBoYXMgc3ViZG9tYWluXG4gICAgICogZS5nLiBhcGkuc2F1Y2VsYWJzLmNvbVxuICAgICAqL1xuICAgIGlmICghaGVhZGxlc3MgJiYgaG9zdG5hbWUuc3BsaXQoJy4nKS5sZW5ndGggPiAyKSB7XG4gICAgICAgIHN1YmRvbWFpbiA9IGhvc3RuYW1lLnNwbGl0KCcuJylbMF0gKyAnLidcbiAgICAgICAgaG9zdG5hbWUgPSBob3N0bmFtZS5zcGxpdCgnLicpLnNsaWNlKC0yKS5qb2luKCcuJylcbiAgICB9IGVsc2UgaWYgKCFoZWFkbGVzcyAmJiByZWdpb24gPT09ICd1cycpIHtcbiAgICAgICAgbG9jYWxlID0gJydcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvdG9jb2wgKyBzdWJkb21haW4gKyBsb2NhbGUgKyBob3N0bmFtZVxufVxuXG4vKipcbiAqIHRvU3RyaW5nIG1ldGhvZCBmb3IgcHJveHkgaW5zdGFuY2VcbiAqIEBwYXJhbSAge29iamVjdH0gc2NvcGUgIGFjdHVhbCBBUEkgaW5zdGFuY2VcbiAqIEByZXR1cm4ge3N0cmluZ30gICAgICAgIHRvIHN0cmluZyBvdXRwdXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvU3RyaW5nIChzY29wZSkge1xuICAgIHJldHVybiBgJHtUT19TVFJJTkdfVEFHfSB7XG4gIHVzZXI6ICcke3Njb3BlLnVzZXJuYW1lfScsXG4gIGtleTogJ1hYWFhYWFhYLVhYWFgtWFhYWC1YWFhYLVhYWFhYWCR7c2NvcGUuX2FjY2Vzc0tleS5zbGljZSgtNil9JyxcbiAgcmVnaW9uOiAnJHtzY29wZS5fb3B0aW9ucy5yZWdpb259JyxcbiAgaGVhZGxlc3M6ICR7c2NvcGUuX29wdGlvbnMuaGVhZGxlc3N9XG59YFxufVxuXG4vKipcbiAqIGdldCBzb3J0ZWQgbGlzdCBvZiBwYXJhbWV0ZXJzIHdpdGggZnVsbCBkZXNjcmlwdGlvblxuICogQHBhcmFtICB7QXJyYXl9ICAgIFtwYXJhbWV0ZXJzPVtdXSAgcGFyYW1ldGVyIGRlZmluZWQgaW4gZW5kcG9pbnRcbiAqIEByZXR1cm4ge1tPYmplY3RdfSAgICAgICAgICAgICAgICAgIGZ1bGwgZGVzY3JpcHRpb24gb2YgcGFyYW1ldGVyc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFyYW1ldGVycyAocGFyYW1ldGVycyA9IFtdKSB7XG4gICAgY29uc3QgcGFyYW1zID0gcGFyYW1ldGVycy5tYXAoXG4gICAgICAgICh1cmxQYXJhbWV0ZXIpID0+IHVybFBhcmFtZXRlci4kcmVmXG4gICAgICAgICAgICA/IFBBUkFNRVRFUlNfTUFQLmdldCh1cmxQYXJhbWV0ZXIuJHJlZi5zcGxpdCgnLycpLnNsaWNlKC0xKVswXSlcbiAgICAgICAgICAgIDogdXJsUGFyYW1ldGVyKVxuXG4gICAgcmV0dXJuIHBhcmFtcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIGlmIChhLnJlcXVpcmVkICYmIGIucmVxdWlyZWQpIHtcbiAgICAgICAgICAgIHJldHVybiAwXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGEucmVxdWlyZWQgJiYgIWIucmVxdWlyZWQpIHtcbiAgICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAxXG4gICAgfSlcbn1cblxuLyoqXG4gKiB0eXBlIGNoZWNrIGZvciBlbmRwb2ludCBwYXJhbWV0ZXJzXG4gKiBAcGFyYW0gIHsqfSAgICAgIG9wdGlvbiAgICAgICAgZ2l2ZW4gY29tbWFuZCBwYXJhbWV0ZXJzXG4gKiBAcGFyYW0gIHtTdHJpbmd9IGV4cGVjdGVkVHlwZSAgZXhwZWN0ZWQgcGFyYW1ldGVyIHR5cGVcbiAqIEByZXR1cm4ge0Jvb2xlYW59ICAgICAgICAgICAgICB0cnVlIGlmIHR5cGVjaGVjayB3YXMgb2tcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRUeXBlIChvcHRpb24sIGV4cGVjdGVkVHlwZSkge1xuICAgIGlmIChleHBlY3RlZFR5cGUgPT09ICdhcnJheScpIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkob3B0aW9uKVxuICAgIH1cbiAgICByZXR1cm4gdHlwZW9mIG9wdGlvbiA9PT0gZXhwZWN0ZWRUeXBlXG59XG5cbi8qKlxuICogZ2V0IGVycm9yIG1lc3NhZ2UgZnJvbSBBUEkgY2FsbFxuICogQHBhcmFtICB7Kn0gYm9keSAgICBib2R5IG1lc3NhZ2Ugb2YgcmVzcG9uc2VcbiAqIEByZXR1cm4ge1N0cmluZ30gICAgZXJyb3IgbWVzc2FnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXJyb3JSZWFzb24gKGJvZHkgPSB7fSkge1xuICAgIGlmICh0eXBlb2YgYm9keSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGJvZHkgPSBKU09OLnBhcnNlKGJvZHkpXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGJvZHkgPSB7IG1lc3NhZ2U6IGJvZHkgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZHVlIHRvIGEgYnVnIGluIHRoZSBwZXJmb3JtYW5jZSBBUEkgd2UgbmVlZCB0byB3b3JrYXJvdW5kIHRoaXNcbiAgICAgKi9cbiAgICBpZiAoQXJyYXkuaXNBcnJheShib2R5KSkge1xuICAgICAgICBib2R5ID0geyBtZXNzYWdlOiBib2R5WzBdIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYm9keS5tZXNzYWdlIHx8IGJvZHkuZGV0YWlsIHx8ICd1bmtub3duJ1xufVxuIl19

@@ -215,4 +215,5 @@ SauceLabs Interface

<h3>Example:</h3>
<code>api.listBuildJobs(id)</code>
</td>
<code>api.listBuildJobs(id, { ...options })</code>
<br><h4>Options</h4>
<ul> <li><b>full</b>: Should the return result contain everything or just the basics</li> </ul> </td>
</tr>

@@ -219,0 +220,0 @@ <tr>

{
"name": "saucelabs",
"version": "2.1.1",
"version": "2.1.2",
"author": "Christian Bromann <christian@saucelabs.com>",

@@ -5,0 +5,0 @@ "description": "A wrapper around Sauce Labs REST API",

@@ -78,2 +78,8 @@ <p align="center">

or update the job status by calling:
```sh
sl updateJob cb-onboarding 690c5877710c422d8be4c622b40c747f "{\"passed\":false}"
```
### As NPM Package

@@ -80,0 +86,0 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc