@browserstack/testcafe
Version:
Automated browser testing for the modern web development stack.
38 lines • 6.41 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const convert_to_best_fit_type_1 = __importDefault(require("../convert-to-best-fit-type"));
const DEFAULT_OPTIONS_SEPARATOR = ',';
const DEFAULT_KEY_VALUE_SEPARATOR = '=';
function convertOptionValueType(value) {
// NOTE: threat a key without a separator and a value as a boolean flag
if (value === void 0)
return true;
return convert_to_best_fit_type_1.default(value);
}
function parseOptionsString(optionsStr, optionsSeparator, keyValueSeparator) {
return optionsStr
.split(optionsSeparator)
.map(keyValueString => keyValueString.split(keyValueSeparator))
.map(([key, ...value]) => [key, value.length > 1 ? value.join(keyValueSeparator) : value[0]]);
}
async function default_1(sourceOptions = '', optionsConfig) {
const { optionsSeparator = DEFAULT_OPTIONS_SEPARATOR, keyValueSeparator = DEFAULT_KEY_VALUE_SEPARATOR, skipOptionValueTypeConversion = false, onOptionParsed = void 0, } = optionsConfig;
const optionsList = typeof sourceOptions === 'string' ?
parseOptionsString(sourceOptions, optionsSeparator, keyValueSeparator) :
Object.entries(sourceOptions);
const resultOptions = Object.create(null);
await Promise.all(optionsList.map(async ([key, value]) => {
if (!skipOptionValueTypeConversion)
value = convertOptionValueType(value);
if (onOptionParsed)
value = await onOptionParsed(key, value);
resultOptions[key] = value;
}));
return resultOptions;
}
exports.default = default_1;
module.exports = exports.default;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9nZXQtb3B0aW9ucy9iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsMkZBQStEO0FBRy9ELE1BQU0seUJBQXlCLEdBQUssR0FBRyxDQUFDO0FBQ3hDLE1BQU0sMkJBQTJCLEdBQUcsR0FBRyxDQUFDO0FBSXhDLFNBQVMsc0JBQXNCLENBQUUsS0FBVTtJQUN2Qyx1RUFBdUU7SUFDdkUsSUFBSSxLQUFLLEtBQUssS0FBSyxDQUFDO1FBQ2hCLE9BQU8sSUFBSSxDQUFDO0lBRWhCLE9BQU8sa0NBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkMsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUUsVUFBa0IsRUFBRSxnQkFBd0IsRUFBRSxpQkFBeUI7SUFDaEcsT0FBTyxVQUFVO1NBQ1osS0FBSyxDQUFDLGdCQUFnQixDQUFDO1NBQ3ZCLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUM5RCxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RHLENBQUM7QUFFYyxLQUFLLG9CQUFXLGdCQUFnRSxFQUFFLEVBQUUsYUFBcUM7SUFDcEksTUFBTSxFQUNGLGdCQUFnQixHQUFHLHlCQUF5QixFQUM1QyxpQkFBaUIsR0FBRywyQkFBMkIsRUFDL0MsNkJBQTZCLEdBQUcsS0FBSyxFQUNyQyxjQUFjLEdBQUcsS0FBSyxDQUFDLEdBQzFCLEdBQUcsYUFBYSxDQUFDO0lBRWxCLE1BQU0sV0FBVyxHQUFHLE9BQU8sYUFBYSxLQUFLLFFBQVEsQ0FBQyxDQUFDO1FBQ25ELGtCQUFrQixDQUFDLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7UUFDeEUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUVsQyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTFDLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1FBQ3JELElBQUksQ0FBQyw2QkFBNkI7WUFDOUIsS0FBSyxHQUFHLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTFDLElBQUksY0FBYztZQUNkLEtBQUssR0FBRyxNQUFNLGNBQWMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFN0MsYUFBYSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUMvQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRUosT0FBTyxhQUFhLENBQUM7QUFDekIsQ0FBQztBQXpCRCw0QkF5QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29udmVydFRvQmVzdEZpdFR5cGUgZnJvbSAnLi4vY29udmVydC10by1iZXN0LWZpdC10eXBlJztcbmltcG9ydCB7IERpY3Rpb25hcnksIEdldE9wdGlvbkNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL2ludGVyZmFjZXMnO1xuXG5jb25zdCBERUZBVUxUX09QVElPTlNfU0VQQVJBVE9SICAgPSAnLCc7XG5jb25zdCBERUZBVUxUX0tFWV9WQUxVRV9TRVBBUkFUT1IgPSAnPSc7XG5cbnR5cGUgT3B0aW9uS2V5VmFsdWUgPSBbc3RyaW5nLCBzdHJpbmddO1xuXG5mdW5jdGlvbiBjb252ZXJ0T3B0aW9uVmFsdWVUeXBlICh2YWx1ZTogYW55KTogYW55IHsgLyogZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4gICAgLy8gTk9URTogdGhyZWF0IGEga2V5IHdpdGhvdXQgYSBzZXBhcmF0b3IgYW5kIGEgdmFsdWUgYXMgYSBib29sZWFuIGZsYWdcbiAgICBpZiAodmFsdWUgPT09IHZvaWQgMClcbiAgICAgICAgcmV0dXJuIHRydWU7XG5cbiAgICByZXR1cm4gY29udmVydFRvQmVzdEZpdFR5cGUodmFsdWUpO1xufVxuXG5mdW5jdGlvbiBwYXJzZU9wdGlvbnNTdHJpbmcgKG9wdGlvbnNTdHI6IHN0cmluZywgb3B0aW9uc1NlcGFyYXRvcjogc3RyaW5nLCBrZXlWYWx1ZVNlcGFyYXRvcjogc3RyaW5nKTogT3B0aW9uS2V5VmFsdWVbXSB7XG4gICAgcmV0dXJuIG9wdGlvbnNTdHJcbiAgICAgICAgLnNwbGl0KG9wdGlvbnNTZXBhcmF0b3IpXG4gICAgICAgIC5tYXAoa2V5VmFsdWVTdHJpbmcgPT4ga2V5VmFsdWVTdHJpbmcuc3BsaXQoa2V5VmFsdWVTZXBhcmF0b3IpKVxuICAgICAgICAubWFwKChba2V5LCAuLi52YWx1ZV0pID0+IFtrZXksIHZhbHVlLmxlbmd0aCA+IDEgPyB2YWx1ZS5qb2luKGtleVZhbHVlU2VwYXJhdG9yKSA6IHZhbHVlWzBdXSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIChzb3VyY2VPcHRpb25zOiBzdHJpbmcgfCBEaWN0aW9uYXJ5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+ID0gJycsIG9wdGlvbnNDb25maWc6IEdldE9wdGlvbkNvbmZpZ3VyYXRpb24pOiBQcm9taXNlPERpY3Rpb25hcnk8YW55Pj4geyAvKiBlc2xpbnQtZGlzYWJsZS1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbiAgICBjb25zdCB7XG4gICAgICAgIG9wdGlvbnNTZXBhcmF0b3IgPSBERUZBVUxUX09QVElPTlNfU0VQQVJBVE9SLFxuICAgICAgICBrZXlWYWx1ZVNlcGFyYXRvciA9IERFRkFVTFRfS0VZX1ZBTFVFX1NFUEFSQVRPUixcbiAgICAgICAgc2tpcE9wdGlvblZhbHVlVHlwZUNvbnZlcnNpb24gPSBmYWxzZSxcbiAgICAgICAgb25PcHRpb25QYXJzZWQgPSB2b2lkIDAsXG4gICAgfSA9IG9wdGlvbnNDb25maWc7XG5cbiAgICBjb25zdCBvcHRpb25zTGlzdCA9IHR5cGVvZiBzb3VyY2VPcHRpb25zID09PSAnc3RyaW5nJyA/XG4gICAgICAgIHBhcnNlT3B0aW9uc1N0cmluZyhzb3VyY2VPcHRpb25zLCBvcHRpb25zU2VwYXJhdG9yLCBrZXlWYWx1ZVNlcGFyYXRvcikgOlxuICAgICAgICBPYmplY3QuZW50cmllcyhzb3VyY2VPcHRpb25zKTtcblxuICAgIGNvbnN0IHJlc3VsdE9wdGlvbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwob3B0aW9uc0xpc3QubWFwKGFzeW5jIChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgaWYgKCFza2lwT3B0aW9uVmFsdWVUeXBlQ29udmVyc2lvbilcbiAgICAgICAgICAgIHZhbHVlID0gY29udmVydE9wdGlvblZhbHVlVHlwZSh2YWx1ZSk7XG5cbiAgICAgICAgaWYgKG9uT3B0aW9uUGFyc2VkKVxuICAgICAgICAgICAgdmFsdWUgPSBhd2FpdCBvbk9wdGlvblBhcnNlZChrZXksIHZhbHVlKTtcblxuICAgICAgICByZXN1bHRPcHRpb25zW2tleV0gPSB2YWx1ZTtcbiAgICB9KSk7XG5cbiAgICByZXR1cm4gcmVzdWx0T3B0aW9ucztcbn1cblxuIl19