testcafe
Version:
Automated browser testing for the modern web development stack.
75 lines • 9.18 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseConfig = exports.getModes = exports.getPathFromParsedModes = exports.splitEscaped = exports.isMatchTrue = exports.findMatch = exports.hasMatch = void 0;
const lodash_1 = require("lodash");
const os_family_1 = __importDefault(require("os-family"));
const CONFIG_TERMINATOR_RE = /(\s+|^)-/;
function hasMatch(array, re) {
return !!(0, lodash_1.find)(array, el => el.match(re));
}
exports.hasMatch = hasMatch;
function findMatch(array, re) {
const element = (0, lodash_1.find)(array, el => el.match(re));
return element ? element.match(re)[1] : '';
}
exports.findMatch = findMatch;
function isMatchTrue(array, re) {
const match = findMatch(array, re);
return match && match !== '0' && match !== 'false';
}
exports.isMatchTrue = isMatchTrue;
function splitEscaped(str, splitterChar) {
const result = [''];
for (let i = 0; i < str.length; i++) {
if (str[i] === splitterChar) {
result.push('');
continue;
}
if (str[i] === '\\' && (str[i + 1] === '\\' || str[i + 1] === splitterChar))
i++;
result[result.length - 1] += str[i];
}
return result;
}
exports.splitEscaped = splitEscaped;
function getPathFromParsedModes(modes, availableModes = []) {
if (!modes.length)
return '';
if (availableModes.some(mode => mode === modes[0]))
return '';
let path = modes.shift();
if (os_family_1.default.win && modes.length && path.match(/^[A-Za-z]$/))
path += ':' + modes.shift();
return path;
}
exports.getPathFromParsedModes = getPathFromParsedModes;
function getModes(modes, availableModes = []) {
const result = {};
availableModes = availableModes.slice();
availableModes.forEach(key => {
result[key] = false;
});
while (modes.length && availableModes.length) {
if (modes[0] === availableModes[0]) {
result[availableModes[0]] = true;
modes.shift();
}
availableModes.shift();
}
return result;
}
exports.getModes = getModes;
function parseConfig(str) {
const configTerminatorMatch = str.match(CONFIG_TERMINATOR_RE);
if (!configTerminatorMatch)
return { modesString: str, userArgs: '' };
return {
modesString: str.substr(0, configTerminatorMatch.index),
userArgs: str.substr(configTerminatorMatch.index + configTerminatorMatch[1].length),
};
}
exports.parseConfig = parseConfig;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJndW1lbnQtcGFyc2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9icm93c2VyL3Byb3ZpZGVyL3V0aWxzL2FyZ3VtZW50LXBhcnNpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbUNBQTZDO0FBQzdDLDBEQUEyQjtBQUUzQixNQUFNLG9CQUFvQixHQUFHLFVBQVUsQ0FBQztBQUV4QyxTQUFnQixRQUFRLENBQUUsS0FBSyxFQUFFLEVBQUU7SUFDL0IsT0FBTyxDQUFDLENBQUMsSUFBQSxhQUFXLEVBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3BELENBQUM7QUFGRCw0QkFFQztBQUVELFNBQWdCLFNBQVMsQ0FBRSxLQUFLLEVBQUUsRUFBRTtJQUNoQyxNQUFNLE9BQU8sR0FBRyxJQUFBLGFBQVcsRUFBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFdkQsT0FBTyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUMvQyxDQUFDO0FBSkQsOEJBSUM7QUFFRCxTQUFnQixXQUFXLENBQUUsS0FBSyxFQUFFLEVBQUU7SUFDbEMsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUVuQyxPQUFPLEtBQUssSUFBSSxLQUFLLEtBQUssR0FBRyxJQUFJLEtBQUssS0FBSyxPQUFPLENBQUM7QUFDdkQsQ0FBQztBQUpELGtDQUlDO0FBRUQsU0FBZ0IsWUFBWSxDQUFFLEdBQUcsRUFBRSxZQUFZO0lBQzNDLE1BQU0sTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7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cnQgeyBmaW5kIGFzIGZpbmRFbGVtZW50IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBPUyBmcm9tICdvcy1mYW1pbHknO1xuXG5jb25zdCBDT05GSUdfVEVSTUlOQVRPUl9SRSA9IC8oXFxzK3xeKS0vO1xuXG5leHBvcnQgZnVuY3Rpb24gaGFzTWF0Y2ggKGFycmF5LCByZSkge1xuICAgIHJldHVybiAhIWZpbmRFbGVtZW50KGFycmF5LCBlbCA9PiBlbC5tYXRjaChyZSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZE1hdGNoIChhcnJheSwgcmUpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gZmluZEVsZW1lbnQoYXJyYXksIGVsID0+IGVsLm1hdGNoKHJlKSk7XG5cbiAgICByZXR1cm4gZWxlbWVudCA/IGVsZW1lbnQubWF0Y2gocmUpWzFdIDogJyc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc01hdGNoVHJ1ZSAoYXJyYXksIHJlKSB7XG4gICAgY29uc3QgbWF0Y2ggPSBmaW5kTWF0Y2goYXJyYXksIHJlKTtcblxuICAgIHJldHVybiBtYXRjaCAmJiBtYXRjaCAhPT0gJzAnICYmIG1hdGNoICE9PSAnZmFsc2UnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3BsaXRFc2NhcGVkIChzdHIsIHNwbGl0dGVyQ2hhcikge1xuICAgIGNvbnN0IHJlc3VsdCA9IFsnJ107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoc3RyW2ldID09PSBzcGxpdHRlckNoYXIpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKCcnKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0cltpXSA9PT0gJ1xcXFwnICYmIChzdHJbaSArIDFdID09PSAnXFxcXCcgfHwgc3RyIFtpICsgMV0gPT09IHNwbGl0dGVyQ2hhcikpXG4gICAgICAgICAgICBpKys7XG5cbiAgICAgICAgcmVzdWx0W3Jlc3VsdC5sZW5ndGggLSAxXSArPSBzdHJbaV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBhdGhGcm9tUGFyc2VkTW9kZXMgKG1vZGVzLCBhdmFpbGFibGVNb2RlcyA9IFtdKSB7XG4gICAgaWYgKCFtb2Rlcy5sZW5ndGgpXG4gICAgICAgIHJldHVybiAnJztcblxuICAgIGlmIChhdmFpbGFibGVNb2Rlcy5zb21lKG1vZGUgPT4gbW9kZSA9PT0gbW9kZXNbMF0pKVxuICAgICAgICByZXR1cm4gJyc7XG5cbiAgICBsZXQgcGF0aCA9IG1vZGVzLnNoaWZ0KCk7XG5cbiAgICBpZiAoT1Mud2luICYmIG1vZGVzLmxlbmd0aCAmJiBwYXRoLm1hdGNoKC9eW0EtWmEtel0kLykpXG4gICAgICAgIHBhdGggKz0gJzonICsgbW9kZXMuc2hpZnQoKTtcblxuICAgIHJldHVybiBwYXRoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TW9kZXMgKG1vZGVzLCBhdmFpbGFibGVNb2RlcyA9IFtdKSB7XG4gICAgY29uc3QgcmVzdWx0ID0ge307XG5cbiAgICBhdmFpbGFibGVNb2RlcyA9IGF2YWlsYWJsZU1vZGVzLnNsaWNlKCk7XG5cbiAgICBhdmFpbGFibGVNb2Rlcy5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gZmFsc2U7XG4gICAgfSk7XG5cbiAgICB3aGlsZSAobW9kZXMubGVuZ3RoICYmIGF2YWlsYWJsZU1vZGVzLmxlbmd0aCkge1xuICAgICAgICBpZiAobW9kZXNbMF0gPT09IGF2YWlsYWJsZU1vZGVzWzBdKSB7XG4gICAgICAgICAgICByZXN1bHRbYXZhaWxhYmxlTW9kZXNbMF1dID0gdHJ1ZTtcblxuICAgICAgICAgICAgbW9kZXMuc2hpZnQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF2YWlsYWJsZU1vZGVzLnNoaWZ0KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQ29uZmlnIChzdHIpIHtcbiAgICBjb25zdCBjb25maWdUZXJtaW5hdG9yTWF0Y2ggPSBzdHIubWF0Y2goQ09ORklHX1RFUk1JTkFUT1JfUkUpO1xuXG4gICAgaWYgKCFjb25maWdUZXJtaW5hdG9yTWF0Y2gpXG4gICAgICAgIHJldHVybiB7IG1vZGVzU3RyaW5nOiBzdHIsIHVzZXJBcmdzOiAnJyB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgbW9kZXNTdHJpbmc6IHN0ci5zdWJzdHIoMCwgY29uZmlnVGVybWluYXRvck1hdGNoLmluZGV4KSxcbiAgICAgICAgdXNlckFyZ3M6ICAgIHN0ci5zdWJzdHIoY29uZmlnVGVybWluYXRvck1hdGNoLmluZGV4ICsgY29uZmlnVGVybWluYXRvck1hdGNoWzFdLmxlbmd0aCksXG4gICAgfTtcbn1cbiJdfQ==