testcafe-browser-tools
Advanced tools
Comparing version 2.0.1 to 2.0.2
@@ -6,25 +6,37 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const pinkie_1 = __importDefault(require("pinkie")); | ||
const os_family_1 = __importDefault(require("os-family")); | ||
const which_promise_1 = __importDefault(require("which-promise")); | ||
const lodash_1 = require("lodash"); | ||
const fs_exists_promised_1 = __importDefault(require("../utils/fs-exists-promised")); | ||
const exec_1 = require("../utils/exec"); | ||
const unquote_1 = __importDefault(require("../utils/unquote")); | ||
const aliases_1 = __importDefault(require("../aliases")); | ||
const MICROSOFT_EDGE_CLASS = 'Microsoft.MicrosoftEdge'; | ||
const MICROSOFT_EDGE_KEY_GLOB = `HKCU\\Software\\Classes\\ActivatableClasses\\Package\\${MICROSOFT_EDGE_CLASS}*`; | ||
const BROWSER_COMMANDS_KEY_GLOB = root => `${root}\\Software\\Clients\\StartMenuInternet\\*\\shell\\open\\command`; | ||
const LINE_WRAP = '\r\n'; | ||
const DOUBLE_LINE_WRAP = LINE_WRAP + LINE_WRAP; | ||
const REGISTRY_BROWSER_PATH_PROPERTY = '(default)'; | ||
const REGISTRY_BROWSER_NAME_PROPERTY = 'PSPath'; | ||
const REGISTRY_PROPERTIES_RE = /^(\(default\)|PSPath)\s*:\s*(.*)$/; | ||
const MAX_OUTPUT_WIDTH = 2 ** 31 - 1; | ||
const POWERSHELL_PIPE_SYMBOL = '|'; | ||
const GET_REGISTRY_KEY_COMMAND = key => `Get-Item 'Registry::${key}'`; | ||
const GET_BROWSER_PATH_PROPERTY_COMMAND = `Get-ItemProperty -Name '${REGISTRY_BROWSER_PATH_PROPERTY}'`; | ||
const FORMAT_BROWSER_INFO_COMMAND = `Format-List -Property '${REGISTRY_BROWSER_PATH_PROPERTY}','${REGISTRY_BROWSER_NAME_PROPERTY}'`; | ||
const LIMIT_OUTPUT_WIDTH_COMMAND = `Out-String -Width ${MAX_OUTPUT_WIDTH}`; | ||
const GET_REGISTRY_BROWSER_PROPERTIES_COMMAND = key => [ | ||
GET_REGISTRY_KEY_COMMAND(key), | ||
GET_BROWSER_PATH_PROPERTY_COMMAND, | ||
FORMAT_BROWSER_INFO_COMMAND, | ||
LIMIT_OUTPUT_WIDTH_COMMAND | ||
].join(POWERSHELL_PIPE_SYMBOL); | ||
// Installation info cache | ||
var installationsCache = null; | ||
async function getRegistrySubTree(regKey) { | ||
let script = `$cp = (chcp | Select-String '\\d+').Matches.Value; | ||
Try | ||
{ | ||
chcp 65001; | ||
Get-ChildItem -Path Registry::${regKey} -Recurse; | ||
} | ||
Finally | ||
{ | ||
chcp $cp; | ||
}`; | ||
script = script.replace(/\s+/g, ' '); | ||
const command = `powershell.exe -NoLogo -NonInteractive -Command "${script}"`; | ||
return exec_1.exec(command); | ||
async function getRegistryKey(regKeyGlob) { | ||
return exec_1.execPowershell(GET_REGISTRY_KEY_COMMAND(regKeyGlob)); | ||
} | ||
async function getRegistryBrowserProperties(regKeyGlob) { | ||
return exec_1.execPowershell(GET_REGISTRY_BROWSER_PROPERTIES_COMMAND(regKeyGlob)); | ||
} | ||
// Find installations for different platforms | ||
@@ -45,18 +57,22 @@ async function addInstallation(installations, name, instPath) { | ||
async function detectMicrosoftEdge() { | ||
const regKey = 'HKCU\\Software\\Classes\\ActivatableClasses'; | ||
const edgeRe = /^Microsoft\.MicrosoftEdge/m; | ||
const subTree = await getRegistrySubTree(regKey); | ||
return edgeRe.test(subTree) ? aliases_1.default['edge'] : null; | ||
const registryResult = await getRegistryKey(MICROSOFT_EDGE_KEY_GLOB); | ||
if (registryResult.stdout.includes(MICROSOFT_EDGE_CLASS)) | ||
return aliases_1.default['edge']; | ||
return null; | ||
} | ||
async function searchInRegistry(registryRoot) { | ||
const installations = {}; | ||
const text = await getRegistrySubTree(registryRoot + '\\SOFTWARE\\Clients\\StartMenuInternet'); | ||
const re = /\\SOFTWARE\\Clients\\StartMenuInternet\\([^\r\n\\]+)\\shell\\open\s+Name\s+Property[-\s]+command\s+\(default\)\s*:\s*(.+)$/gmi; | ||
let match = re.exec(text); | ||
while (match) { | ||
const name = match[1].replace(/\.exe$/i, ''); | ||
const path = match[2].trim().replace(/^"(.*)"$/, '$1').replace(/\\$/, ''); | ||
await addInstallation(installations, name, path); | ||
match = re.exec(text); | ||
} | ||
const registryResult = await getRegistryBrowserProperties(BROWSER_COMMANDS_KEY_GLOB(registryRoot)); | ||
const data = registryResult.stdout | ||
.split(DOUBLE_LINE_WRAP) | ||
.map(block => block | ||
.split(LINE_WRAP) | ||
.map(line => line.match(REGISTRY_PROPERTIES_RE)) | ||
.filter(match => !!match) | ||
.map(match => ({ | ||
[match[1]]: unquote_1.default(match[2]) | ||
}))) | ||
.filter(block => block && block.length) | ||
.map(block => lodash_1.merge(...block)); | ||
await Promise.all(data.map(record => addInstallation(installations, record[REGISTRY_BROWSER_NAME_PROPERTY], record[REGISTRY_BROWSER_PATH_PROPERTY]))); | ||
return installations; | ||
@@ -77,3 +93,3 @@ } | ||
var stdout = await exec_1.exec('ls "/Applications/" | grep -E "Chrome|Firefox|Opera|Safari|Chromium" | sed -E "s/ /032/"'); | ||
await pinkie_1.default.all(stdout | ||
await Promise.all(stdout | ||
.split('\n') | ||
@@ -107,5 +123,5 @@ .filter(fileName => !!fileName) | ||
}); | ||
return pinkie_1.default.all(detectionPromises); | ||
return Promise.all(detectionPromises); | ||
}); | ||
await pinkie_1.default.all(aliasCheckingPromises); | ||
await Promise.all(aliasCheckingPromises); | ||
return installations; | ||
@@ -167,2 +183,2 @@ } | ||
exports.default = default_1; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWluc3RhbGxhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpL2dldC1pbnN0YWxsYXRpb25zLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTZCO0FBQzdCLDBEQUEyQjtBQUMzQixrRUFBa0M7QUFDbEMscUZBQWlEO0FBQ2pELHdDQUFxQztBQUNyQyx5REFBaUM7QUFHakMsMEJBQTBCO0FBQzFCLElBQUksa0JBQWtCLEdBQUcsSUFBSSxDQUFDO0FBRTlCLEtBQUssVUFBVSxrQkFBa0IsQ0FBRSxNQUFNO0lBQ3JDLElBQUksTUFBTSxHQUNOOzs7OzRDQUlvQyxNQUFNOzs7OztVQUt4QyxDQUFDO0lBRVAsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBRXJDLE1BQU0sT0FBTyxHQUFHLG9EQUFvRCxNQUFNLEdBQUcsQ0FBQztJQUU5RSxPQUFPLFdBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN6QixDQUFDO0FBRUQsNkNBQTZDO0FBQzdDLEtBQUssVUFBVSxlQUFlLENBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxRQUFRO0lBQ3pELElBQUksVUFBVSxHQUFHLE1BQU0sNEJBQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUV4QyxJQUFJLFVBQVUsRUFBRTtRQUNaLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM5QixJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsR0FBRyxpQkFBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRS9ELElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDbkIsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksSUFBSSxRQUFRLEVBQUUsR0FB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LENBQUM7QUFHRCxNQUFNO0FBQ047Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFFSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBQ1ksS0FBSztJQUNoQixJQUFJLENBQUMsa0JBQWtCO1FBQ25CLGtCQUFrQixHQUFHLE1BQU0sWUFBWSxFQUFFLENBQUM7SUFFOUMsT0FBTyxrQkFBa0IsQ0FBQztBQUM5QixDQUFDO0FBTEQsNEJBS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUHJvbWlzZSBmcm9tICdwaW5raWUnO1xuaW1wb3J0IE9TIGZyb20gJ29zLWZhbWlseSc7XG5pbXBvcnQgd2hpY2ggZnJvbSAnd2hpY2gtcHJvbWlzZSc7XG5pbXBvcnQgZXhpc3RzIGZyb20gJy4uL3V0aWxzL2ZzLWV4aXN0cy1wcm9taXNlZCc7XG5pbXBvcnQgeyBleGVjIH0gZnJvbSAnLi4vdXRpbHMvZXhlYyc7XG5pbXBvcnQgQUxJQVNFUyBmcm9tICcuLi9hbGlhc2VzJztcblxuXG4vLyBJbnN0YWxsYXRpb24gaW5mbyBjYWNoZVxudmFyIGluc3RhbGxhdGlvbnNDYWNoZSA9IG51bGw7XG5cbmFzeW5jIGZ1bmN0aW9uIGdldFJlZ2lzdHJ5U3ViVHJlZSAocmVnS2V5KSB7XG4gICAgbGV0IHNjcmlwdCA9XG4gICAgICAgIGAkY3AgPSAoY2hjcCB8IFNlbGVjdC1TdHJpbmcgJ1xcXFxkKycpLk1hdGNoZXMuVmFsdWU7XG4gICAgICAgIFRyeVxuICAgICAgICB7XG4gICAgICAgICAgICBjaGNwIDY1MDAxO1xuICAgICAgICAgICAgR2V0LUNoaWxkSXRlbSAtUGF0aCBSZWdpc3RyeTo6JHtyZWdLZXl9IC1SZWN1cnNlO1xuICAgICAgICB9XG4gICAgICAgIEZpbmFsbHlcbiAgICAgICAge1xuICAgICAgICAgICAgY2hjcCAkY3A7XG4gICAgICAgIH1gO1xuXG4gICAgc2NyaXB0ID0gc2NyaXB0LnJlcGxhY2UoL1xccysvZywgJyAnKTtcblxuICAgIGNvbnN0IGNvbW1hbmQgPSBgcG93ZXJzaGVsbC5leGUgLU5vTG9nbyAtTm9uSW50ZXJhY3RpdmUgLUNvbW1hbmQgXCIke3NjcmlwdH1cImA7XG5cbiAgICByZXR1cm4gZXhlYyhjb21tYW5kKTtcbn1cblxuLy8gRmluZCBpbnN0YWxsYXRpb25zIGZvciBkaWZmZXJlbnQgcGxhdGZvcm1zXG5hc3luYyBmdW5jdGlvbiBhZGRJbnN0YWxsYXRpb24gKGluc3RhbGxhdGlvbnMsIG5hbWUsIGluc3RQYXRoKSB7XG4gICAgdmFyIGZpbGVFeGlzdHMgPSBhd2FpdCBleGlzdHMoaW5zdFBhdGgpO1xuXG4gICAgaWYgKGZpbGVFeGlzdHMpIHtcbiAgICAgICAgT2JqZWN0LmtleXMoQUxJQVNFUykuc29tZShhbGlhcyA9PiB7XG4gICAgICAgICAgICB2YXIgeyBuYW1lUmUsIGNtZCwgbWFjT3BlbkNtZFRlbXBsYXRlLCBwYXRoIH0gPSBBTElBU0VTW2FsaWFzXTtcblxuICAgICAgICAgICAgaWYgKG5hbWVSZS50ZXN0KG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgaW5zdGFsbGF0aW9uc1thbGlhc10gPSB7IHBhdGg6IHBhdGggfHwgaW5zdFBhdGgsIGNtZCwgbWFjT3BlbkNtZFRlbXBsYXRlIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBkZXRlY3RNaWNyb3NvZnRFZGdlICgpIHtcbiAgICBjb25zdCByZWdLZXkgID0gJ0hLQ1VcXFxcU29mdHdhcmVcXFxcQ2xhc3Nlc1xcXFxBY3RpdmF0YWJsZUNsYXNzZXMnO1xuICAgIGNvbnN0IGVkZ2VSZSAgPSAvXk1pY3Jvc29mdFxcLk1pY3Jvc29mdEVkZ2UvbTtcbiAgICBjb25zdCBzdWJUcmVlID0gYXdhaXQgZ2V0UmVnaXN0cnlTdWJUcmVlKHJlZ0tleSk7XG5cbiAgICByZXR1cm4gZWRnZVJlLnRlc3Qoc3ViVHJlZSkgPyBBTElBU0VTWydlZGdlJ10gOiBudWxsO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzZWFyY2hJblJlZ2lzdHJ5IChyZWdpc3RyeVJvb3QpIHtcbiAgICBjb25zdCBpbnN0YWxsYXRpb25zID0ge307XG4gICAgY29uc3QgdGV4dCAgICAgICAgICA9IGF3YWl0IGdldFJlZ2lzdHJ5U3ViVHJlZShyZWdpc3RyeVJvb3QgKyAnXFxcXFNPRlRXQVJFXFxcXENsaWVudHNcXFxcU3RhcnRNZW51SW50ZXJuZXQnKTtcbiAgICBjb25zdCByZSAgICAgICAgICAgID0gL1xcXFxTT0ZUV0FSRVxcXFxDbGllbnRzXFxcXFN0YXJ0TWVudUludGVybmV0XFxcXChbXlxcclxcblxcXFxdKylcXFxcc2hlbGxcXFxcb3BlblxccytOYW1lXFxzK1Byb3BlcnR5Wy1cXHNdK2NvbW1hbmRcXHMrXFwoZGVmYXVsdFxcKVxccyo6XFxzKiguKykkL2dtaTtcblxuICAgIGxldCBtYXRjaCA9IHJlLmV4ZWModGV4dCk7XG5cbiAgICB3aGlsZSAobWF0Y2gpIHtcbiAgICAgICAgY29uc3QgbmFtZSA9IG1hdGNoWzFdLnJlcGxhY2UoL1xcLmV4ZSQvaSwgJycpO1xuICAgICAgICBjb25zdCBwYXRoID0gbWF0Y2hbMl0udHJpbSgpLnJlcGxhY2UoL15cIiguKilcIiQvLCAnJDEnKS5yZXBsYWNlKC9cXFxcJC8sICcnKTtcblxuICAgICAgICBhd2FpdCBhZGRJbnN0YWxsYXRpb24oaW5zdGFsbGF0aW9ucywgbmFtZSwgcGF0aCk7XG5cbiAgICAgICAgbWF0Y2ggPSByZS5leGVjKHRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiBpbnN0YWxsYXRpb25zO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmaW5kV2luZG93c0Jyb3dzZXJzICgpIHtcbiAgICB2YXIgbWFjaGluZVJlZ2lzdGVyZWRCcm93c2VycyA9IGF3YWl0IHNlYXJjaEluUmVnaXN0cnkoJ0hLRVlfTE9DQUxfTUFDSElORScpO1xuICAgIHZhciB1c2VyUmVnaXN0ZXJlZEJyb3dzZXJzICAgID0gYXdhaXQgc2VhcmNoSW5SZWdpc3RyeSgnSEtFWV9DVVJSRU5UX1VTRVInKTtcbiAgICB2YXIgaW5zdGFsbGF0aW9ucyAgICAgICAgICAgICA9IE9iamVjdC5hc3NpZ24obWFjaGluZVJlZ2lzdGVyZWRCcm93c2VycywgdXNlclJlZ2lzdGVyZWRCcm93c2Vycyk7XG4gICAgdmFyIGVkZ2VBbGlhcyAgICAgICAgICAgICAgICAgPSBhd2FpdCBkZXRlY3RNaWNyb3NvZnRFZGdlKCk7XG5cbiAgICBpZiAoZWRnZUFsaWFzKVxuICAgICAgICBpbnN0YWxsYXRpb25zWydlZGdlJ10gPSBlZGdlQWxpYXM7XG5cbiAgICByZXR1cm4gaW5zdGFsbGF0aW9ucztcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmluZE1hY0Jyb3dzZXJzICgpIHtcbiAgICB2YXIgaW5zdGFsbGF0aW9ucyA9IHt9O1xuXG4gICAgLy8gTk9URTogcmVwbGFjZSB0aGUgc3BhY2Ugc3ltYm9sIHdpdGggY29kZSwgYmVjYXVzZSBncmVwIHNwbGl0cyBzdHJpbmdzIGJ5IHNwYWNlLlxuICAgIHZhciBzdGRvdXQgPSBhd2FpdCBleGVjKCdscyBcIi9BcHBsaWNhdGlvbnMvXCIgfCBncmVwIC1FIFwiQ2hyb21lfEZpcmVmb3h8T3BlcmF8U2FmYXJpfENocm9taXVtXCIgfCBzZWQgLUUgXCJzLyAvMDMyL1wiJyk7XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChzdGRvdXRcbiAgICAgICAgLnNwbGl0KCdcXG4nKVxuICAgICAgICAuZmlsdGVyKGZpbGVOYW1lID0+ICEhZmlsZU5hbWUpXG4gICAgICAgIC5tYXAoZmlsZU5hbWUgPT4ge1xuICAgICAgICAgICAgLy8gTk9URTogcmVzdG9yZSBzcGFjZVxuICAgICAgICAgICAgZmlsZU5hbWUgPSBmaWxlTmFtZS5yZXBsYWNlKC8wMzIvZywgJyAnKTtcblxuICAgICAgICAgICAgdmFyIG5hbWUgPSBmaWxlTmFtZS5yZXBsYWNlKC8uYXBwJC8sICcnKTtcbiAgICAgICAgICAgIHZhciBwYXRoID0gYC9BcHBsaWNhdGlvbnMvJHtmaWxlTmFtZX1gO1xuXG4gICAgICAgICAgICByZXR1cm4gYWRkSW5zdGFsbGF0aW9uKGluc3RhbGxhdGlvbnMsIG5hbWUsIHBhdGgpO1xuICAgICAgICB9KSk7XG5cbiAgICByZXR1cm4gaW5zdGFsbGF0aW9ucztcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmluZExpbnV4QnJvd3NlcnMgKCkge1xuICAgIHZhciBpbnN0YWxsYXRpb25zID0ge307XG5cbiAgICB2YXIgYWxpYXNDaGVja2luZ1Byb21pc2VzID0gT2JqZWN0XG4gICAgICAgIC5rZXlzKEFMSUFTRVMpXG4gICAgICAgIC5tYXAobmFtZSA9PiB7XG4gICAgICAgICAgICB2YXIgeyBsaW51eEJpbmFyaWVzIH0gPSBBTElBU0VTW25hbWVdO1xuXG4gICAgICAgICAgICBpZiAoIWxpbnV4QmluYXJpZXMpXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgIHZhciBkZXRlY3Rpb25Qcm9taXNlcyA9IGxpbnV4QmluYXJpZXNcbiAgICAgICAgICAgICAgICAubWFwKGJpbmFyeSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB3aGljaChiaW5hcnkpXG4gICAgICAgICAgICAgICAgICAgICAgICAudGhlbihwYXRoID0+IGFkZEluc3RhbGxhdGlvbihpbnN0YWxsYXRpb25zLCBuYW1lLCBwYXRoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogYmluYXJ5IG5vdCBmb3VuZCwganVzdCBkbyBub3RoaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChkZXRlY3Rpb25Qcm9taXNlcyk7XG4gICAgICAgIH0pO1xuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoYWxpYXNDaGVja2luZ1Byb21pc2VzKTtcblxuICAgIHJldHVybiBpbnN0YWxsYXRpb25zO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmaW5kQnJvd3NlcnMgKCkge1xuICAgIGlmIChPUy53aW4pXG4gICAgICAgIHJldHVybiBhd2FpdCBmaW5kV2luZG93c0Jyb3dzZXJzKCk7XG5cbiAgICBpZiAoT1MubWFjKVxuICAgICAgICByZXR1cm4gYXdhaXQgZmluZE1hY0Jyb3dzZXJzKCk7XG5cbiAgICBpZiAoT1MubGludXgpXG4gICAgICAgIHJldHVybiBhd2FpdCBmaW5kTGludXhCcm93c2VycygpO1xufVxuXG5cbi8vIEFQSVxuLyoqIEB0eXBlZGVmIHtPYmplY3R9IEJyb3dzZXJJbmZvXG4gKiBAZGVzY3JpcHRpb24gT2JqZWN0IHRoYXQgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGJyb3dzZXIgaW5zdGFsbGVkIG9uIHRoZSBtYWNoaW5lLlxuICogQHByb3BlcnR5IHtzdHJpbmd8dW5kZWZpbmVkfSBwYXRoIC0gVGhlIHBhdGggdG8gdGhlIGV4ZWN1dGFibGUgZmlsZSB0aGF0IHN0YXJ0cyB0aGUgYnJvd3Nlci5cbiAqICBSZXF1aXJlZCBvbiBNYWNPUyBtYWNoaW5lcy4gT24gV2luZG93cyBtYWNoaW5lcywgaXQgaXMgdXNlZCB3aGVuIHRoZSB3aW5PcGVuQ21kVGVtcGxhdGUgcHJvcGVydHkgaXMgdW5kZWZpbmVkLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGNtZCAtIEFkZGl0aW9uYWwgY29tbWFuZCBsaW5lIHBhcmFtZXRlcnMuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gbWFjT3BlbkNtZFRlbXBsYXRlIC0gQSBbTXVzdGFjaGUgdGVtcGxhdGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9qYW5sL211c3RhY2hlLmpzI3RlbXBsYXRlcylcbiAqICB0aGF0IHByb3ZpZGVzIHBhcmFtZXRlcnMgZm9yIGxhdW5jaGluZyB0aGUgYnJvd3NlciBvbiBhIE1hY09TIG1hY2hpbmUuXG4gKiBAcHJvcGVydHkge3N0cmluZ3x1bmRlZmluZWR9IHdpbk9wZW5DbWRUZW1wbGF0ZSAtIEEgW011c3RhY2hlIHRlbXBsYXRlXShodHRwczovL2dpdGh1Yi5jb20vamFubC9tdXN0YWNoZS5qcyN0ZW1wbGF0ZXMpXG4gKiAgdGhhdCBwcm92aWRlcyBwYXJhbWV0ZXJzIGZvciBsYXVuY2hpbmcgdGhlIGJyb3dzZXIgb24gYSBXaW5kb3dzIG1hY2hpbmUuICBJZiB1bmRlZmluZWQsIHRoZSBwYXRoIHRvIHRoZVxuICogIGV4ZWN1dGFibGUgZmlsZSBzcGVjaWZpZWQgYnkgdGhlIHBhdGggcHJvcGVydHkgaXMgdXNlZC5cbiAqIEBleGFtcGxlXG4gKiAge1xuICogICAgICAgcGF0aDogJ0M6XFxcXFByb2dyYW1GaWxlc1xcXFwuLi5cXFxcZmlyZWZveC5leGUnLFxuICogICAgICAgY21kOiAnLW5ldy13aW5kb3cnLFxuICogICAgICAgbWFjT3BlbkNtZFRlbXBsYXRlOiAnb3BlbiAtYSBcInt7e3BhdGh9fX1cIiB7e3twYWdlVXJsfX19IC0tYXJncyB7e3tjbWR9fX0nXG4gKiAgfVxuICovXG5cbi8qKlxuICogUmV0dXJucyB0aGUgbGlzdCBvZiB0aGUge0BsaW5rIEJyb3dzZXJJbmZvfSBvYmplY3RzIHRoYXQgY29udGFpbiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYnJvd3NlcnMgaW5zdGFsbGVkIG9uIHRoZSBtYWNoaW5lLlxuICogQGZ1bmN0aW9uXG4gKiBAYXN5bmNcbiAqIEBuYW1lIGdldEluc3RhbGxhdGlvbnNcbiAqIEByZXR1cm5zIHtPYmplY3QuPHN0cmluZywgQnJvd3NlckluZm8+fSBMaXN0IG9mIHRoZSB7QGxpbmsgQnJvd3NlckluZm99IG9iamVjdHNcbiAqICAgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYnJvd3NlcnMgaW5zdGFsbGVkIG9uIHRoZSBtYWNoaW5lLlxuICogQGV4YW1wbGVcbiAqIHtcbiAqICAgY2hyb21lOiB7XG4gKiAgICAgICBwYXRoOiAnQzpcXFxcUHJvZ3JhbUZpbGVzXFxcXC4uLlxcXFxjaHJvbWUuZXhlJyxcbiAqICAgICAgIGNtZDogJy0tbmV3LXdpbmRvdycsXG4gKiAgICAgICBtYWNPcGVuQ21kVGVtcGxhdGU6ICdvcGVuIC1uIC1hIFwie3t7cGF0aH19fVwiIC0tYXJncyB7e3twYWdlVXJsfX19IHt7e2NtZH19fSdcbiAqICAgfSxcbiAqXG4gKiAgIGZpcmVmb3g6IHtcbiAqICAgICAgIHBhdGg6ICdDOlxcXFxQcm9ncmFtRmlsZXNcXFxcLi4uXFxcXGZpcmVmb3guZXhlJyxcbiAqICAgICAgIGNtZDogJy1uZXctd2luZG93JyxcbiAqICAgICAgIG1hY09wZW5DbWRUZW1wbGF0ZTogJ29wZW4gLWEgXCJ7e3twYXRofX19XCIge3t7cGFnZVVybH19fSAtLWFyZ3Mge3t7Y21kfX19J1xuICogICB9XG4gKiB9XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWluc3RhbGxhdGlvbnNDYWNoZSlcbiAgICAgICAgaW5zdGFsbGF0aW9uc0NhY2hlID0gYXdhaXQgZmluZEJyb3dzZXJzKCk7XG5cbiAgICByZXR1cm4gaW5zdGFsbGF0aW9uc0NhY2hlO1xufVxuIl19 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWluc3RhbGxhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpL2dldC1pbnN0YWxsYXRpb25zLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsMERBQTJCO0FBQzNCLGtFQUFrQztBQUNsQyxtQ0FBK0I7QUFDL0IscUZBQWlEO0FBQ2pELHdDQUFxRDtBQUNyRCwrREFBdUM7QUFDdkMseURBQWlDO0FBRWpDLE1BQU0sb0JBQW9CLEdBQVEseUJBQXlCLENBQUM7QUFDNUQsTUFBTSx1QkFBdUIsR0FBSyx5REFBeUQsb0JBQW9CLEdBQUcsQ0FBQztBQUNuSCxNQUFNLHlCQUF5QixHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLGlFQUFpRSxDQUFDO0FBRW5ILE1BQU0sU0FBUyxHQUFVLE1BQU0sQ0FBQztBQUNoQyxNQUFNLGdCQUFnQixHQUFHLFNBQVMsR0FBRyxTQUFTLENBQUM7QUFFL0MsTUFBTSw4QkFBOEIsR0FBRyxXQUFXLENBQUM7QUFDbkQsTUFBTSw4QkFBOEIsR0FBRyxRQUFRLENBQUM7QUFDaEQsTUFBTSxzQkFBc0IsR0FBVyxtQ0FBbUMsQ0FBQztBQUUzRSxNQUFNLGdCQUFnQixHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBRXJDLE1BQU0sc0JBQXNCLEdBQUcsR0FBRyxDQUFDO0FBRW5DLE1BQU0sd0JBQXdCLEdBQVksR0FBRyxDQUFDLEVBQUUsQ0FBQyx1QkFBdUIsR0FBRyxHQUFHLENBQUM7QUFDL0UsTUFBTSxpQ0FBaUMsR0FBRywyQkFBMkIsOEJBQThCLEdBQUcsQ0FBQztBQUN2RyxNQUFNLDJCQUEyQixHQUFTLDBCQUEwQiw4QkFBOEIsTUFBTSw4QkFBOEIsR0FBRyxDQUFDO0FBQzFJLE1BQU0sMEJBQTBCLEdBQVUscUJBQXFCLGdCQUFnQixFQUFFLENBQUM7QUFFbEYsTUFBTSx1Q0FBdUMsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ25E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QUFFLENBQUMsS0FBSztRQUNSLE9BQU8sTUFBTSxpQkFBaUIsRUFBRSxDQUFDO0FBQ3pDLENBQUM7QUFHRCxNQUFNO0FBQ047Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFFSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBQ1ksS0FBSztJQUNoQixJQUFJLENBQUMsa0JBQWtCO1FBQ25CLGtCQUFrQixHQUFHLE1BQU0sWUFBWSxFQUFFLENBQUM7SUFFOUMsT0FBTyxrQkFBa0IsQ0FBQztBQUM5QixDQUFDO0FBTEQsNEJBS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgT1MgZnJvbSAnb3MtZmFtaWx5JztcbmltcG9ydCB3aGljaCBmcm9tICd3aGljaC1wcm9taXNlJztcbmltcG9ydCB7IG1lcmdlIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBleGlzdHMgZnJvbSAnLi4vdXRpbHMvZnMtZXhpc3RzLXByb21pc2VkJztcbmltcG9ydCB7IGV4ZWMsIGV4ZWNQb3dlcnNoZWxsIH0gZnJvbSAnLi4vdXRpbHMvZXhlYyc7XG5pbXBvcnQgdW5xdW90ZSBmcm9tICcuLi91dGlscy91bnF1b3RlJztcbmltcG9ydCBBTElBU0VTIGZyb20gJy4uL2FsaWFzZXMnO1xuXG5jb25zdCBNSUNST1NPRlRfRURHRV9DTEFTUyAgICAgID0gJ01pY3Jvc29mdC5NaWNyb3NvZnRFZGdlJztcbmNvbnN0IE1JQ1JPU09GVF9FREdFX0tFWV9HTE9CICAgPSBgSEtDVVxcXFxTb2Z0d2FyZVxcXFxDbGFzc2VzXFxcXEFjdGl2YXRhYmxlQ2xhc3Nlc1xcXFxQYWNrYWdlXFxcXCR7TUlDUk9TT0ZUX0VER0VfQ0xBU1N9KmA7XG5jb25zdCBCUk9XU0VSX0NPTU1BTkRTX0tFWV9HTE9CID0gcm9vdCA9PiBgJHtyb290fVxcXFxTb2Z0d2FyZVxcXFxDbGllbnRzXFxcXFN0YXJ0TWVudUludGVybmV0XFxcXCpcXFxcc2hlbGxcXFxcb3BlblxcXFxjb21tYW5kYDtcblxuY29uc3QgTElORV9XUkFQICAgICAgICA9ICdcXHJcXG4nO1xuY29uc3QgRE9VQkxFX0xJTkVfV1JBUCA9IExJTkVfV1JBUCArIExJTkVfV1JBUDtcblxuY29uc3QgUkVHSVNUUllfQlJPV1NFUl9QQVRIX1BST1BFUlRZID0gJyhkZWZhdWx0KSc7XG5jb25zdCBSRUdJU1RSWV9CUk9XU0VSX05BTUVfUFJPUEVSVFkgPSAnUFNQYXRoJztcbmNvbnN0IFJFR0lTVFJZX1BST1BFUlRJRVNfUkUgICAgICAgICA9IC9eKFxcKGRlZmF1bHRcXCl8UFNQYXRoKVxccyo6XFxzKiguKikkLztcblxuY29uc3QgTUFYX09VVFBVVF9XSURUSCA9IDIgKiogMzEgLSAxO1xuXG5jb25zdCBQT1dFUlNIRUxMX1BJUEVfU1lNQk9MID0gJ3wnO1xuXG5jb25zdCBHRVRfUkVHSVNUUllfS0VZX0NPTU1BTkQgICAgICAgICAgPSBrZXkgPT4gYEdldC1JdGVtICdSZWdpc3RyeTo6JHtrZXl9J2A7XG5jb25zdCBHRVRfQlJPV1NFUl9QQVRIX1BST1BFUlRZX0NPTU1BTkQgPSBgR2V0LUl0ZW1Qcm9wZXJ0eSAtTmFtZSAnJHtSRUdJU1RSWV9CUk9XU0VSX1BBVEhfUFJPUEVSVFl9J2A7XG5jb25zdCBGT1JNQVRfQlJPV1NFUl9JTkZPX0NPTU1BTkQgICAgICAgPSBgRm9ybWF0LUxpc3QgLVByb3BlcnR5ICcke1JFR0lTVFJZX0JST1dTRVJfUEFUSF9QUk9QRVJUWX0nLCcke1JFR0lTVFJZX0JST1dTRVJfTkFNRV9QUk9QRVJUWX0nYDtcbmNvbnN0IExJTUlUX09VVFBVVF9XSURUSF9DT01NQU5EICAgICAgICA9IGBPdXQtU3RyaW5nIC1XaWR0aCAke01BWF9PVVRQVVRfV0lEVEh9YDtcblxuY29uc3QgR0VUX1JFR0lTVFJZX0JST1dTRVJfUFJPUEVSVElFU19DT01NQU5EID0ga2V5ID0+IFtcbiAgICBHRVRfUkVHSVNUUllfS0VZX0NPTU1BTkQoa2V5KSxcbiAgICBHRVRfQlJPV1NFUl9QQVRIX1BST1BFUlRZX0NPTU1BTkQsXG4gICAgRk9STUFUX0JST1dTRVJfSU5GT19DT01NQU5ELFxuICAgIExJTUlUX09VVFBVVF9XSURUSF9DT01NQU5EXG5dLmpvaW4oUE9XRVJTSEVMTF9QSVBFX1NZTUJPTCk7XG5cbi8vIEluc3RhbGxhdGlvbiBpbmZvIGNhY2hlXG52YXIgaW5zdGFsbGF0aW9uc0NhY2hlID0gbnVsbDtcblxuYXN5bmMgZnVuY3Rpb24gZ2V0UmVnaXN0cnlLZXkgKHJlZ0tleUdsb2IpIHtcbiAgICByZXR1cm4gZXhlY1Bvd2Vyc2hlbGwoR0VUX1JFR0lTVFJZX0tFWV9DT01NQU5EKHJlZ0tleUdsb2IpKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0UmVnaXN0cnlCcm93c2VyUHJvcGVydGllcyAocmVnS2V5R2xvYikge1xuICAgIHJldHVybiBleGVjUG93ZXJzaGVsbChHRVRfUkVHSVNUUllfQlJPV1NFUl9QUk9QRVJUSUVTX0NPTU1BTkQocmVnS2V5R2xvYikpO1xufVxuXG4vLyBGaW5kIGluc3RhbGxhdGlvbnMgZm9yIGRpZmZlcmVudCBwbGF0Zm9ybXNcbmFzeW5jIGZ1bmN0aW9uIGFkZEluc3RhbGxhdGlvbiAoaW5zdGFsbGF0aW9ucywgbmFtZSwgaW5zdFBhdGgpIHtcbiAgICB2YXIgZmlsZUV4aXN0cyA9IGF3YWl0IGV4aXN0cyhpbnN0UGF0aCk7XG5cbiAgICBpZiAoZmlsZUV4aXN0cykge1xuICAgICAgICBPYmplY3Qua2V5cyhBTElBU0VTKS5zb21lKGFsaWFzID0+IHtcbiAgICAgICAgICAgIHZhciB7IG5hbWVSZSwgY21kLCBtYWNPcGVuQ21kVGVtcGxhdGUsIHBhdGggfSA9IEFMSUFTRVNbYWxpYXNdO1xuXG4gICAgICAgICAgICBpZiAobmFtZVJlLnRlc3QobmFtZSkpIHtcbiAgICAgICAgICAgICAgICBpbnN0YWxsYXRpb25zW2FsaWFzXSA9IHsgcGF0aDogcGF0aCB8fCBpbnN0UGF0aCwgY21kLCBtYWNPcGVuQ21kVGVtcGxhdGUgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGRldGVjdE1pY3Jvc29mdEVkZ2UgKCkge1xuICAgIGNvbnN0IHJlZ2lzdHJ5UmVzdWx0ID0gYXdhaXQgZ2V0UmVnaXN0cnlLZXkoTUlDUk9TT0ZUX0VER0VfS0VZX0dMT0IpO1xuXG4gICAgaWYgKHJlZ2lzdHJ5UmVzdWx0LnN0ZG91dC5pbmNsdWRlcyhNSUNST1NPRlRfRURHRV9DTEFTUykpXG4gICAgICAgIHJldHVybiBBTElBU0VTWydlZGdlJ107XG5cbiAgICByZXR1cm4gbnVsbDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2VhcmNoSW5SZWdpc3RyeSAocmVnaXN0cnlSb290KSB7XG4gICAgY29uc3QgaW5zdGFsbGF0aW9ucyAgPSB7fTtcbiAgICBjb25zdCByZWdpc3RyeVJlc3VsdCA9ICBhd2FpdCBnZXRSZWdpc3RyeUJyb3dzZXJQcm9wZXJ0aWVzKEJST1dTRVJfQ09NTUFORFNfS0VZX0dMT0IocmVnaXN0cnlSb290KSk7XG5cbiAgICBjb25zdCBkYXRhID0gcmVnaXN0cnlSZXN1bHQuc3Rkb3V0XG4gICAgICAgIC5zcGxpdChET1VCTEVfTElORV9XUkFQKVxuICAgICAgICAubWFwKGJsb2NrID0+IGJsb2NrXG4gICAgICAgICAgICAuc3BsaXQoTElORV9XUkFQKVxuICAgICAgICAgICAgLm1hcChsaW5lID0+IGxpbmUubWF0Y2goUkVHSVNUUllfUFJPUEVSVElFU19SRSkpXG4gICAgICAgICAgICAuZmlsdGVyKG1hdGNoID0+ICEhbWF0Y2gpXG4gICAgICAgICAgICAubWFwKG1hdGNoID0+ICh7XG4gICAgICAgICAgICAgICAgW21hdGNoWzFdXTogdW5xdW90ZShtYXRjaFsyXSlcbiAgICAgICAgICAgIH0pKVxuICAgICAgICApXG4gICAgICAgIC5maWx0ZXIoYmxvY2sgPT4gYmxvY2sgJiYgYmxvY2subGVuZ3RoKVxuICAgICAgICAubWFwKGJsb2NrID0+IG1lcmdlKC4uLmJsb2NrKSk7XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChkYXRhLm1hcChyZWNvcmQgPT4gYWRkSW5zdGFsbGF0aW9uKGluc3RhbGxhdGlvbnMsIHJlY29yZFtSRUdJU1RSWV9CUk9XU0VSX05BTUVfUFJPUEVSVFldLCByZWNvcmRbUkVHSVNUUllfQlJPV1NFUl9QQVRIX1BST1BFUlRZXSkpKTtcblxuICAgIHJldHVybiBpbnN0YWxsYXRpb25zO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmaW5kV2luZG93c0Jyb3dzZXJzICgpIHtcbiAgICB2YXIgbWFjaGluZVJlZ2lzdGVyZWRCcm93c2VycyA9IGF3YWl0IHNlYXJjaEluUmVnaXN0cnkoJ0hLRVlfTE9DQUxfTUFDSElORScpO1xuICAgIHZhciB1c2VyUmVnaXN0ZXJlZEJyb3dzZXJzICAgID0gYXdhaXQgc2VhcmNoSW5SZWdpc3RyeSgnSEtFWV9DVVJSRU5UX1VTRVInKTtcbiAgICB2YXIgaW5zdGFsbGF0aW9ucyAgICAgICAgICAgICA9IE9iamVjdC5hc3NpZ24obWFjaGluZVJlZ2lzdGVyZWRCcm93c2VycywgdXNlclJlZ2lzdGVyZWRCcm93c2Vycyk7XG4gICAgdmFyIGVkZ2VBbGlhcyAgICAgICAgICAgICAgICAgPSBhd2FpdCBkZXRlY3RNaWNyb3NvZnRFZGdlKCk7XG5cbiAgICBpZiAoZWRnZUFsaWFzKVxuICAgICAgICBpbnN0YWxsYXRpb25zWydlZGdlJ10gPSBlZGdlQWxpYXM7XG5cbiAgICByZXR1cm4gaW5zdGFsbGF0aW9ucztcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmluZE1hY0Jyb3dzZXJzICgpIHtcbiAgICB2YXIgaW5zdGFsbGF0aW9ucyA9IHt9O1xuXG4gICAgLy8gTk9URTogcmVwbGFjZSB0aGUgc3BhY2Ugc3ltYm9sIHdpdGggY29kZSwgYmVjYXVzZSBncmVwIHNwbGl0cyBzdHJpbmdzIGJ5IHNwYWNlLlxuICAgIHZhciBzdGRvdXQgPSBhd2FpdCBleGVjKCdscyBcIi9BcHBsaWNhdGlvbnMvXCIgfCBncmVwIC1FIFwiQ2hyb21lfEZpcmVmb3h8T3BlcmF8U2FmYXJpfENocm9taXVtXCIgfCBzZWQgLUUgXCJzLyAvMDMyL1wiJyk7XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChzdGRvdXRcbiAgICAgICAgLnNwbGl0KCdcXG4nKVxuICAgICAgICAuZmlsdGVyKGZpbGVOYW1lID0+ICEhZmlsZU5hbWUpXG4gICAgICAgIC5tYXAoZmlsZU5hbWUgPT4ge1xuICAgICAgICAgICAgLy8gTk9URTogcmVzdG9yZSBzcGFjZVxuICAgICAgICAgICAgZmlsZU5hbWUgPSBmaWxlTmFtZS5yZXBsYWNlKC8wMzIvZywgJyAnKTtcblxuICAgICAgICAgICAgdmFyIG5hbWUgPSBmaWxlTmFtZS5yZXBsYWNlKC8uYXBwJC8sICcnKTtcbiAgICAgICAgICAgIHZhciBwYXRoID0gYC9BcHBsaWNhdGlvbnMvJHtmaWxlTmFtZX1gO1xuXG4gICAgICAgICAgICByZXR1cm4gYWRkSW5zdGFsbGF0aW9uKGluc3RhbGxhdGlvbnMsIG5hbWUsIHBhdGgpO1xuICAgICAgICB9KSk7XG5cbiAgICByZXR1cm4gaW5zdGFsbGF0aW9ucztcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmluZExpbnV4QnJvd3NlcnMgKCkge1xuICAgIHZhciBpbnN0YWxsYXRpb25zID0ge307XG5cbiAgICB2YXIgYWxpYXNDaGVja2luZ1Byb21pc2VzID0gT2JqZWN0XG4gICAgICAgIC5rZXlzKEFMSUFTRVMpXG4gICAgICAgIC5tYXAobmFtZSA9PiB7XG4gICAgICAgICAgICB2YXIgeyBsaW51eEJpbmFyaWVzIH0gPSBBTElBU0VTW25hbWVdO1xuXG4gICAgICAgICAgICBpZiAoIWxpbnV4QmluYXJpZXMpXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgIHZhciBkZXRlY3Rpb25Qcm9taXNlcyA9IGxpbnV4QmluYXJpZXNcbiAgICAgICAgICAgICAgICAubWFwKGJpbmFyeSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB3aGljaChiaW5hcnkpXG4gICAgICAgICAgICAgICAgICAgICAgICAudGhlbihwYXRoID0+IGFkZEluc3RhbGxhdGlvbihpbnN0YWxsYXRpb25zLCBuYW1lLCBwYXRoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogYmluYXJ5IG5vdCBmb3VuZCwganVzdCBkbyBub3RoaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChkZXRlY3Rpb25Qcm9taXNlcyk7XG4gICAgICAgIH0pO1xuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoYWxpYXNDaGVja2luZ1Byb21pc2VzKTtcblxuICAgIHJldHVybiBpbnN0YWxsYXRpb25zO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmaW5kQnJvd3NlcnMgKCkge1xuICAgIGlmIChPUy53aW4pXG4gICAgICAgIHJldHVybiBhd2FpdCBmaW5kV2luZG93c0Jyb3dzZXJzKCk7XG5cbiAgICBpZiAoT1MubWFjKVxuICAgICAgICByZXR1cm4gYXdhaXQgZmluZE1hY0Jyb3dzZXJzKCk7XG5cbiAgICBpZiAoT1MubGludXgpXG4gICAgICAgIHJldHVybiBhd2FpdCBmaW5kTGludXhCcm93c2VycygpO1xufVxuXG5cbi8vIEFQSVxuLyoqIEB0eXBlZGVmIHtPYmplY3R9IEJyb3dzZXJJbmZvXG4gKiBAZGVzY3JpcHRpb24gT2JqZWN0IHRoYXQgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGJyb3dzZXIgaW5zdGFsbGVkIG9uIHRoZSBtYWNoaW5lLlxuICogQHByb3BlcnR5IHtzdHJpbmd8dW5kZWZpbmVkfSBwYXRoIC0gVGhlIHBhdGggdG8gdGhlIGV4ZWN1dGFibGUgZmlsZSB0aGF0IHN0YXJ0cyB0aGUgYnJvd3Nlci5cbiAqICBSZXF1aXJlZCBvbiBNYWNPUyBtYWNoaW5lcy4gT24gV2luZG93cyBtYWNoaW5lcywgaXQgaXMgdXNlZCB3aGVuIHRoZSB3aW5PcGVuQ21kVGVtcGxhdGUgcHJvcGVydHkgaXMgdW5kZWZpbmVkLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGNtZCAtIEFkZGl0aW9uYWwgY29tbWFuZCBsaW5lIHBhcmFtZXRlcnMuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gbWFjT3BlbkNtZFRlbXBsYXRlIC0gQSBbTXVzdGFjaGUgdGVtcGxhdGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9qYW5sL211c3RhY2hlLmpzI3RlbXBsYXRlcylcbiAqICB0aGF0IHByb3ZpZGVzIHBhcmFtZXRlcnMgZm9yIGxhdW5jaGluZyB0aGUgYnJvd3NlciBvbiBhIE1hY09TIG1hY2hpbmUuXG4gKiBAcHJvcGVydHkge3N0cmluZ3x1bmRlZmluZWR9IHdpbk9wZW5DbWRUZW1wbGF0ZSAtIEEgW011c3RhY2hlIHRlbXBsYXRlXShodHRwczovL2dpdGh1Yi5jb20vamFubC9tdXN0YWNoZS5qcyN0ZW1wbGF0ZXMpXG4gKiAgdGhhdCBwcm92aWRlcyBwYXJhbWV0ZXJzIGZvciBsYXVuY2hpbmcgdGhlIGJyb3dzZXIgb24gYSBXaW5kb3dzIG1hY2hpbmUuICBJZiB1bmRlZmluZWQsIHRoZSBwYXRoIHRvIHRoZVxuICogIGV4ZWN1dGFibGUgZmlsZSBzcGVjaWZpZWQgYnkgdGhlIHBhdGggcHJvcGVydHkgaXMgdXNlZC5cbiAqIEBleGFtcGxlXG4gKiAge1xuICogICAgICAgcGF0aDogJ0M6XFxcXFByb2dyYW1GaWxlc1xcXFwuLi5cXFxcZmlyZWZveC5leGUnLFxuICogICAgICAgY21kOiAnLW5ldy13aW5kb3cnLFxuICogICAgICAgbWFjT3BlbkNtZFRlbXBsYXRlOiAnb3BlbiAtYSBcInt7e3BhdGh9fX1cIiB7e3twYWdlVXJsfX19IC0tYXJncyB7e3tjbWR9fX0nXG4gKiAgfVxuICovXG5cbi8qKlxuICogUmV0dXJucyB0aGUgbGlzdCBvZiB0aGUge0BsaW5rIEJyb3dzZXJJbmZvfSBvYmplY3RzIHRoYXQgY29udGFpbiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYnJvd3NlcnMgaW5zdGFsbGVkIG9uIHRoZSBtYWNoaW5lLlxuICogQGZ1bmN0aW9uXG4gKiBAYXN5bmNcbiAqIEBuYW1lIGdldEluc3RhbGxhdGlvbnNcbiAqIEByZXR1cm5zIHtPYmplY3QuPHN0cmluZywgQnJvd3NlckluZm8+fSBMaXN0IG9mIHRoZSB7QGxpbmsgQnJvd3NlckluZm99IG9iamVjdHNcbiAqICAgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYnJvd3NlcnMgaW5zdGFsbGVkIG9uIHRoZSBtYWNoaW5lLlxuICogQGV4YW1wbGVcbiAqIHtcbiAqICAgY2hyb21lOiB7XG4gKiAgICAgICBwYXRoOiAnQzpcXFxcUHJvZ3JhbUZpbGVzXFxcXC4uLlxcXFxjaHJvbWUuZXhlJyxcbiAqICAgICAgIGNtZDogJy0tbmV3LXdpbmRvdycsXG4gKiAgICAgICBtYWNPcGVuQ21kVGVtcGxhdGU6ICdvcGVuIC1uIC1hIFwie3t7cGF0aH19fVwiIC0tYXJncyB7e3twYWdlVXJsfX19IHt7e2NtZH19fSdcbiAqICAgfSxcbiAqXG4gKiAgIGZpcmVmb3g6IHtcbiAqICAgICAgIHBhdGg6ICdDOlxcXFxQcm9ncmFtRmlsZXNcXFxcLi4uXFxcXGZpcmVmb3guZXhlJyxcbiAqICAgICAgIGNtZDogJy1uZXctd2luZG93JyxcbiAqICAgICAgIG1hY09wZW5DbWRUZW1wbGF0ZTogJ29wZW4gLWEgXCJ7e3twYXRofX19XCIge3t7cGFnZVVybH19fSAtLWFyZ3Mge3t7Y21kfX19J1xuICogICB9XG4gKiB9XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWluc3RhbGxhdGlvbnNDYWNoZSlcbiAgICAgICAgaW5zdGFsbGF0aW9uc0NhY2hlID0gYXdhaXQgZmluZEJyb3dzZXJzKCk7XG5cbiAgICByZXR1cm4gaW5zdGFsbGF0aW9uc0NhY2hlO1xufVxuIl19 |
@@ -11,2 +11,3 @@ "use strict"; | ||
const del_1 = __importDefault(require("del")); | ||
const execa_1 = __importDefault(require("execa")); | ||
const os_family_1 = __importDefault(require("os-family")); | ||
@@ -16,2 +17,3 @@ const nanoid_1 = __importDefault(require("nanoid")); | ||
const binaries_1 = __importDefault(require("../binaries")); | ||
const flatten_whitespace_1 = __importDefault(require("./flatten-whitespace")); | ||
const errors_1 = require("../errors"); | ||
@@ -21,2 +23,16 @@ const EXIT_CODE_REGEXP = /Exit code: (-?\d+)/; | ||
const TEMP_PIPE_NAME = seed => `testcafe-browser-tools-fifo-${seed}`; | ||
const POWERSHELL_BINARY = 'powershell.exe'; | ||
const POWERSHELL_ARGS = ['-NoLogo', '-NonInteractive', '-Command']; | ||
const POWERSHELL_COMMAND_WRAPPER = command => flatten_whitespace_1.default ` | ||
$cp = (chcp | Select-String '\\d+').Matches.Value; | ||
Try | ||
{ | ||
chcp 65001; | ||
${command}; | ||
} | ||
Finally | ||
{ | ||
chcp $cp; | ||
} | ||
`; | ||
function getTempPipePath() { | ||
@@ -92,2 +108,9 @@ return path_1.default.join(os_1.default.tmpdir(), TEMP_PIPE_NAME(nanoid_1.default())); | ||
exports.exec = exec; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9leGVjLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0VBQXNDO0FBQ3RDLDRDQUFvQjtBQUNwQiw0Q0FBb0I7QUFDcEIsZ0RBQXdCO0FBQ3hCLDhDQUFzQjtBQUN0QiwwREFBMkI7QUFDM0Isb0RBQTRCO0FBQzVCLDREQUFvQztBQUNwQywyREFBbUM7QUFDbkMsc0NBQXVEO0FBR3ZELE1BQU0sZ0JBQWdCLEdBQUcsb0JBQW9CLENBQUM7QUFFOUMsTUFBTSxTQUFTLEdBQVEsZUFBZSxDQUFDO0FBQ3ZDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsK0JBQStCLElBQUksRUFBRSxDQUFDO0FBRXJFLFNBQVMsZUFBZTtJQUNwQixPQUFPLGNBQUksQ0FBQyxJQUFJLENBQUMsWUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLGNBQWMsQ0FBQyxnQkFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzVELENBQUM7QUFFRCxJQUFJLGVBQWUsR0FBRyxtQkFBUyxDQUFDLHVCQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDcEQsSUFBSSxXQUFXLEdBQU8sbUJBQVMsQ0FBQyx1QkFBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBR2hELFNBQVMsUUFBUSxDQUFFLFFBQVE7SUFDdkIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNuQyxJQUFJLElBQUksR0FBTyxFQUFFLENBQUM7UUFDbEIsTUFBTSxNQUFNLEdBQUcsWUFBRSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTdDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFF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QUFFLElBQUksQ0FBQyxDQUFDO0tBQ2hEO0lBQ0QsT0FBTyxHQUFHLEVBQUU7UUFDUixJQUFJLEdBQUcsWUFBWSxtQ0FBMEI7WUFDekMsTUFBTSxHQUFHLENBQUM7UUFFZCxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFFekMsSUFBSSxTQUFTLEtBQUssS0FBSyxDQUFDLElBQUksT0FBTyxTQUFTLEtBQUssUUFBUTtZQUNyRCxNQUFNLEdBQUcsQ0FBQztRQUVkLE1BQU0sSUFBSSxtQ0FBMEIsQ0FBQyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7S0FDbkY7QUFDTCxDQUFDO0FBbEJELDRCQWtCQztBQUVNLEtBQUssVUFBVSxJQUFJLENBQUUsT0FBTztJQUMvQixPQUFPLFdBQVcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDdEQsQ0FBQztBQUZELG9CQUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNoaWxkUHJvYyBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgb3MgZnJvbSAnb3MnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgZGVsIGZyb20gJ2RlbCc7XG5pbXBvcnQgT1MgZnJvbSAnb3MtZmFtaWx5JztcbmltcG9ydCBuYW5vaWQgZnJvbSAnbmFub2lkJztcbmltcG9ydCBwcm9taXNpZnkgZnJvbSAnLi9wcm9taXNpZnknO1xuaW1wb3J0IEJJTkFSSUVTIGZyb20gJy4uL2JpbmFyaWVzJztcbmltcG9ydCB7IE5hdGl2ZUJpbmFyeUhhc0ZhaWxlZEVycm9yIH0gZnJvbSAnLi4vZXJyb3JzJztcblxuXG5jb25zdCBFWElUX0NPREVfUkVHRVhQID0gL0V4aXQgY29kZTogKC0/XFxkKykvO1xuXG5jb25zdCBPUEVOX1BBVEggICAgICA9ICcvdXNyL2Jpbi9vcGVuJztcbmNvbnN0IFRFTVBfUElQRV9OQU1FID0gc2VlZCA9PiBgdGVzdGNhZmUtYnJvd3Nlci10b29scy1maWZvLSR7c2VlZH1gO1xuXG5mdW5jdGlvbiBnZXRUZW1wUGlwZVBhdGggKCkge1xuICAgIHJldHVybiBwYXRoLmpvaW4ob3MudG1wZGlyKCksIFRFTVBfUElQRV9OQU1FKG5hbm9pZCgpKSk7XG59XG5cbnZhciBleGVjRmlsZVByb21pc2UgPSBwcm9taXNpZnkoY2hpbGRQcm9jLmV4ZWNGaWxlKTtcbnZhciBleGVjUHJvbWlzZSAgICAgPSBwcm9taXNpZnkoY2hpbGRQcm9jLmV4ZWMpO1xuXG5cbmZ1bmN0aW9uIHJlYWRQaXBlIChwaXBlUGF0aCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGxldCBkYXRhICAgICA9ICcnO1xuICAgICAgICBjb25zdCBzdHJlYW0gPSBmcy5jcmVhdGVSZWFkU3RyZWFtKHBpcGVQYXRoKTtcblxuICAgICAgICBzdHJlYW0ub24oJ2RhdGEnLCBuZXdEYXRhID0+IGRhdGEgKz0gbmV3RGF0YSA/IG5ld0RhdGEudG9TdHJpbmcoKSA6ICcnKTtcbiAgICAgICAgc3RyZWFtLm9uKCdlbmQnLCAoKSA9PiByZXNvbHZlKGRhdGEpKTtcbiAgICAgICAgc3RyZWFtLm9uKCdlcnJvcicsIHJlamVjdCk7XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIHNwYXduQXBwIChwaXBlUGF0aCwgYmluYXJ5UGF0aCwgYXJncykge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGNoaWxkID0gY2hpbGRQcm9jLnNwYXduKE9QRU5fUEFUSCwgWyctbicsICctYScsIEJJTkFSSUVTLmFwcCwgJy0tYXJncycsIHBpcGVQYXRoLCBiaW5hcnlQYXRoLCAuLi5hcmdzXSk7XG5cbiAgICAgICAgbGV0IG91dHB1dERhdGEgPSAnJztcblxuICAgICAgICBjaGlsZC5vbignZXJyb3InLCByZWplY3QpO1xuXG4gICAgICAgIGNoaWxkLm9uKCdleGl0JywgY29kZSA9PiB7XG4gICAgICAgICAgICBpZiAoY29kZSlcbiAgICAgICAgICAgICAgICByZWplY3QobmV3IE5hdGl2ZUJpbmFyeUhhc0ZhaWxlZEVycm9yKHsgYmluYXJ5OiBiaW5hcnlQYXRoLCBleGl0Q29kZTogY29kZSwgb3V0cHV0OiBvdXRwdXREYXRhIH0pKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNoaWxkLnN0ZG91dC5vbignZGF0YScsIGRhdGEgPT4gb3V0cHV0RGF0YSArPSBTdHJpbmcoZGF0YSkpO1xuICAgICAgICBjaGlsZC5zdGRlcnIub24oJ2RhdGEnLCBkYXRhID0+IG91dHB1dERhdGEgKz0gU3RyaW5nKGRhdGEpKTtcbiAgICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcnVuV2l0aE1hY0FwcCAoYmluYXJ5UGF0aCwgYXJncykge1xuICAgIGNvbnN0IHBpcGVQYXRoID0gZ2V0VGVtcFBpcGVQYXRoKCk7XG5cbiAgICBhd2FpdCBleGVjUHJvbWlzZShgbWtmaWZvICR7cGlwZVBhdGh9YCk7XG5cbiAgICB0cnkge1xuICAgICAgICBjb25zdCBbZGF0YV0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICByZWFkUGlwZShwaXBlUGF0aCksXG4gICAgICAgICAgICBzcGF3bkFwcChwaXBlUGF0aCwgYmluYXJ5UGF0aCwgYXJncylcbiAgICAgICAgXSk7XG5cbiAgICAgICAgY29uc3QgZXhpdENvZGVNYXRjaCA9IGRhdGEubWF0Y2goRVhJVF9DT0RFX1JFR0VYUCk7XG5cbiAgICAgICAgaWYgKCFleGl0Q29kZU1hdGNoKVxuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG5cbiAgICAgICAgY29uc3QgZXhpdENvZGUgPSBOdW1iZXIoZXhpdENvZGVNYXRjaFsxXSk7XG5cbiAgICAgICAgaWYgKGV4aXRDb2RlKVxuICAgICAgICAgICAgdGhyb3cgbmV3IE5hdGl2ZUJpbmFyeUhhc0ZhaWxlZEVycm9yKHsgYmluYXJ5OiBiaW5hcnlQYXRoLCBvdXRwdXQ6IGRhdGEsIGV4aXRDb2RlIH0pO1xuXG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgYXdhaXQgZGVsKHBpcGVQYXRoLCB7IGZvcmNlOiB0cnVlIH0pO1xuICAgIH1cbn1cblxuLy9BUElcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleGVjRmlsZSAoZmlsZVBhdGgsIGFyZ3MpIHtcbiAgICB0cnkge1xuICAgICAgICBpZiAoT1MubWFjKVxuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHJ1bldpdGhNYWNBcHAoZmlsZVBhdGgsIGFyZ3MpO1xuXG4gICAgICAgIHJldHVybiBhd2FpdCBleGVjRmlsZVByb21pc2UoZmlsZVBhdGgsIGFyZ3MpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBOYXRpdmVCaW5hcnlIYXNGYWlsZWRFcnJvcilcbiAgICAgICAgICAgIHRocm93IGVycjtcblxuICAgICAgICBjb25zdCBlcnJvckNvZGUgPSBlcnIuc3RhdHVzIHx8IGVyci5jb2RlO1xuXG4gICAgICAgIGlmIChlcnJvckNvZGUgPT09IHZvaWQgMCB8fCB0eXBlb2YgZXJyb3JDb2RlID09PSAnc3RyaW5nJylcbiAgICAgICAgICAgIHRocm93IGVycjtcblxuICAgICAgICB0aHJvdyBuZXcgTmF0aXZlQmluYXJ5SGFzRmFpbGVkRXJyb3IoeyBiaW5hcnk6IGZpbGVQYXRoLCBleGl0Q29kZTogZXJyb3JDb2RlIH0pO1xuICAgIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4ZWMgKGNvbW1hbmQpIHtcbiAgICByZXR1cm4gZXhlY1Byb21pc2UoY29tbWFuZCwgeyBlbnY6IHByb2Nlc3MuZW52IH0pO1xufVxuIl19 | ||
async function execPowershell(command) { | ||
const wrappedCommand = POWERSHELL_COMMAND_WRAPPER(command); | ||
// NOTE: We have to ignore stdin due to a problem with PowerShell 2.0 | ||
// See https://stackoverflow.com/a/9157170/11818061 for details. | ||
return execa_1.default(POWERSHELL_BINARY, [...POWERSHELL_ARGS, `"${wrappedCommand}"`], { stdin: 'ignore', shell: true }); | ||
} | ||
exports.execPowershell = execPowershell; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9leGVjLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0VBQXNDO0FBQ3RDLDRDQUFvQjtBQUNwQiw0Q0FBb0I7QUFDcEIsZ0RBQXdCO0FBQ3hCLDhDQUFzQjtBQUN0QixrREFBMEI7QUFDMUIsMERBQTJCO0FBQzNCLG9EQUE0QjtBQUM1Qiw0REFBb0M7QUFDcEMsMkRBQW1DO0FBQ25DLDhFQUFxRDtBQUNyRCxzQ0FBdUQ7QUFHdkQsTUFBTSxnQkFBZ0IsR0FBRyxvQkFBb0IsQ0FBQztBQUU5QyxNQUFNLFNBQVMsR0FBUSxlQUFlLENBQUM7QUFDdkMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQywrQkFBK0IsSUFBSSxFQUFFLENBQUM7QUFFckUsTUFBTSxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQztBQUMzQyxNQUFNLGVBQWUsR0FBSyxDQUFDLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUVyRSxNQUFNLDBCQUEwQixHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsNEJBQWlCLENBQUM7Ozs7O1VBS3RELE9BQU87Ozs7OztDQU1oQixDQUFDO0FBRUYsU0FBUyxlQUFlO0lBQ3BCLE9BQU8sY0FBSSxDQUFDLElBQUksQ0FBQyxZQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsY0FBYyxDQUFDLGdCQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDNUQsQ0FBQztBQUVELElBQUksZUFBZSxHQUFHLG1CQUFTLENBQUMsdUJBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNwRCxJQUFJLFdBQVcsR0FBTyxtQkFBUyxDQUFDLHVCQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7QUFHaEQsU0FBUyxRQUFRLENBQUUsUUFBUTtJQUN2QixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ25DLElBQUksSUFBSSxHQUFPLEVBQUUsQ0FBQztRQUNsQixNQUFNLE1BQU0sR0FBRyxZQUFFLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFN0MsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQy9CLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsSUFBSTtJQUN6QyxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ25DLE1BQU0sS0FBSyxHQUFHLHVCQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsa0JBQVEsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRTlHLElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUVwQixLQUFLLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUUxQixLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNwQixJQUFJLElBQUk7Z0JBQ0osTUFBTSxDQUFDLElBQUksbUNBQTBCLENBQUMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQzs7Z0JBRW5HLE9BQU8sRUFBRSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUFDO1FBRUgsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzVELEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRCxLQUFLLFVBQVUsYUFBYSxDQUFFLFVBQVUsRUFBRSxJQUFJO0lBQzFDLE1BQU0sUUFBUSxHQUFHLGVBQWUsRUFBRSxDQUFDO0lBRW5DLE1BQU0sV0FBVyxDQUFDLFVBQVUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUV4QyxJQUFJO1FBQ0EsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUM3QixRQUFRLENBQUMsUUFBUSxDQUFDO1lBQ2xCLFFBQVEsQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQztTQUN2QyxDQUFDLENBQUM7UUFFSCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFbkQsSUFBSSxDQUFDLGFBQWE7WUFDZCxPQUFPLElBQUksQ0FBQztRQUVoQixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFMUMsSUFBSSxRQUFRO1lBQ1IsTUFBTSxJQUFJLG1DQUEwQixDQUFDLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFFekYsT0FBTyxJQUFJLENBQUM7S0FDZjtZQUNPO1FBQ0osTUFBTSxhQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7S0FDeEM7QUFDTCxDQUFDO0FBRUQsS0FBSztBQUNFLEtBQUssVUFBVSxRQUFRLENBQUUsUUFBUSxFQUFFLElBQUk7SUFDMUMsSUFBSTtRQUNBLElBQUksbUJBQUUsQ0FBQyxHQUFHO1lBQ04sT0FBTyxNQUFNLGFBQWEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFL0MsT0FBTyxNQUFNLGVBQWUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDaEQ7SUFDRCxPQUFPLEdBQUcsRUFBRTtRQUNSLElBQUksR0FBRyxZQUFZLG1DQUEwQjtZQUN6QyxNQUFNLEdBQUcsQ0FBQztRQUVkLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQztRQUV6QyxJQUFJLFNBQVMsS0FBSyxLQUFLLENBQUMsSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRO1lBQ3JELE1BQU0sR0FBRyxDQUFDO1FBRWQsTUFBTSxJQUFJLG1DQUEwQixDQUFDLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztLQUNuRjtBQUNMLENBQUM7QUFsQkQsNEJBa0JDO0FBRU0sS0FBSyxVQUFVLElBQUksQ0FBRSxPQUFPO0lBQy9CLE9BQU8sV0FBVyxDQUFDLE9BQU8sRUFBRSxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUN0RCxDQUFDO0FBRkQsb0JBRUM7QUFFTSxLQUFLLFVBQVUsY0FBYyxDQUFFLE9BQU87SUFDekMsTUFBTSxjQUFjLEdBQUcsMEJBQTBCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFM0QscUVBQXFFO0lBQ3JFLGdFQUFnRTtJQUNoRSxPQUFPLGVBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLEdBQUcsZUFBZSxFQUFFLElBQUksY0FBYyxHQUFHLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDbkgsQ0FBQztBQU5ELHdDQU1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNoaWxkUHJvYyBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgb3MgZnJvbSAnb3MnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgZGVsIGZyb20gJ2RlbCc7XG5pbXBvcnQgZXhlY2EgZnJvbSAnZXhlY2EnO1xuaW1wb3J0IE9TIGZyb20gJ29zLWZhbWlseSc7XG5pbXBvcnQgbmFub2lkIGZyb20gJ25hbm9pZCc7XG5pbXBvcnQgcHJvbWlzaWZ5IGZyb20gJy4vcHJvbWlzaWZ5JztcbmltcG9ydCBCSU5BUklFUyBmcm9tICcuLi9iaW5hcmllcyc7XG5pbXBvcnQgZmxhdHRlbldoaXRlc3BhY2UgZnJvbSAnLi9mbGF0dGVuLXdoaXRlc3BhY2UnO1xuaW1wb3J0IHsgTmF0aXZlQmluYXJ5SGFzRmFpbGVkRXJyb3IgfSBmcm9tICcuLi9lcnJvcnMnO1xuXG5cbmNvbnN0IEVYSVRfQ09ERV9SRUdFWFAgPSAvRXhpdCBjb2RlOiAoLT9cXGQrKS87XG5cbmNvbnN0IE9QRU5fUEFUSCAgICAgID0gJy91c3IvYmluL29wZW4nO1xuY29uc3QgVEVNUF9QSVBFX05BTUUgPSBzZWVkID0+IGB0ZXN0Y2FmZS1icm93c2VyLXRvb2xzLWZpZm8tJHtzZWVkfWA7XG5cbmNvbnN0IFBPV0VSU0hFTExfQklOQVJZID0gJ3Bvd2Vyc2hlbGwuZXhlJztcbmNvbnN0IFBPV0VSU0hFTExfQVJHUyAgID0gWyctTm9Mb2dvJywgJy1Ob25JbnRlcmFjdGl2ZScsICctQ29tbWFuZCddO1xuXG5jb25zdCBQT1dFUlNIRUxMX0NPTU1BTkRfV1JBUFBFUiA9IGNvbW1hbmQgPT4gZmxhdHRlbldoaXRlc3BhY2UgYFxuICAgICRjcCA9IChjaGNwIHwgU2VsZWN0LVN0cmluZyAnXFxcXGQrJykuTWF0Y2hlcy5WYWx1ZTtcbiAgICBUcnlcbiAgICB7XG4gICAgICAgIGNoY3AgNjUwMDE7XG4gICAgICAgICR7Y29tbWFuZH07XG4gICAgfVxuICAgIEZpbmFsbHlcbiAgICB7XG4gICAgICAgIGNoY3AgJGNwO1xuICAgIH1cbmA7XG5cbmZ1bmN0aW9uIGdldFRlbXBQaXBlUGF0aCAoKSB7XG4gICAgcmV0dXJuIHBhdGguam9pbihvcy50bXBkaXIoKSwgVEVNUF9QSVBFX05BTUUobmFub2lkKCkpKTtcbn1cblxudmFyIGV4ZWNGaWxlUHJvbWlzZSA9IHByb21pc2lmeShjaGlsZFByb2MuZXhlY0ZpbGUpO1xudmFyIGV4ZWNQcm9taXNlICAgICA9IHByb21pc2lmeShjaGlsZFByb2MuZXhlYyk7XG5cblxuZnVuY3Rpb24gcmVhZFBpcGUgKHBpcGVQYXRoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgbGV0IGRhdGEgICAgID0gJyc7XG4gICAgICAgIGNvbnN0IHN0cmVhbSA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0ocGlwZVBhdGgpO1xuXG4gICAgICAgIHN0cmVhbS5vbignZGF0YScsIG5ld0RhdGEgPT4gZGF0YSArPSBuZXdEYXRhID8gbmV3RGF0YS50b1N0cmluZygpIDogJycpO1xuICAgICAgICBzdHJlYW0ub24oJ2VuZCcsICgpID0+IHJlc29sdmUoZGF0YSkpO1xuICAgICAgICBzdHJlYW0ub24oJ2Vycm9yJywgcmVqZWN0KTtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gc3Bhd25BcHAgKHBpcGVQYXRoLCBiaW5hcnlQYXRoLCBhcmdzKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgY29uc3QgY2hpbGQgPSBjaGlsZFByb2Muc3Bhd24oT1BFTl9QQVRILCBbJy1uJywgJy1hJywgQklOQVJJRVMuYXBwLCAnLS1hcmdzJywgcGlwZVBhdGgsIGJpbmFyeVBhdGgsIC4uLmFyZ3NdKTtcblxuICAgICAgICBsZXQgb3V0cHV0RGF0YSA9ICcnO1xuXG4gICAgICAgIGNoaWxkLm9uKCdlcnJvcicsIHJlamVjdCk7XG5cbiAgICAgICAgY2hpbGQub24oJ2V4aXQnLCBjb2RlID0+IHtcbiAgICAgICAgICAgIGlmIChjb2RlKVxuICAgICAgICAgICAgICAgIHJlamVjdChuZXcgTmF0aXZlQmluYXJ5SGFzRmFpbGVkRXJyb3IoeyBiaW5hcnk6IGJpbmFyeVBhdGgsIGV4aXRDb2RlOiBjb2RlLCBvdXRwdXQ6IG91dHB1dERhdGEgfSkpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY2hpbGQuc3Rkb3V0Lm9uKCdkYXRhJywgZGF0YSA9PiBvdXRwdXREYXRhICs9IFN0cmluZyhkYXRhKSk7XG4gICAgICAgIGNoaWxkLnN0ZGVyci5vbignZGF0YScsIGRhdGEgPT4gb3V0cHV0RGF0YSArPSBTdHJpbmcoZGF0YSkpO1xuICAgIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBydW5XaXRoTWFjQXBwIChiaW5hcnlQYXRoLCBhcmdzKSB7XG4gICAgY29uc3QgcGlwZVBhdGggPSBnZXRUZW1wUGlwZVBhdGgoKTtcblxuICAgIGF3YWl0IGV4ZWNQcm9taXNlKGBta2ZpZm8gJHtwaXBlUGF0aH1gKTtcblxuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IFtkYXRhXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgIHJlYWRQaXBlKHBpcGVQYXRoKSxcbiAgICAgICAgICAgIHNwYXduQXBwKHBpcGVQYXRoLCBiaW5hcnlQYXRoLCBhcmdzKVxuICAgICAgICBdKTtcblxuICAgICAgICBjb25zdCBleGl0Q29kZU1hdGNoID0gZGF0YS5tYXRjaChFWElUX0NPREVfUkVHRVhQKTtcblxuICAgICAgICBpZiAoIWV4aXRDb2RlTWF0Y2gpXG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcblxuICAgICAgICBjb25zdCBleGl0Q29kZSA9IE51bWJlcihleGl0Q29kZU1hdGNoWzFdKTtcblxuICAgICAgICBpZiAoZXhpdENvZGUpXG4gICAgICAgICAgICB0aHJvdyBuZXcgTmF0aXZlQmluYXJ5SGFzRmFpbGVkRXJyb3IoeyBiaW5hcnk6IGJpbmFyeVBhdGgsIG91dHB1dDogZGF0YSwgZXhpdENvZGUgfSk7XG5cbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICBhd2FpdCBkZWwocGlwZVBhdGgsIHsgZm9yY2U6IHRydWUgfSk7XG4gICAgfVxufVxuXG4vL0FQSVxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4ZWNGaWxlIChmaWxlUGF0aCwgYXJncykge1xuICAgIHRyeSB7XG4gICAgICAgIGlmIChPUy5tYWMpXG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgcnVuV2l0aE1hY0FwcChmaWxlUGF0aCwgYXJncyk7XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IGV4ZWNGaWxlUHJvbWlzZShmaWxlUGF0aCwgYXJncyk7XG4gICAgfVxuICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIE5hdGl2ZUJpbmFyeUhhc0ZhaWxlZEVycm9yKVxuICAgICAgICAgICAgdGhyb3cgZXJyO1xuXG4gICAgICAgIGNvbnN0IGVycm9yQ29kZSA9IGVyci5zdGF0dXMgfHwgZXJyLmNvZGU7XG5cbiAgICAgICAgaWYgKGVycm9yQ29kZSA9PT0gdm9pZCAwIHx8IHR5cGVvZiBlcnJvckNvZGUgPT09ICdzdHJpbmcnKVxuICAgICAgICAgICAgdGhyb3cgZXJyO1xuXG4gICAgICAgIHRocm93IG5ldyBOYXRpdmVCaW5hcnlIYXNGYWlsZWRFcnJvcih7IGJpbmFyeTogZmlsZVBhdGgsIGV4aXRDb2RlOiBlcnJvckNvZGUgfSk7XG4gICAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhlYyAoY29tbWFuZCkge1xuICAgIHJldHVybiBleGVjUHJvbWlzZShjb21tYW5kLCB7IGVudjogcHJvY2Vzcy5lbnYgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleGVjUG93ZXJzaGVsbCAoY29tbWFuZCkge1xuICAgIGNvbnN0IHdyYXBwZWRDb21tYW5kID0gUE9XRVJTSEVMTF9DT01NQU5EX1dSQVBQRVIoY29tbWFuZCk7XG5cbiAgICAvLyBOT1RFOiBXZSBoYXZlIHRvIGlnbm9yZSBzdGRpbiBkdWUgdG8gYSBwcm9ibGVtIHdpdGggUG93ZXJTaGVsbCAyLjBcbiAgICAvLyBTZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzkxNTcxNzAvMTE4MTgwNjEgZm9yIGRldGFpbHMuXG4gICAgcmV0dXJuIGV4ZWNhKFBPV0VSU0hFTExfQklOQVJZLCBbLi4uUE9XRVJTSEVMTF9BUkdTLCBgXCIke3dyYXBwZWRDb21tYW5kfVwiYF0sIHsgc3RkaW46ICdpZ25vcmUnLCBzaGVsbDogdHJ1ZSB9KTtcbn1cbiJdfQ== |
{ | ||
"name": "testcafe-browser-tools", | ||
"version": "2.0.1", | ||
"version": "2.0.2", | ||
"description": "An utility library for performing platform-dependent actions on browsers.", | ||
@@ -22,2 +22,3 @@ "homepage": "https://github.com/DevExpress/testcafe-browser-tools", | ||
"graceful-fs": "^4.1.11", | ||
"execa": "^3.3.0", | ||
"linux-platform-info": "^0.0.3", | ||
@@ -40,3 +41,2 @@ "mkdirp": "^0.5.1", | ||
"eslint-plugin-babel": "^2.1.1", | ||
"execa": "^0.9.0", | ||
"express": "^3.21.1", | ||
@@ -43,0 +43,0 @@ "gulp": "^4.0.2", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
1772260
24
81
1216
15
+ Addedexeca@^3.3.0
+ Addedcross-spawn@7.0.6(transitive)
+ Addedend-of-stream@1.4.4(transitive)
+ Addedexeca@3.4.0(transitive)
+ Addedget-stream@5.2.0(transitive)
+ Addedhuman-signals@1.1.1(transitive)
+ Addedis-stream@2.0.1(transitive)
+ Addedmerge-stream@2.0.0(transitive)
+ Addedmimic-fn@2.1.0(transitive)
+ Addednpm-run-path@4.0.1(transitive)
+ Addedonetime@5.1.2(transitive)
+ Addedp-finally@2.0.1(transitive)
+ Addedpath-key@3.1.1(transitive)
+ Addedpump@3.0.2(transitive)
+ Addedshebang-command@2.0.0(transitive)
+ Addedshebang-regex@3.0.0(transitive)
+ Addedsignal-exit@3.0.7(transitive)
+ Addedstrip-final-newline@2.0.0(transitive)
+ Addedwhich@2.0.2(transitive)