Socket
Socket
Sign inDemoInstall

saucelabs

Package Overview
Dependencies
4
Maintainers
4
Versions
121
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 2.0.1 to 2.1.0

apis/performance.json

6

build/constants.js

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

const protocols = [require('../apis/sauce.json'), require('../apis/rdc.json')];
const protocols = [require('../apis/sauce.json'), require('../apis/rdc.json'), require('../apis/performance.json')];
const protocolFlattened = new Map();

@@ -46,3 +46,3 @@ const parametersFlattened = new Map();

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

@@ -118,2 +118,2 @@

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

@@ -178,3 +178,4 @@ "use strict";

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

@@ -258,2 +259,2 @@

exports.default = SauceLabs;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJTYXVjZUxhYnMiLCJjb25zdHJ1Y3RvciIsIm9wdGlvbnMiLCJfb3B0aW9ucyIsIk9iamVjdCIsImFzc2lnbiIsIkRFRkFVTFRfT1BUSU9OUyIsInVzZXJuYW1lIiwidXNlciIsIl9hY2Nlc3NLZXkiLCJrZXkiLCJfYXV0aCIsInBhc3MiLCJyZWdpb24iLCJoZWFkbGVzcyIsIlByb3h5IiwiZ2V0Iiwib2JqIiwicHJvcE5hbWUiLCJTWU1CT0xfSU5TUEVDVCIsIlNZTUJPTF9UT1NUUklORyIsIlRPX1NUUklOR19UQUciLCJTWU1CT0xfSVRFUkFUT1IiLCJzdGFydHNXaXRoIiwidW5kZWZpbmVkIiwiUFJPVE9DT0xfTUFQIiwiaGFzIiwiRXJyb3IiLCJfZG93bmxvYWRKb2JBc3NldCIsImFyZ3MiLCJkZXNjcmlwdGlvbiIsIm1ldGhvZCIsImVuZHBvaW50IiwiaG9zdCIsImJhc2VQYXRoIiwicGFyYW1zIiwicGFyYW1ldGVycyIsInVybCIsImkiLCJ1cmxQYXJhbSIsImVudHJpZXMiLCJmaWx0ZXIiLCJwIiwiaW4iLCJwYXJhbSIsInR5cGUiLCJyZXBsYWNlIiwibmFtZSIsImJvZHlNYXAiLCJNYXAiLCJzbGljZSIsInJlcXVpcmVkIiwibGVuZ3RoIiwib3B0aW9uUGFyYW0iLCJleHBlY3RlZFR5cGUiLCJvcHRpb24iLCJjaGFuZ2VDYXNlIiwiY2FtZWxDYXNlIiwiaXNSZXF1aXJlZCIsIkJvb2xlYW4iLCJkZWZhdWx0Iiwic2V0IiwiYm9keSIsInJlZHVjZSIsImUiLCJrIiwidiIsInVyaSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwidG9VcHBlckNhc2UiLCJqc29uIiwiYXV0aCIsImVyciIsInJlc3BvbnNlIiwic3RhdHVzQ29kZSIsIm1lc3NhZ2UiLCJqb2JJZCIsImFzc2V0TmFtZSIsImRvd25sb2FkUGF0aCIsImhtYWMiLCJyZXEiLCJEYXRlIiwibm93IiwicmVzIiwicmVhc29uIiwiSlNPTiIsInBhcnNlIiwiaGVhZGVycyIsImZkIiwiZnMiLCJjcmVhdGVXcml0ZVN0cmVhbSIsInBhdGgiLCJwcm9jZXNzIiwiY3dkIiwiZW5kc1dpdGgiLCJndW56aXAiLCJ6bGliIiwiY3JlYXRlR3VuemlwIiwicGlwZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7Ozs7QUFLZSxNQUFNQSxTQUFOLENBQWdCO0FBQzNCQyxFQUFBQSxXQUFXLENBQUVDLE9BQUYsRUFBVztBQUNsQixTQUFLQyxRQUFMLEdBQWdCQyxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLEVBQWtCQywwQkFBbEIsRUFBbUNKLE9BQW5DLENBQWhCO0FBQ0EsU0FBS0ssUUFBTCxHQUFnQixLQUFLSixRQUFMLENBQWNLLElBQTlCO0FBQ0EsU0FBS0MsVUFBTCxHQUFrQixLQUFLTixRQUFMLENBQWNPLEdBQWhDO0FBQ0EsU0FBS0MsS0FBTCxHQUFhO0FBQ1RILE1BQUFBLElBQUksRUFBRSxLQUFLRCxRQURGO0FBRVRLLE1BQUFBLElBQUksRUFBRSxLQUFLSDtBQUdmOzs7O0FBTGEsS0FBYjtBQVFBLFNBQUtJLE1BQUwsR0FBYyxLQUFLVixRQUFMLENBQWNVLE1BQTVCO0FBQ0EsU0FBS0MsUUFBTCxHQUFnQixLQUFLWCxRQUFMLENBQWNXLFFBQTlCO0FBRUEsV0FBTyxJQUFJQyxLQUFKLENBQVUsRUFBVixFQUFjO0FBQUVDLE1BQUFBLEdBQUcsRUFBSSxLQUFLQSxHQUFULE1BQUksSUFBSjtBQUFMLEtBQWQsQ0FBUDtBQUNIOztBQUVEQSxFQUFBQSxHQUFHLENBQUVDLEdBQUYsRUFBT0MsUUFBUCxFQUFpQjtBQUNoQjs7OztBQUlBLFFBQUlBLFFBQVEsS0FBS0MseUJBQWIsSUFBK0JELFFBQVEsS0FBSyxTQUFoRCxFQUEyRDtBQUN2RCxhQUFPLE1BQU0scUJBQVMsSUFBVCxDQUFiO0FBQ0g7QUFFRDs7Ozs7O0FBSUEsUUFBSUEsUUFBUSxLQUFLRSwwQkFBakIsRUFBa0M7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OztBQUNBakIsVUFBQUEsR0FBRyxDQUFDa0IsSUFBSixDQUFTSCxNQUFULEVBQWlCRyxJQUFqQixDQUFzQlYsRUFBdEI7QUFDSCxTQUhELE1BR087QUFDSFIsVUFBQUEsR0FBRyxDQUFDa0IsSUFBSixDQUFTVixFQUFUO0FBQ0g7QUFDSjtBQUNKLEtBcERNLENBQVA7QUFxREg7O0FBMU0wQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tICdmcydcbmltcG9ydCB6bGliIGZyb20gJ3psaWInXG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJ1xuaW1wb3J0IHJlcXVlc3QgZnJvbSAncmVxdWVzdCdcbmltcG9ydCBjaGFuZ2VDYXNlIGZyb20gJ2NoYW5nZS1jYXNlJ1xuXG5pbXBvcnQgeyBjcmVhdGVITUFDLCBnZXRTYXVjZUVuZHBvaW50LCB0b1N0cmluZywgZ2V0UGFyYW1ldGVycyB9IGZyb20gJy4vdXRpbHMnXG5pbXBvcnQge1xuICAgIFBST1RPQ09MX01BUCwgREVGQVVMVF9PUFRJT05TLCBTWU1CT0xfSU5TUEVDVCxcbiAgICBTWU1CT0xfVE9TVFJJTkcsIFNZTUJPTF9JVEVSQVRPUiwgVE9fU1RSSU5HX1RBR1xufSBmcm9tICcuL2NvbnN0YW50cydcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2F1Y2VMYWJzIHtcbiAgICBjb25zdHJ1Y3RvciAob3B0aW9ucykge1xuICAgICAgICB0aGlzLl9vcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9PUFRJT05TLCBvcHRpb25zKVxuICAgICAgICB0aGlzLnVzZXJuYW1lID0gdGhpcy5fb3B0aW9ucy51c2VyXG4gICAgICAgIHRoaXMuX2FjY2Vzc0tleSA9IHRoaXMuX29wdGlvbnMua2V5XG4gICAgICAgIHRoaXMuX2F1dGggPSB7XG4gICAgICAgICAgICB1c2VyOiB0aGlzLnVzZXJuYW1lLFxuICAgICAgICAgICAgcGFzczogdGhpcy5fYWNjZXNzS2V5XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogcHVibGljIGZpZWxkc1xuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5yZWdpb24gPSB0aGlzLl9vcHRpb25zLnJlZ2lvblxuICAgICAgICB0aGlzLmhlYWRsZXNzID0gdGhpcy5fb3B0aW9ucy5oZWFkbGVzc1xuXG4gICAgICAgIHJldHVybiBuZXcgUHJveHkoe30sIHsgZ2V0OiA6OnRoaXMuZ2V0IH0pXG4gICAgfVxuXG4gICAgZ2V0IChvYmosIHByb3BOYW1lKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBwcmludCB0byBzdHJpbmcgb3V0cHV0XG4gICAgICAgICAqIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvdXRpbC5odG1sI3V0aWxfdXRpbF9pbnNwZWN0X2N1c3RvbVxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKHByb3BOYW1lID09PSBTWU1CT0xfSU5TUEVDVCB8fCBwcm9wTmFtZSA9PT0gJ2luc3BlY3QnKSB7XG4gICAgICAgICAgICByZXR1cm4gKCkgPT4gdG9TdHJpbmcodGhpcylcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBwcmludCB0byBzdHJpbmcgdGFnXG4gICAgICAgICAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL1N5bWJvbC90b1N0cmluZ1RhZ1xuICAgICAgICAgKi9cbiAgICAgICAgaWYgKHByb3BOYW1lID09PSBTWU1CT0xfVE9TVFJJTkcpIHtcbiAgICAgICAgICAgIHJldHVybiBUT19TVFJJTkdfVEFHXG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogcmV0dXJuIGluc3RhbmNlIGl0ZXJhdG9yXG4gICAgICAgICAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL1N5bWJvbC9pdGVyYXRvclxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKHByb3BOYW1lID09PSBTWU1CT0xfSVRFUkFUT1IpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIGFsbG93IHRvIHJldHVybiBwdWJsaWNseSByZWdpc3RlcmVkIGNsYXNzIHByb3BlcnRpZXNcbiAgICAgICAgICovXG4gICAgICAgIGlmICh0aGlzW3Byb3BOYW1lXSkge1xuICAgICAgICAgICAgcmV0dXJuICFwcm9wTmFtZS5zdGFydHNXaXRoKCdfJykgPyB0aGlzW3Byb3BOYW1lXSA6IHVuZGVmaW5lZFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFQUk9UT0NPTF9NQVAuaGFzKHByb3BOYW1lKSkge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBqdXN0IHJldHVybiBpZiBwcm9wTmFtZSBpcyBhIHN5bWJvbCAoTm9kZSA4IGFuZCBsb3dlcilcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wTmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmluZCBBUEkgZW5kcG9pbnQgZm9yIGNvbW1hbmQgXCIke3Byb3BOYW1lfVwiYClcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBoYW5kbGUgc3BlY2lhbCBjb21tYW5kcyBub3QgZGVmaW5lZCBpbiB0aGUgcHJvdG9jb2xcbiAgICAgICAgICovXG4gICAgICAgIGlmIChwcm9wTmFtZSA9PT0gJ2Rvd25sb2FkSm9iQXNzZXQnKSB7XG4gICAgICAgICAgICByZXR1cm4gOjp0aGlzLl9kb3dubG9hZEpvYkFzc2V0XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgZGVzY3JpcHRpb24sIG1ldGhvZCwgZW5kcG9pbnQsIGhvc3QsIGJhc2VQYXRoIH0gPSBQUk9UT0NPTF9NQVAuZ2V0KHByb3BOYW1lKVxuICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gZ2V0UGFyYW1ldGVycyhkZXNjcmlwdGlvbi5wYXJhbWV0ZXJzKVxuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIHZhbGlkYXRlIHJlcXVpcmVkIHVybCBwYXJhbXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbGV0IHVybCA9IGVuZHBvaW50XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtpLCB1cmxQYXJhbV0gb2YgT2JqZWN0LmVudHJpZXMocGFyYW1zLmZpbHRlcihwID0+IHAuaW4gPT09ICdwYXRoJykpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyYW0gPSBhcmdzW2ldXG4gICAgICAgICAgICAgICAgY29uc3QgdHlwZSA9IHVybFBhcmFtLnR5cGUucmVwbGFjZSgnaW50ZWdlcicsICdudW1iZXInKVxuXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwYXJhbSAhPT0gdHlwZSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIHBhcmFtZXRlciBmb3IgdXJsIHBhcmFtICcke3VybFBhcmFtLm5hbWV9JyBmcm9tIHR5cGUgJyR7dHlwZX0nLCBmb3VuZCAnJHt0eXBlb2YgcGFyYW19J2ApXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdXJsID0gdXJsLnJlcGxhY2UoYHske3VybFBhcmFtLm5hbWV9fWAsIHBhcmFtKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIHZhbGlkYXRlIHJlcXVpcmVkIG9wdGlvbnNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY29uc3QgYm9keU1hcCA9IG5ldyBNYXAoKVxuICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IGFyZ3Muc2xpY2UocGFyYW1zLmZpbHRlcihwID0+IHAucmVxdWlyZWQpLmxlbmd0aClbMF0gfHwge31cbiAgICAgICAgICAgIGZvciAoY29uc3Qgb3B0aW9uUGFyYW0gb2YgcGFyYW1zLmZpbHRlcihwID0+IHAuaW4gPT09ICdxdWVyeScpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwZWN0ZWRUeXBlID0gb3B0aW9uUGFyYW0udHlwZS5yZXBsYWNlKCdpbnRlZ2VyJywgJ251bWJlcicpXG4gICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9uID0gb3B0aW9uc1tjaGFuZ2VDYXNlLmNhbWVsQ2FzZShvcHRpb25QYXJhbS5uYW1lKV1cbiAgICAgICAgICAgICAgICBjb25zdCBpc1JlcXVpcmVkID0gQm9vbGVhbihvcHRpb25QYXJhbS5yZXF1aXJlZCkgfHwgKHR5cGVvZiBvcHRpb25QYXJhbS5yZXF1aXJlZCA9PT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIG9wdGlvblBhcmFtLmRlZmF1bHQgPT09ICd1bmRlZmluZWQnKVxuICAgICAgICAgICAgICAgIGlmICgoaXNSZXF1aXJlZCB8fCBvcHRpb24pICYmICghb3B0aW9uIHx8IHR5cGVvZiBvcHRpb24gIT09IGV4cGVjdGVkVHlwZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBwYXJhbWV0ZXIgZm9yIG9wdGlvbiAnJHtvcHRpb25QYXJhbS5uYW1lfScgZnJvbSB0eXBlICcke2V4cGVjdGVkVHlwZX0nLCBmb3VuZCAnJHt0eXBlb2Ygb3B0aW9ufSdgKVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChvcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgYm9keU1hcC5zZXQob3B0aW9uUGFyYW0ubmFtZSwgb3B0aW9uKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBjb252ZXJ0IG1hcCBpbnRvIGpzb24gb2JqZWN0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNvbnN0IGJvZHkgPSBbLi4uYm9keU1hcC5lbnRyaWVzKCldLnJlZHVjZSgoZSwgW2ssIHZdKSA9PiB7XG4gICAgICAgICAgICAgICAgZVtrXSA9IHZcbiAgICAgICAgICAgICAgICByZXR1cm4gZVxuICAgICAgICAgICAgfSwge30pXG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogbWFrZSByZXF1ZXN0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNvbnN0IHVyaSA9IGdldFNhdWNlRW5kcG9pbnQoaG9zdCArIGJhc2VQYXRoLCB0aGlzLl9vcHRpb25zLnJlZ2lvbiwgdGhpcy5fb3B0aW9ucy5oZWFkbGVzcykgKyB1cmxcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiByZXF1ZXN0KHtcbiAgICAgICAgICAgICAgICB1cmksXG4gICAgICAgICAgICAgICAgbWV0aG9kOiBtZXRob2QudG9VcHBlckNhc2UoKSxcbiAgICAgICAgICAgICAgICBbbWV0aG9kID09PSAncG9zdCcgPyAnanNvbicgOiAncXMnXTogYm9keSxcbiAgICAgICAgICAgICAgICBqc29uOiB0cnVlLFxuICAgICAgICAgICAgICAgIGF1dGg6IHRoaXMuX2F1dGhcbiAgICAgICAgICAgIH0sIChlcnIsIHJlc3BvbnNlLCBib2R5KSA9PiB7XG4gICAgICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycilcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzQ29kZSAhPT0gMjAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QobmV3IEVycm9yKChib2R5ICYmIGJvZHkubWVzc2FnZSkgfHwgYFVua25vd24gRXJyb3IgKCR7cmVzcG9uc2Uuc3RhdHVzQ29kZX0pYCkpXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoYm9keSlcbiAgICAgICAgICAgIH0pKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgX2Rvd25sb2FkSm9iQXNzZXQgKGpvYklkLCBhc3NldE5hbWUsIGRvd25sb2FkUGF0aCkge1xuICAgICAgICAvKipcbiAgICAgICAgICogY2hlY2sgam9iIGlkXG4gICAgICAgICAqL1xuICAgICAgICBpZiAodHlwZW9mIGpvYklkICE9PSAnc3RyaW5nJyB8fCB0eXBlb2YgYXNzZXROYW1lICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgbmVlZCB0byBkZWZpbmUgYSBqb2IgaWQgYW5kIHRoZSBmaWxlIG5hbWUgb2YgdGhlIGFzc2V0IGFzIGEgc3RyaW5nJylcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGhtYWMgPSBhd2FpdCBjcmVhdGVITUFDKHRoaXMudXNlcm5hbWUsIHRoaXMuX2FjY2Vzc0tleSwgam9iSWQpXG4gICAgICAgIGNvbnN0IGhvc3QgPSBnZXRTYXVjZUVuZHBvaW50KCdzYXVjZWxhYnMuY29tJywgdGhpcy5fb3B0aW9ucy5yZWdpb24sIHRoaXMuX29wdGlvbnMuaGVhZGxlc3MsICdodHRwczovL2Fzc2V0cy4nKVxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVxID0gcmVxdWVzdCh7XG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgICAgICAgICB1cmk6IGAke2hvc3R9L2pvYnMvJHtqb2JJZH0vJHthc3NldE5hbWV9P3RzPSR7RGF0ZS5ub3coKX0mYXV0aD0ke2htYWN9YFxuICAgICAgICAgICAgfSwgKGVyciwgcmVzLCBib2R5KSA9PiB7XG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogY2hlY2sgaWYgcmVxdWVzdCB3YXMgc3VjY2Vzc2Z1bFxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogY2hlY2sgaWYgd2UgcmVjZWl2ZWQgdGhlIGFzc2V0XG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgaWYgKHJlcy5zdGF0dXNDb2RlICE9PSAyMDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVhc29uID0gSlNPTi5wYXJzZShib2R5KS5tZXNzYWdlIHx8ICd1bmtub3duJ1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBFcnJvcihgVGhlcmUgd2FzIGFuIGVycm9yIGRvd25sb2FkaW5nIGFzc2V0ICR7YXNzZXROYW1lfSwgc3RhdHVzIGNvZGU6ICR7cmVzLnN0YXR1c0NvZGV9LCByZWFzb246ICR7cmVhc29ufWApKVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIHBhcnNlIGFzc2V0IGFzIGpzb24gaWYgcHJvcGVyIGNvbnRlbnQgdHlwZSBpcyBnaXZlblxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIGlmIChyZXMuaGVhZGVyc1snY29udGVudC10eXBlJ10gPT09ICdhcHBsaWNhdGlvbi9qc29uJykge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9keSA9IEpTT04ucGFyc2UoYm9keSlcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG8gbm90aGluZ1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoYm9keSlcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogb25seSBwaXBlIGFzc2V0IHRvIGZpbGUgaWYgcGF0aCBpcyBnaXZlblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpZiAodHlwZW9mIGRvd25sb2FkUGF0aCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmZCA9IGZzLmNyZWF0ZVdyaXRlU3RyZWFtKHBhdGgucmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBkb3dubG9hZFBhdGgpKVxuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogdW56aXAgZ3ppcHBlZCBsb2dzXG4gICAgICAgICAgICAgICAgICogVG9EbzogdGhpcyBvbmx5IGFmZmVjdHMgdHJhY2luZyBsb2dzIHdoaWNoIGFyZSB1cGxvYWRlZCBnemlwcGVkLFxuICAgICAgICAgICAgICAgICAqICAgICAgIHRoZXJlIHNob3VsZCBiZSBzZXBlcmF0ZSBhcGkgZGVmaW5pdGlvbiBmb3IgZXh0ZW5kZWQgZGVidWdnaW5nXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgaWYgKGFzc2V0TmFtZS5lbmRzV2l0aCgnLmd6JykpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3VuemlwID0gemxpYi5jcmVhdGVHdW56aXAoKVxuICAgICAgICAgICAgICAgICAgICByZXEucGlwZShndW56aXApLnBpcGUoZmQpXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVxLnBpcGUoZmQpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJTYXVjZUxhYnMiLCJjb25zdHJ1Y3RvciIsIm9wdGlvbnMiLCJfb3B0aW9ucyIsIk9iamVjdCIsImFzc2lnbiIsIkRFRkFVTFRfT1BUSU9OUyIsInVzZXJuYW1lIiwidXNlciIsIl9hY2Nlc3NLZXkiLCJrZXkiLCJfYXV0aCIsInBhc3MiLCJyZWdpb24iLCJoZWFkbGVzcyIsIlByb3h5IiwiZ2V0Iiwib2JqIiwicHJvcE5hbWUiLCJTWU1CT0xfSU5TUEVDVCIsIlNZTUJPTF9UT1NUUklORyIsIlRPX1NUUklOR19UQUciLCJTWU1CT0xfSVRFUkFUT1IiLCJzdGFydHNXaXRoIiwidW5kZWZpbmVkIiwiUFJPVE9DT0xfTUFQIiwiaGFzIiwiRXJyb3IiLCJfZG93bmxvYWRKb2JBc3NldCIsImFyZ3MiLCJkZXNjcmlwdGlvbiIsIm1ldGhvZCIsImVuZHBvaW50IiwiaG9zdCIsImJhc2VQYXRoIiwicGFyYW1zIiwicGFyYW1ldGVycyIsInVybCIsImkiLCJ1cmxQYXJhbSIsImVudHJpZXMiLCJmaWx0ZXIiLCJwIiwiaW4iLCJwYXJhbSIsInR5cGUiLCJyZXBsYWNlIiwibmFtZSIsImJvZHlNYXAiLCJNYXAiLCJzbGljZSIsInJlcXVpcmVkIiwibGVuZ3RoIiwib3B0aW9uUGFyYW0iLCJleHBlY3RlZFR5cGUiLCJvcHRpb24iLCJjaGFuZ2VDYXNlIiwiY2FtZWxDYXNlIiwiaXNSZXF1aXJlZCIsIkJvb2xlYW4iLCJkZWZhdWx0Iiwic2V0IiwiYm9keSIsInJlZHVjZSIsImUiLCJrIiwidiIsInVyaSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwidG9VcHBlckNhc2UiLCJqc29uIiwiYXV0aCIsImVyciIsInJlc3BvbnNlIiwic3RhdHVzQ29kZSIsInJlYXNvbiIsIkpTT04iLCJwYXJzZSIsIm1lc3NhZ2UiLCJqb2JJZCIsImFzc2V0TmFtZSIsImRvd25sb2FkUGF0aCIsImhtYWMiLCJyZXEiLCJEYXRlIiwibm93IiwicmVzIiwiaGVhZGVycyIsImZkIiwiZnMiLCJjcmVhdGVXcml0ZVN0cmVhbSIsInBhdGgiLCJwcm9jZXNzIiwiY3dkIiwiZW5kc1dpdGgiLCJndW56aXAiLCJ6bGliIiwiY3JlYXRlR3VuemlwIiwicGlwZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7Ozs7QUFLZSxNQUFNQSxTQUFOLENBQWdCO0FBQzNCQyxFQUFBQSxXQUFXLENBQUVDLE9BQUYsRUFBVztBQUNsQixTQUFLQyxRQUFMLEdBQWdCQyxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLEVBQWtCQywwQkFBbEIsRUFBbUNKLE9BQW5DLENBQWhCO0FBQ0EsU0FBS0ssUUFBTCxHQUFnQixLQUFLSixRQUFMLENBQWNLLElBQTlCO0FBQ0EsU0FBS0MsVUFBTCxHQUFrQixLQUFLTixRQUFMLENBQWNPLEdBQWhDO0FBQ0EsU0FBS0MsS0FBTCxHQUFhO0FBQ1RILE1BQUFBLElBQUksRUFBRSxLQUFLRCxRQURGO0FBRVRLLE1BQUFBLElBQUksRUFBRSxLQUFLSDtBQUdmOzs7O0FBTGEsS0FBYjtBQVFBLFNBQUtJLE1BQUwsR0FBYyxLQUFLVixRQUFMLENBQWNVLE1BQTVCO0FBQ0EsU0FBS0MsUUFBTCxHQUFnQixLQUFLWCxRQUFMLENBQWNXLFFBQTlCO0FBRUEsV0FBTyxJQUFJQyxLQUFKLENBQVUsRUFBVixFQUFjO0FBQUVDLE1BQUFBLEdBQUcsRUFBSSxLQUFLQSxHQUFULE1BQUksSUFBSjtBQUFMLEtBQWQsQ0FBUDtBQUNIOztBQUVEQSxFQUFBQSxHQUFHLENBQUVDLEdBQUYsRUFBT0MsUUFBUCxFQUFpQjtBQUNoQjs7OztBQUlBLFFBQUlBLFFBQVEsS0FBS0MseUJBQWIsSUFBK0JELFFBQVEsS0FBSyxTQUFoRCxFQUEyRDtBQUN2RCxhQUFPLE1BQU0scUJBQVMsSUFBVCxDQUFiO0FBQ0g7QUFFRDs7Ozs7O0FBSUEsUUFBSUEsUUFBUSxLQUFLRSwwQkFBakIsRUFBa0M7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UUFBVixDQUFtQixLQUFuQixDQUFKLEVBQStCO0FBQzNCLGdCQUFNQyxNQUFNLEdBQUdDLGNBQUtDLFlBQUwsRUFBZjs7QUFDQWQsVUFBQUEsR0FBRyxDQUFDZSxJQUFKLENBQVNILE1BQVQsRUFBaUJHLElBQWpCLENBQXNCVixFQUF0QjtBQUNILFNBSEQsTUFHTztBQUNITCxVQUFBQSxHQUFHLENBQUNlLElBQUosQ0FBU1YsRUFBVDtBQUNIO0FBQ0o7QUFDSixLQXBETSxDQUFQO0FBcURIOztBQTNNMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgZnJvbSAnZnMnXG5pbXBvcnQgemxpYiBmcm9tICd6bGliJ1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcbmltcG9ydCByZXF1ZXN0IGZyb20gJ3JlcXVlc3QnXG5pbXBvcnQgY2hhbmdlQ2FzZSBmcm9tICdjaGFuZ2UtY2FzZSdcblxuaW1wb3J0IHsgY3JlYXRlSE1BQywgZ2V0U2F1Y2VFbmRwb2ludCwgdG9TdHJpbmcsIGdldFBhcmFtZXRlcnMgfSBmcm9tICcuL3V0aWxzJ1xuaW1wb3J0IHtcbiAgICBQUk9UT0NPTF9NQVAsIERFRkFVTFRfT1BUSU9OUywgU1lNQk9MX0lOU1BFQ1QsXG4gICAgU1lNQk9MX1RPU1RSSU5HLCBTWU1CT0xfSVRFUkFUT1IsIFRPX1NUUklOR19UQUdcbn0gZnJvbSAnLi9jb25zdGFudHMnXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNhdWNlTGFicyB7XG4gICAgY29uc3RydWN0b3IgKG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIERFRkFVTFRfT1BUSU9OUywgb3B0aW9ucylcbiAgICAgICAgdGhpcy51c2VybmFtZSA9IHRoaXMuX29wdGlvbnMudXNlclxuICAgICAgICB0aGlzLl9hY2Nlc3NLZXkgPSB0aGlzLl9vcHRpb25zLmtleVxuICAgICAgICB0aGlzLl9hdXRoID0ge1xuICAgICAgICAgICAgdXNlcjogdGhpcy51c2VybmFtZSxcbiAgICAgICAgICAgIHBhc3M6IHRoaXMuX2FjY2Vzc0tleVxuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIHB1YmxpYyBmaWVsZHNcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMucmVnaW9uID0gdGhpcy5fb3B0aW9ucy5yZWdpb25cbiAgICAgICAgdGhpcy5oZWFkbGVzcyA9IHRoaXMuX29wdGlvbnMuaGVhZGxlc3NcblxuICAgICAgICByZXR1cm4gbmV3IFByb3h5KHt9LCB7IGdldDogOjp0aGlzLmdldCB9KVxuICAgIH1cblxuICAgIGdldCAob2JqLCBwcm9wTmFtZSkge1xuICAgICAgICAvKipcbiAgICAgICAgICogcHJpbnQgdG8gc3RyaW5nIG91dHB1dFxuICAgICAgICAgKiBodHRwczovL25vZGVqcy5vcmcvYXBpL3V0aWwuaHRtbCN1dGlsX3V0aWxfaW5zcGVjdF9jdXN0b21cbiAgICAgICAgICovXG4gICAgICAgIGlmIChwcm9wTmFtZSA9PT0gU1lNQk9MX0lOU1BFQ1QgfHwgcHJvcE5hbWUgPT09ICdpbnNwZWN0Jykge1xuICAgICAgICAgICAgcmV0dXJuICgpID0+IHRvU3RyaW5nKHRoaXMpXG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogcHJpbnQgdG8gc3RyaW5nIHRhZ1xuICAgICAgICAgKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9TeW1ib2wvdG9TdHJpbmdUYWdcbiAgICAgICAgICovXG4gICAgICAgIGlmIChwcm9wTmFtZSA9PT0gU1lNQk9MX1RPU1RSSU5HKSB7XG4gICAgICAgICAgICByZXR1cm4gVE9fU1RSSU5HX1RBR1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIHJldHVybiBpbnN0YW5jZSBpdGVyYXRvclxuICAgICAgICAgKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9TeW1ib2wvaXRlcmF0b3JcbiAgICAgICAgICovXG4gICAgICAgIGlmIChwcm9wTmFtZSA9PT0gU1lNQk9MX0lURVJBVE9SKSB7XG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBhbGxvdyB0byByZXR1cm4gcHVibGljbHkgcmVnaXN0ZXJlZCBjbGFzcyBwcm9wZXJ0aWVzXG4gICAgICAgICAqL1xuICAgICAgICBpZiAodGhpc1twcm9wTmFtZV0pIHtcbiAgICAgICAgICAgIHJldHVybiAhcHJvcE5hbWUuc3RhcnRzV2l0aCgnXycpID8gdGhpc1twcm9wTmFtZV0gOiB1bmRlZmluZWRcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghUFJPVE9DT0xfTUFQLmhhcyhwcm9wTmFtZSkpIHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICoganVzdCByZXR1cm4gaWYgcHJvcE5hbWUgaXMgYSBzeW1ib2wgKE5vZGUgOCBhbmQgbG93ZXIpXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGlmICh0eXBlb2YgcHJvcE5hbWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkbid0IGZpbmQgQVBJIGVuZHBvaW50IGZvciBjb21tYW5kIFwiJHtwcm9wTmFtZX1cImApXG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogaGFuZGxlIHNwZWNpYWwgY29tbWFuZHMgbm90IGRlZmluZWQgaW4gdGhlIHByb3RvY29sXG4gICAgICAgICAqL1xuICAgICAgICBpZiAocHJvcE5hbWUgPT09ICdkb3dubG9hZEpvYkFzc2V0Jykge1xuICAgICAgICAgICAgcmV0dXJuIDo6dGhpcy5fZG93bmxvYWRKb2JBc3NldFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICguLi5hcmdzKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IGRlc2NyaXB0aW9uLCBtZXRob2QsIGVuZHBvaW50LCBob3N0LCBiYXNlUGF0aCB9ID0gUFJPVE9DT0xfTUFQLmdldChwcm9wTmFtZSlcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IGdldFBhcmFtZXRlcnMoZGVzY3JpcHRpb24ucGFyYW1ldGVycylcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiB2YWxpZGF0ZSByZXF1aXJlZCB1cmwgcGFyYW1zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGxldCB1cmwgPSBlbmRwb2ludFxuICAgICAgICAgICAgZm9yIChjb25zdCBbaSwgdXJsUGFyYW1dIG9mIE9iamVjdC5lbnRyaWVzKHBhcmFtcy5maWx0ZXIocCA9PiBwLmluID09PSAncGF0aCcpKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtID0gYXJnc1tpXVxuICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSB1cmxQYXJhbS50eXBlLnJlcGxhY2UoJ2ludGVnZXInLCAnbnVtYmVyJylcblxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcGFyYW0gIT09IHR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBwYXJhbWV0ZXIgZm9yIHVybCBwYXJhbSAnJHt1cmxQYXJhbS5uYW1lfScgZnJvbSB0eXBlICcke3R5cGV9JywgZm91bmQgJyR7dHlwZW9mIHBhcmFtfSdgKVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHVybCA9IHVybC5yZXBsYWNlKGB7JHt1cmxQYXJhbS5uYW1lfX1gLCBwYXJhbSlcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiB2YWxpZGF0ZSByZXF1aXJlZCBvcHRpb25zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNvbnN0IGJvZHlNYXAgPSBuZXcgTWFwKClcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSBhcmdzLnNsaWNlKHBhcmFtcy5maWx0ZXIocCA9PiBwLnJlcXVpcmVkKS5sZW5ndGgpWzBdIHx8IHt9XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG9wdGlvblBhcmFtIG9mIHBhcmFtcy5maWx0ZXIocCA9PiBwLmluID09PSAncXVlcnknKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4cGVjdGVkVHlwZSA9IG9wdGlvblBhcmFtLnR5cGUucmVwbGFjZSgnaW50ZWdlcicsICdudW1iZXInKVxuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbiA9IG9wdGlvbnNbY2hhbmdlQ2FzZS5jYW1lbENhc2Uob3B0aW9uUGFyYW0ubmFtZSldXG4gICAgICAgICAgICAgICAgY29uc3QgaXNSZXF1aXJlZCA9IEJvb2xlYW4ob3B0aW9uUGFyYW0ucmVxdWlyZWQpIHx8ICh0eXBlb2Ygb3B0aW9uUGFyYW0ucmVxdWlyZWQgPT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBvcHRpb25QYXJhbS5kZWZhdWx0ID09PSAndW5kZWZpbmVkJylcbiAgICAgICAgICAgICAgICBpZiAoKGlzUmVxdWlyZWQgfHwgb3B0aW9uKSAmJiAoIW9wdGlvbiB8fCB0eXBlb2Ygb3B0aW9uICE9PSBleHBlY3RlZFR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgcGFyYW1ldGVyIGZvciBvcHRpb24gJyR7b3B0aW9uUGFyYW0ubmFtZX0nIGZyb20gdHlwZSAnJHtleHBlY3RlZFR5cGV9JywgZm91bmQgJyR7dHlwZW9mIG9wdGlvbn0nYClcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAob3B0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGJvZHlNYXAuc2V0KG9wdGlvblBhcmFtLm5hbWUsIG9wdGlvbilcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogY29udmVydCBtYXAgaW50byBqc29uIG9iamVjdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjb25zdCBib2R5ID0gWy4uLmJvZHlNYXAuZW50cmllcygpXS5yZWR1Y2UoKGUsIFtrLCB2XSkgPT4ge1xuICAgICAgICAgICAgICAgIGVba10gPSB2XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVcbiAgICAgICAgICAgIH0sIHt9KVxuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIG1ha2UgcmVxdWVzdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjb25zdCB1cmkgPSBnZXRTYXVjZUVuZHBvaW50KGhvc3QgKyBiYXNlUGF0aCwgdGhpcy5fb3B0aW9ucy5yZWdpb24sIHRoaXMuX29wdGlvbnMuaGVhZGxlc3MpICsgdXJsXG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gcmVxdWVzdCh7XG4gICAgICAgICAgICAgICAgdXJpLFxuICAgICAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kLnRvVXBwZXJDYXNlKCksXG4gICAgICAgICAgICAgICAgW21ldGhvZCA9PT0gJ3Bvc3QnID8gJ2pzb24nIDogJ3FzJ106IGJvZHksXG4gICAgICAgICAgICAgICAganNvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBhdXRoOiB0aGlzLl9hdXRoXG4gICAgICAgICAgICB9LCAoZXJyLCByZXNwb25zZSwgYm9keSkgPT4ge1xuICAgICAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1c0NvZGUgIT09IDIwMCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZWFzb24gPSBKU09OLnBhcnNlKGJvZHkpLm1lc3NhZ2UgfHwgJ3Vua25vd24nXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QobmV3IEVycm9yKGBGYWlsZWQgY2FsbGluZyAke3Byb3BOYW1lfSwgc3RhdHVzIGNvZGU6ICR7cmVzcG9uc2Uuc3RhdHVzQ29kZX0sIHJlYXNvbjogJHtyZWFzb259YCkpXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoYm9keSlcbiAgICAgICAgICAgIH0pKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgX2Rvd25sb2FkSm9iQXNzZXQgKGpvYklkLCBhc3NldE5hbWUsIGRvd25sb2FkUGF0aCkge1xuICAgICAgICAvKipcbiAgICAgICAgICogY2hlY2sgam9iIGlkXG4gICAgICAgICAqL1xuICAgICAgICBpZiAodHlwZW9mIGpvYklkICE9PSAnc3RyaW5nJyB8fCB0eXBlb2YgYXNzZXROYW1lICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgbmVlZCB0byBkZWZpbmUgYSBqb2IgaWQgYW5kIHRoZSBmaWxlIG5hbWUgb2YgdGhlIGFzc2V0IGFzIGEgc3RyaW5nJylcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGhtYWMgPSBhd2FpdCBjcmVhdGVITUFDKHRoaXMudXNlcm5hbWUsIHRoaXMuX2FjY2Vzc0tleSwgam9iSWQpXG4gICAgICAgIGNvbnN0IGhvc3QgPSBnZXRTYXVjZUVuZHBvaW50KCdzYXVjZWxhYnMuY29tJywgdGhpcy5fb3B0aW9ucy5yZWdpb24sIHRoaXMuX29wdGlvbnMuaGVhZGxlc3MsICdodHRwczovL2Fzc2V0cy4nKVxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVxID0gcmVxdWVzdCh7XG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgICAgICAgICB1cmk6IGAke2hvc3R9L2pvYnMvJHtqb2JJZH0vJHthc3NldE5hbWV9P3RzPSR7RGF0ZS5ub3coKX0mYXV0aD0ke2htYWN9YFxuICAgICAgICAgICAgfSwgKGVyciwgcmVzLCBib2R5KSA9PiB7XG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogY2hlY2sgaWYgcmVxdWVzdCB3YXMgc3VjY2Vzc2Z1bFxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogY2hlY2sgaWYgd2UgcmVjZWl2ZWQgdGhlIGFzc2V0XG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgaWYgKHJlcy5zdGF0dXNDb2RlICE9PSAyMDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVhc29uID0gSlNPTi5wYXJzZShib2R5KS5tZXNzYWdlIHx8ICd1bmtub3duJ1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBFcnJvcihgVGhlcmUgd2FzIGFuIGVycm9yIGRvd25sb2FkaW5nIGFzc2V0ICR7YXNzZXROYW1lfSwgc3RhdHVzIGNvZGU6ICR7cmVzLnN0YXR1c0NvZGV9LCByZWFzb246ICR7cmVhc29ufWApKVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIHBhcnNlIGFzc2V0IGFzIGpzb24gaWYgcHJvcGVyIGNvbnRlbnQgdHlwZSBpcyBnaXZlblxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIGlmIChyZXMuaGVhZGVyc1snY29udGVudC10eXBlJ10gPT09ICdhcHBsaWNhdGlvbi9qc29uJykge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9keSA9IEpTT04ucGFyc2UoYm9keSlcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG8gbm90aGluZ1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoYm9keSlcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogb25seSBwaXBlIGFzc2V0IHRvIGZpbGUgaWYgcGF0aCBpcyBnaXZlblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpZiAodHlwZW9mIGRvd25sb2FkUGF0aCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmZCA9IGZzLmNyZWF0ZVdyaXRlU3RyZWFtKHBhdGgucmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBkb3dubG9hZFBhdGgpKVxuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogdW56aXAgZ3ppcHBlZCBsb2dzXG4gICAgICAgICAgICAgICAgICogVG9EbzogdGhpcyBvbmx5IGFmZmVjdHMgdHJhY2luZyBsb2dzIHdoaWNoIGFyZSB1cGxvYWRlZCBnemlwcGVkLFxuICAgICAgICAgICAgICAgICAqICAgICAgIHRoZXJlIHNob3VsZCBiZSBzZXBlcmF0ZSBhcGkgZGVmaW5pdGlvbiBmb3IgZXh0ZW5kZWQgZGVidWdnaW5nXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgaWYgKGFzc2V0TmFtZS5lbmRzV2l0aCgnLmd6JykpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3VuemlwID0gemxpYi5jcmVhdGVHdW56aXAoKVxuICAgICAgICAgICAgICAgICAgICByZXEucGlwZShndW56aXApLnBpcGUoZmQpXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVxLnBpcGUoZmQpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH1cbn1cbiJdfQ==

@@ -581,2 +581,53 @@ SauceLabs Interface

</tr>
<tr>
<td>
<b>GET</b> <code>/metrics/{job_id}/</code><br>
No description available.
<h3>Example:</h3>
<code>api.getPerformanceMetrics(job_id)</code>
</td>
</tr>
<tr>
<td>
<b>GET</b> <code>/metrics/{job_id}/baseline/history/</code><br>
No description available.
<h3>Example:</h3>
<code>api.getBaselineHistory(job_id, metric_names, order_index, { ...options })</code>
<br><h4>Options</h4>
<ul> <li><b>window_size</b>: No description available.</li> <li><b>limit</b>: No description available.</li> </ul> </td>
</tr>
<tr>
<td>
<b>GET</b> <code>/metrics/{job_id}/baseline/command/</code><br>
No description available.
<h3>Example:</h3>
<code>api.getRecentBaselineHistory(job_id, metric_names, order_index, { ...options })</code>
<br><h4>Options</h4>
<ul> <li><b>window_size</b>: No description available.</li> </ul> </td>
</tr>
<tr>
<td>
<b>PATCH</b> <code>/metrics/{job_id}/regime_acknowledge/</code><br>
No description available.
<h3>Example:</h3>
<code>api.acknowledgeRegime(job_id, body)</code>
</td>
</tr>
<tr>
<td>
<b>GET</b> <code>/metrics/{job_id}/regressions/</code><br>
No description available.
<h3>Example:</h3>
<code>api.assertPerformanceRegression(job_id, metric_names, { ...options })</code>
<br><h4>Options</h4>
<ul> <li><b>window_size</b>: No description available.</li> </ul> </td>
</tr>
<tr>
<td>
<b>GET</b> <code>/metrics/{job_id}/dataset/</code><br>
No description available.
<h3>Example:</h3>
<code>api.getPerformanceDataset(job_id, metric_names)</code>
</td>
</tr>
</tbody></table>
{
"name": "saucelabs",
"version": "2.0.1",
"version": "2.1.0",
"author": "Christian Bromann <christian@saucelabs.com>",

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

SocketSocket SOC 2 Logo

Product

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

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc