Join our webinar on Wednesday, June 26, at 1pm EDTHow Chia Mitigates Risk in the Crypto Industry.Register
Socket
Socket
Sign inDemoInstall

makfy

Package Overview
Dependencies
54
Maintainers
1
Versions
43
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.4.2 to 2.0.0

dist/lib/config.d.ts

4

CHANGELOG.md
# makfy changelog
## 2.0.0
- whole new syntax to define commands more easily. see README.md for further details.
## 1.4.0

@@ -4,0 +8,0 @@

111

dist/bin/cli.js

@@ -68,2 +68,3 @@ #! /usr/bin/env node

var lib_1 = require("../lib/");
var config_1 = require("../lib/config");
var errors_1 = require("../lib/errors");

@@ -172,49 +173,38 @@ var schema_1 = require("../lib/schema");

try {
var usingDefaultExport = false;
var fileExports = require(absoluteFilename);
// use default export if available
if (fileExports.default) {
usingDefaultExport = true;
fileExports = fileExports.default;
require(absoluteFilename);
if (!loadContents) {
return {};
}
if (!typeChecking_1.isObject(fileExports)) {
exitWithError(2 /* UserFileError */, "module.exports" + (usingDefaultExport ? ".default" : "") + " inside '" + filename + "' is not an object");
return;
}
var contents = void 0;
if (loadContents) {
contents = fs.readFileSync(absoluteFilename, "utf8");
var deps = fileExports.dependencies;
if (deps) {
if (!typeChecking_1.isStringArray(deps)) {
exitWithError(2 /* UserFileError */, "export dependencies must be a string array with paths to files");
}
var rootDir = path.dirname(absoluteFilename);
try {
for (var deps_1 = __values(deps), deps_1_1 = deps_1.next(); !deps_1_1.done; deps_1_1 = deps_1.next()) {
var dep = deps_1_1.value;
var absDepFilename = void 0;
if (path.isAbsolute(dep)) {
absDepFilename = dep;
}
else {
absDepFilename = path.join(rootDir, dep);
}
if (!fs.existsSync(absDepFilename) && !absDepFilename.toLowerCase().endsWith(".js")) {
absDepFilename += ".js";
}
contents += fs.readFileSync(absDepFilename, "utf8");
var contents = fs.readFileSync(absoluteFilename, "utf8");
var deps = config_1.config.dependencies;
if (deps) {
if (!typeChecking_1.isStringArray(deps)) {
exitWithError(2 /* UserFileError */, "export dependencies must be a string array with paths to files");
}
var rootDir = path.dirname(absoluteFilename);
try {
for (var deps_1 = __values(deps), deps_1_1 = deps_1.next(); !deps_1_1.done; deps_1_1 = deps_1.next()) {
var dep = deps_1_1.value;
var absDepFilename = void 0;
if (path.isAbsolute(dep)) {
absDepFilename = dep;
}
}
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {
try {
if (deps_1_1 && !deps_1_1.done && (_a = deps_1.return)) _a.call(deps_1);
else {
absDepFilename = path.join(rootDir, dep);
}
finally { if (e_2) throw e_2.error; }
if (!fs.existsSync(absDepFilename) && !absDepFilename.toLowerCase().endsWith(".js")) {
absDepFilename += ".js";
}
contents += fs.readFileSync(absDepFilename, "utf8");
}
}
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {
try {
if (deps_1_1 && !deps_1_1.done && (_a = deps_1.return)) _a.call(deps_1);
}
finally { if (e_2) throw e_2.error; }
}
}
return {
exports: fileExports,
contents: contents

@@ -229,6 +219,6 @@ };

var mainAsync = function () { return __awaiter(_this, void 0, void 0, function () {
var e_3, _a, e_4, _b, execute, fileToLoad, exports_1, commandName_1, fileToLoad_1, _c, exports_2, contents_1, commandName_2, commandArgs_1, reservedArgNames_1, reservedArgNames_1_1, resArg, _d, _e, argName, options_1, err_1, prefix;
var e_3, _a, e_4, _b, execute, fileToLoad, commandName_1, fileToLoad_1, contents_1, commandName_2, commandArgs_1, reservedArgNames_1, reservedArgNames_1_1, resArg, _c, _d, argName, options_1, err_1, prefix;
var _this = this;
return __generator(this, function (_f) {
switch (_f.label) {
return __generator(this, function (_e) {
switch (_e.label) {
case 0:

@@ -243,3 +233,4 @@ console_1.resetColors();

fileToLoad = getFileToLoad();
exports_1 = loadFile(fileToLoad, false).exports;
// tslint:disable-next-line: no-unused-expression
loadFile(fileToLoad, false);
commandName_1 = argv._.length > 0 ? argv._[0].trim() : undefined;

@@ -255,3 +246,3 @@ if (commandName_1) {

output = chalk_1.default.bold.gray("listing '" + commandName_1 + "' command...\n\n") +
lib_1.listCommand(exports_1.commands, commandName_1, true);
lib_1.listCommand(config_1.config.commands, commandName_1, true);
console.log(output);

@@ -266,3 +257,3 @@ return [2 /*return*/];

return __generator(this, function (_a) {
output = chalk_1.default.bold.gray("listing all commands...\n\n") + lib_1.listAllCommands(exports_1.commands, true);
output = chalk_1.default.bold.gray("listing all commands...\n\n") + lib_1.listAllCommands(config_1.config.commands, true);
console.log(output);

@@ -281,3 +272,3 @@ return [2 /*return*/];

fileToLoad_1 = getFileToLoad();
_c = loadFile(fileToLoad_1, true), exports_2 = _c.exports, contents_1 = _c.contents;
contents_1 = loadFile(fileToLoad_1, true).contents;
commandName_2 = argv._[0].trim();

@@ -302,4 +293,4 @@ commandArgs_1 = __assign({}, argv);

// remove non alphanumeric extended args
for (_d = __values(Object.keys(argv)), _e = _d.next(); !_e.done; _e = _d.next()) {
argName = _e.value;
for (_c = __values(Object.keys(argv)), _d = _c.next(); !_d.done; _d = _c.next()) {
argName = _d.value;
if (!new RegExp(schema_1.alphanumericExtendedPattern).test(argName)) {

@@ -313,14 +304,7 @@ delete commandArgs_1[argName];

try {
if (_e && !_e.done && (_b = _d.return)) _b.call(_d);
if (_d && !_d.done && (_b = _c.return)) _b.call(_c);
}
finally { if (e_4) throw e_4.error; }
}
options_1 = exports_2.options;
if (options_1 === undefined) {
options_1 = {};
}
if (!typeChecking_1.isObject(options_1)) {
exitWithError(2 /* UserFileError */, formatting_1.errorMessageForObject(["options"], "must be an object or undefined"));
return [2 /*return*/];
}
options_1 = config_1.config.options;
if (argv.profile) {

@@ -338,3 +322,3 @@ options_1.profile = true;

makfyFileContents: contents_1,
commands: exports_2.commands,
commands: config_1.config.commands,
commandName: commandName_2,

@@ -351,11 +335,11 @@ commandArgs: commandArgs_1,

}
_f.label = 1;
_e.label = 1;
case 1:
_f.trys.push([1, 3, 4, 5]);
_e.trys.push([1, 3, 4, 5]);
return [4 /*yield*/, execute()];
case 2:
_f.sent();
_e.sent();
return [3 /*break*/, 5];
case 3:
err_1 = _f.sent();
err_1 = _e.sent();
console_1.resetColors();

@@ -388,2 +372,1 @@ if (err_1 instanceof errors_1.MakfyError) {

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jpbi9jbGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLGlCQW1VQTs7QUFuVUEsK0JBQTBCO0FBQzFCLHVCQUF5QjtBQUN6QiwyQkFBNkI7QUFDN0IseUNBQW9DO0FBQ3BDLGdDQUFrQztBQUNsQyw2QkFBK0I7QUFDL0IsK0JBQXFGO0FBQ3JGLHdDQUFxRDtBQUNyRCx3Q0FBNEQ7QUFDNUQsMkNBQXNEO0FBR3RELGdEQUFtRDtBQUNuRCxzREFBaUY7QUFDakYsMERBQW9FO0FBRXBFLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQztJQUN4QixxQkFBcUIsRUFBRSxLQUFLO0lBQzVCLHNCQUFzQixFQUFFLEtBQUs7SUFDN0IsY0FBYyxFQUFFLEtBQUs7SUFDckIsZUFBZSxFQUFFLEtBQUs7SUFDdEIsa0JBQWtCLEVBQUUsS0FBSztJQUN6QiwyQkFBMkIsRUFBRSxLQUFLO0lBQ2xDLDBCQUEwQixFQUFFLEtBQUs7Q0FDbEMsQ0FBQyxDQUFDO0FBRUgsb0JBQW9CO0FBQ3BCLE1BQU0sQ0FBQyxRQUFRLENBQUM7SUFDZCxNQUFNLEVBQUUsSUFBSTtDQUNiLENBQUMsQ0FBQztBQUVILElBQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQztBQUM1QixJQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQztBQVFwQyxJQUFNLGFBQWEsR0FBRyxVQUFDLElBQWEsRUFBRSxPQUFnQixFQUFFLE1BQWU7SUFDckUscUJBQVcsRUFBRSxDQUFDO0lBQ2QsSUFBSSxPQUFPLEVBQUU7UUFDWCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGVBQUssQ0FB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QUUsU0FBTyxDQUFDLFFBQVE7d0NBQzFCLFdBQVcsRUFBRSxhQUFXO3dDQUN4QixXQUFXLEVBQUUsYUFBVzt3Q0FDeEIsT0FBTyxFQUFFLFNBQU87cUNBQ2pCLENBQUMsRUFBQTs7b0NBUEYsU0FPRSxDQUFDOzs7O3lCQUNKLENBQUM7aUJBQ0g7Ozs7Z0JBR0MscUJBQU0sT0FBTyxFQUFFLEVBQUE7O2dCQUFmLFNBQWUsQ0FBQzs7OztnQkFFaEIscUJBQVcsRUFBRSxDQUFDO2dCQUNkLElBQUksS0FBRyxZQUFZLG1CQUFVLEVBQUU7b0JBQ3ZCLE1BQU0sR0FBRyxLQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyw0QkFBZSxDQUFDLEtBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO29CQUM5RSxhQUFhLHdCQUF3QixLQUFHLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2lCQUMzRDtxQkFBTSxJQUFJLEtBQUcsWUFBWSxpQkFBUSxFQUFFO29CQUNsQyx3Q0FBd0M7b0JBQ3hDLGFBQWEsbUJBQW1CLENBQUM7aUJBQ2xDO3FCQUFNO29CQUNMLE1BQU0sS0FBRyxDQUFDO2lCQUNYOzs7Z0JBRUQscUJBQVcsRUFBRSxDQUFDOzs7OztLQUVqQixDQUFDO0FBRUYsSUFBSTtJQUNGLHVDQUF1QztJQUN2QyxTQUFTLEVBQUUsQ0FBQztDQUNiO0FBQUMsT0FBTyxHQUFHLEVBQUU7SUFDWixNQUFNLEdBQUcsQ0FBQztDQUNYIiwic291cmNlc0NvbnRlbnQiOlsiIyEgL3Vzci9iaW4vZW52IG5vZGVcclxuXHJcbmltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcclxuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzXCI7XHJcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcclxuaW1wb3J0IHN0cmlwQ29sb3IgZnJvbSBcInN0cmlwLWFuc2lcIjtcclxuaW1wb3J0ICogYXMgdHNOb2RlIGZyb20gXCJ0cy1ub2RlXCI7XHJcbmltcG9ydCAqIGFzIHlhcmdzIGZyb20gXCJ5YXJnc1wiO1xyXG5pbXBvcnQgeyBsaXN0QWxsQ29tbWFuZHMsIGxpc3RDb21tYW5kLCBNYWtmeUNvbmZpZywgcnVuQ29tbWFuZEFzeW5jIH0gZnJvbSBcIi4uL2xpYi9cIjtcclxuaW1wb3J0IHsgTWFrZnlFcnJvciwgUnVuRXJyb3IgfSBmcm9tIFwiLi4vbGliL2Vycm9yc1wiO1xyXG5pbXBvcnQgeyBhbHBoYW51bWVyaWNFeHRlbmRlZFBhdHRlcm4gfSBmcm9tIFwiLi4vbGliL3NjaGVtYVwiO1xyXG5pbXBvcnQgeyByZXNlcnZlZEFyZ05hbWVzIH0gZnJvbSBcIi4uL2xpYi9zY2hlbWEvYXJnc1wiO1xyXG5pbXBvcnQgeyBDb21tYW5kcyB9IGZyb20gXCIuLi9saWIvc2NoZW1hL2NvbW1hbmRzXCI7XHJcbmltcG9ydCB7IFBhcnRpYWxPcHRpb25zIH0gZnJvbSBcIi4uL2xpYi9zY2hlbWEvb3B0aW9uc1wiO1xyXG5pbXBvcnQgeyByZXNldENvbG9ycyB9IGZyb20gXCIuLi9saWIvdXRpbHMvY29uc29sZVwiO1xyXG5pbXBvcnQgeyBlcnJvck1lc3NhZ2VGb3JPYmplY3QsIGZvcm1hdENvbnRleHRJZCB9IGZyb20gXCIuLi9saWIvdXRpbHMvZm9ybWF0dGluZ1wiO1xyXG5pbXBvcnQgeyBpc09iamVjdCwgaXNTdHJpbmdBcnJheSB9IGZyb20gXCIuLi9saWIvdXRpbHMvdHlwZUNoZWNraW5nXCI7XHJcblxyXG55YXJncy5wYXJzZXJDb25maWd1cmF0aW9uKHtcclxuICBcInNob3J0LW9wdGlvbi1ncm91cHNcIjogZmFsc2UsXHJcbiAgXCJjYW1lbC1jYXNlLWV4cGFuc2lvblwiOiBmYWxzZSxcclxuICBcImRvdC1ub3RhdGlvblwiOiBmYWxzZSxcclxuICBcInBhcnNlLW51bWJlcnNcIjogZmFsc2UsXHJcbiAgXCJib29sZWFuLW5lZ2F0aW9uXCI6IGZhbHNlLFxyXG4gIFwiZHVwbGljYXRlLWFyZ3VtZW50cy1hcnJheVwiOiBmYWxzZSxcclxuICBcImZsYXR0ZW4tZHVwbGljYXRlLWFycmF5c1wiOiBmYWxzZVxyXG59KTtcclxuXHJcbi8vIGVuYWJsZSB0cyBzdXBwb3J0XHJcbnRzTm9kZS5yZWdpc3Rlcih7XHJcbiAgcHJldHR5OiB0cnVlXHJcbn0pO1xyXG5cclxuY29uc3QgcHJvZ3JhbU5hbWUgPSBcIm1ha2Z5XCI7XHJcbmNvbnN0IGFyZ3YgPSB5YXJncy5oZWxwKGZhbHNlKS5hcmd2O1xyXG5cclxuY29uc3QgZW51bSBFcnJDb2RlIHtcclxuICBDbGlFcnJvciA9IDEsXHJcbiAgVXNlckZpbGVFcnJvciA9IDIsXHJcbiAgRXhlY0Vycm9yID0gM1xyXG59XHJcblxyXG5jb25zdCBleGl0V2l0aEVycm9yID0gKGNvZGU6IEVyckNvZGUsIG1lc3NhZ2U/OiBzdHJpbmcsIHByZWZpeD86IHN0cmluZyk6IG5ldmVyID0+IHtcclxuICByZXNldENvbG9ycygpO1xyXG4gIGlmIChtZXNzYWdlKSB7XHJcbiAgICBjb25zb2xlLmVycm9yKChwcmVmaXggPyBwcmVmaXggOiBcIlwiKSArIGNoYWxrLmJvbGQucmVkKFwiW0VSUk9SXSBcIiArIG1lc3NhZ2UpKTtcclxuICB9XHJcbiAgcHJvY2Vzcy5leGl0KGNvZGUpO1xyXG5cclxuICAvLyB0aGlzIHNob3VsZCBuZXZlciBoYXBwZW5cclxuICB0aHJvdyBuZXcgRXJyb3IoKTtcclxufTtcclxuXHJcbmNvbnN0IGRlZmF1bHRGaWxlbmFtZSA9IHByb2dyYW1OYW1lICsgXCJmaWxlXCI7XHJcbmNvbnN0IHZlcnNpb24gPSByZXF1aXJlKFwiLi4vLi4vcGFja2FnZS5qc29uXCIpLnZlcnNpb247XHJcblxyXG5jb25zdCBwcmludFByb2dyYW1IZWxwID0gKCkgPT4ge1xyXG4gIGNvbnNvbGUubG9nKGAke3Byb2dyYW1OYW1lfSB2JHt2ZXJzaW9ufWApO1xyXG4gIGNvbnNvbGUubG9nKCk7XHJcbiAgY29uc29sZS5sb2coYHVzYWdlOmApO1xyXG5cclxuICBjb25zdCBwYWQgPSAoc3RyOiBzdHJpbmcpID0+IHtcclxuICAgIHN0ciA9IFwiIFwiICsgc3RyO1xyXG4gICAgZm9yIChsZXQgaSA9IHN0cmlwQ29sb3Ioc3RyKS5sZW5ndGg7IGkgPCAzNDsgaSsrKSB7XHJcbiAgICAgIHN0ciArPSBcIiBcIjtcclxuICAgIH1cclxuICAgIHJldHVybiBzdHI7XHJcbiAgfTtcclxuXHJcbiAgY29uc3QgbG9nSGVscDEgPSAod2hhdDogc3RyaW5nLCBob3c6IHN0cmluZywgc2hvd0ZpbGU6IGJvb2xlYW4pID0+IHtcclxuICAgIGNvbnN0IGxlZnQgPSBwYWQoY2hhbGsuYm9sZC5ncmVlbihgIC0gJHt3aGF0fWApKTtcclxuICAgIGNvbnN0IHJpZ2h0ID0gY2hhbGsuYm9sZC5ncmF5KFxyXG4gICAgICBgJHtwcm9ncmFtTmFtZX0gJHtcclxuICAgICAgICBzaG93RmlsZSA/IGNoYWxrLmJvbGQubWFnZW50YShgWy1mICR7ZGVmYXVsdEZpbGVuYW1lfV0gYCkgOiBcIlwiXHJcbiAgICAgIH0ke2NoYWxrLmJvbGQubWFnZW50YShob3cpfWBcclxuICAgICk7XHJcbiAgICBjb25zb2xlLmxvZyhsZWZ0ICsgcmlnaHQpO1xyXG4gIH07XHJcblxyXG4gIGxvZ0hlbHAxKFwicnVuIGNvbW1hbmQ6XCIsIGA8Y29tbWFuZD4gLi4uY29tbWFuZE9wdGlvbnNgLCB0cnVlKTtcclxuICBsb2dIZWxwMShcImxpc3QgYWxsIGNvbW1hbmRzOlwiLCBgLS1saXN0YCwgdHJ1ZSk7XHJcbiAgbG9nSGVscDEoXCJsaXN0IGNvbW1hbmQ6XCIsIGAgPGNvbW1hbmQ+IC0tbGlzdGAsIHRydWUpO1xyXG4gIGxvZ0hlbHAxKFwic2hvdyBoZWxwICh0aGlzKTpcIiwgYFstLWhlbHBdYCwgZmFsc2UpO1xyXG5cclxuICBjb25zdCBsb2dBcmdIZWxwID0gKGFyZ05hbWU6IHN0cmluZywgZGVzYzogc3RyaW5nKSA9PiB7XHJcbiAgICBjb25zdCBsZWZ0ID0gcGFkKFwiIFwiICsgY2hhbGsuYm9sZC5ncmF5KGBbJHtjaGFsay5ib2xkLm1hZ2VudGEoYXJnTmFtZSl9XWApKTtcclxuICAgIGNvbnNvbGUubG9nKGxlZnQgKyBjaGFsay5ib2xkLmdyYXkoZGVzYykpO1xyXG4gIH07XHJcblxyXG4gIGxvZ0FyZ0hlbHAoXCItLXByb2ZpbGVcIiwgXCJmb3JjZSBzaG93IHRoZSB0aW1lIGl0IHRha2VzIHRvIHJ1biBlYWNoIHN1YmNvbW1hbmRcIik7XHJcbiAgbG9nQXJnSGVscChcIi0tc2hvdy10aW1lXCIsIFwiZm9yY2Ugc2hvdyB0aGUgY3VycmVudCB0aW1lXCIpO1xyXG4gIGxvZ0FyZ0hlbHAoXCItLWNvbG9yLy0tbm8tY29sb3JcIiwgXCJmb3JjZSBjb2xvcmVkL3VuY29sb3JlZCBvdXRwdXQgKGRlZmF1bHQ6IGF1dG9kZXRlY3QpXCIpO1xyXG59O1xyXG5cclxuaW50ZXJmYWNlIEZpbGVUb0xvYWQge1xyXG4gIGZpbGVuYW1lOiBzdHJpbmc7XHJcbiAgYWJzb2x1dGVGaWxlbmFtZTogc3RyaW5nO1xyXG59XHJcblxyXG5jb25zdCBnZXRGaWxlVG9Mb2FkID0gKCk6IEZpbGVUb0xvYWQgPT4ge1xyXG4gIGxldCBtYWluRmlsZW5hbWUgPSBkZWZhdWx0RmlsZW5hbWU7XHJcbiAgaWYgKGFyZ3YuZiB8fCBhcmd2LmZpbGUpIHtcclxuICAgIGlmIChhcmd2LmYgJiYgYXJndi5maWxlKSB7XHJcbiAgICAgIGV4aXRXaXRoRXJyb3IoRXJyQ29kZS5DbGlFcnJvciwgYC1mIGFuZCAtLWZpbGUgY2Fubm90IGJlIHVzZWQgYXQgdGhlIHNhbWUgdGltZWApO1xyXG4gICAgfVxyXG4gICAgbWFpbkZpbGVuYW1lID0gKGFyZ3YuZiB8fCBhcmd2LmZpbGUpIGFzIHN0cmluZztcclxuICB9XHJcblxyXG4gIGNvbnN0IGZpbGVzVG9Ucnk6IHN0cmluZ1tdID0gW21haW5GaWxlbmFtZV07XHJcbiAgaWYgKHBhdGguZXh0bmFtZShtYWluRmlsZW5hbWUpID09PSBcIlwiKSB7XHJcbiAgICBmaWxlc1RvVHJ5LnB1c2gobWFpbkZpbGVuYW1lICsgXCIudHNcIik7XHJcbiAgICBmaWxlc1RvVHJ5LnB1c2gobWFpbkZpbGVuYW1lICsgXCIuanNcIik7XHJcbiAgfVxyXG5cclxuICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIGZpbGVzVG9UcnkpIHtcclxuICAgIGlmIChmcy5leGlzdHNTeW5jKGZpbGVuYW1lKSkge1xyXG4gICAgICBjb25zb2xlLmxvZyhjaGFsay5ib2xkLmdyYXkoYHVzaW5nIGNvbW1hbmQgZmlsZSAnJHtjaGFsay5ib2xkLm1hZ2VudGEoZmlsZW5hbWUpfScuLi5gKSk7XHJcblxyXG4gICAgICBjb25zdCBhYnNvbHV0ZUZpbGVuYW1lID0gcGF0aC5yZXNvbHZlKGZpbGVuYW1lKTtcclxuXHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgZmlsZW5hbWUsXHJcbiAgICAgICAgYWJzb2x1dGVGaWxlbmFtZVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZXhpdFdpdGhFcnJvcihFcnJDb2RlLkNsaUVycm9yLCBgY29tbWFuZCBmaWxlIG5vdCBmb3VuZCwgdHJpZWQgJHtmaWxlc1RvVHJ5LmpvaW4oXCIsIFwiKX1gKTtcclxuICAvLyB0aGlzIHNob3VsZCBuZXZlciBoYXBwZW5cclxuICB0aHJvdyBuZXcgRXJyb3IoKTtcclxufTtcclxuXHJcbmludGVyZmFjZSBMb2FkRmlsZVJlc3VsdCB7XHJcbiAgZXhwb3J0czoge1xyXG4gICAgY29tbWFuZHM6IENvbW1hbmRzO1xyXG4gICAgb3B0aW9ucz86IFBhcnRpYWxPcHRpb25zO1xyXG4gIH07XHJcbiAgY29udGVudHM/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmNvbnN0IGxvYWRGaWxlID0gKGZpbGVUb0xvYWQ6IEZpbGVUb0xvYWQsIGxvYWRDb250ZW50czogYm9vbGVhbik6IExvYWRGaWxlUmVzdWx0IHwgdW5kZWZpbmVkID0+IHtcclxuICBjb25zdCB7IGZpbGVuYW1lLCBhYnNvbHV0ZUZpbGVuYW1lIH0gPSBmaWxlVG9Mb2FkO1xyXG5cclxuICAvLyB0cnkgdG8gbG9hZCB0aGUgdXNlciBmaWxlXHJcbiAgdHJ5IHtcclxuICAgIGxldCB1c2luZ0RlZmF1bHRFeHBvcnQgPSBmYWxzZTtcclxuICAgIGxldCBmaWxlRXhwb3J0czogTWFrZnlDb25maWcgPSByZXF1aXJlKGFic29sdXRlRmlsZW5hbWUpO1xyXG5cclxuICAgIC8vIHVzZSBkZWZhdWx0IGV4cG9ydCBpZiBhdmFpbGFibGVcclxuICAgIGlmICgoZmlsZUV4cG9ydHMgYXMgYW55KS5kZWZhdWx0KSB7XHJcbiAgICAgIHVzaW5nRGVmYXVsdEV4cG9ydCA9IHRydWU7XHJcbiAgICAgIGZpbGVFeHBvcnRzID0gKGZpbGVFeHBvcnRzIGFzIGFueSkuZGVmYXVsdDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWlzT2JqZWN0KGZpbGVFeHBvcnRzKSkge1xyXG4gICAgICBleGl0V2l0aEVycm9yKFxyXG4gICAgICAgIEVyckNvZGUuVXNlckZpbGVFcnJvcixcclxuICAgICAgICBgbW9kdWxlLmV4cG9ydHMke1xyXG4gICAgICAgICAgdXNpbmdEZWZhdWx0RXhwb3J0ID8gXCIuZGVmYXVsdFwiIDogXCJcIlxyXG4gICAgICAgIH0gaW5zaWRlICcke2ZpbGVuYW1lfScgaXMgbm90IGFuIG9iamVjdGBcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBjb250ZW50cztcclxuICAgIGlmIChsb2FkQ29udGVudHMpIHtcclxuICAgICAgY29udGVudHMgPSBmcy5yZWFkRmlsZVN5bmMoYWJzb2x1dGVGaWxlbmFtZSwgXCJ1dGY4XCIpO1xyXG4gICAgICBjb25zdCBkZXBzID0gZmlsZUV4cG9ydHMuZGVwZW5kZW5jaWVzO1xyXG4gICAgICBpZiAoZGVwcykge1xyXG4gICAgICAgIGlmICghaXNTdHJpbmdBcnJheShkZXBzKSkge1xyXG4gICAgICAgICAgZXhpdFdpdGhFcnJvcihcclxuICAgICAgICAgICAgRXJyQ29kZS5Vc2VyRmlsZUVycm9yLFxyXG4gICAgICAgICAgICBgZXhwb3J0IGRlcGVuZGVuY2llcyBtdXN0IGJlIGEgc3RyaW5nIGFycmF5IHdpdGggcGF0aHMgdG8gZmlsZXNgXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3Qgcm9vdERpciA9IHBhdGguZGlybmFtZShhYnNvbHV0ZUZpbGVuYW1lKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGRlcCBvZiBkZXBzKSB7XHJcbiAgICAgICAgICBsZXQgYWJzRGVwRmlsZW5hbWU7XHJcbiAgICAgICAgICBpZiAocGF0aC5pc0Fic29sdXRlKGRlcCkpIHtcclxuICAgICAgICAgICAgYWJzRGVwRmlsZW5hbWUgPSBkZXA7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBhYnNEZXBGaWxlbmFtZSA9IHBhdGguam9pbihyb290RGlyLCBkZXApO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmICghZnMuZXhpc3RzU3luYyhhYnNEZXBGaWxlbmFtZSkgJiYgIWFic0RlcEZpbGVuYW1lLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoXCIuanNcIikpIHtcclxuICAgICAgICAgICAgYWJzRGVwRmlsZW5hbWUgKz0gXCIuanNcIjtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBjb250ZW50cyArPSBmcy5yZWFkRmlsZVN5bmMoYWJzRGVwRmlsZW5hbWUsIFwidXRmOFwiKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBleHBvcnRzOiBmaWxlRXhwb3J0cyxcclxuICAgICAgY29udGVudHM6IGNvbnRlbnRzXHJcbiAgICB9O1xyXG4gIH0gY2F0Y2ggKGVycikge1xyXG4gICAgZXhpdFdpdGhFcnJvcihFcnJDb2RlLlVzZXJGaWxlRXJyb3IsIGBlcnJvciByZXF1aXJpbmcgJHtmaWxlbmFtZX06XFxuJHtlcnIuc3RhY2sudG9TdHJpbmcoKX1gKTtcclxuICAgIHJldHVybjtcclxuICB9XHJcbn07XHJcblxyXG5jb25zdCBtYWluQXN5bmMgPSBhc3luYyAoKSA9PiB7XHJcbiAgcmVzZXRDb2xvcnMoKTtcclxuXHJcbiAgaWYgKGFyZ3YuaGVscCB8fCBhcmd2LmgpIHtcclxuICAgIHByaW50UHJvZ3JhbUhlbHAoKTtcclxuICAgIGV4aXRXaXRoRXJyb3IoRXJyQ29kZS5DbGlFcnJvcik7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBsZXQgZXhlY3V0ZTogKCkgPT4gUHJvbWlzZTx2b2lkPjtcclxuXHJcbiAgaWYgKGFyZ3YubGlzdCB8fCBhcmd2LmwgfHwgYXJndi5fLmxlbmd0aCA8PSAwKSB7XHJcbiAgICAvLyBsaXN0XHJcbiAgICBjb25zdCBmaWxlVG9Mb2FkID0gZ2V0RmlsZVRvTG9hZCgpO1xyXG4gICAgY29uc3QgeyBleHBvcnRzIH0gPSBsb2FkRmlsZShmaWxlVG9Mb2FkLCBmYWxzZSkhO1xyXG5cclxuICAgIGNvbnN0IGNvbW1hbmROYW1lID0gYXJndi5fLmxlbmd0aCA+IDAgPyBhcmd2Ll9bMF0udHJpbSgpIDogdW5kZWZpbmVkO1xyXG4gICAgaWYgKGNvbW1hbmROYW1lKSB7XHJcbiAgICAgIGlmIChhcmd2Ll8ubGVuZ3RoID4gMSkge1xyXG4gICAgICAgIGV4aXRXaXRoRXJyb3IoXHJcbiAgICAgICAgICBFcnJDb2RlLkNsaUVycm9yLFxyXG4gICAgICAgICAgYHNwZWNpZnkgb25seSBvbmUgY29tbWFuZCB0byBsaXN0IG9yIGRvbid0IHNwZWNpZnkgYW55IGNvbW1hbmRzIHRvIGxpc3QgdGhlbSBhbGxgXHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGV4ZWN1dGUgPSBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgb3V0cHV0ID1cclxuICAgICAgICAgIGNoYWxrLmJvbGQuZ3JheShgbGlzdGluZyAnJHtjb21tYW5kTmFtZX0nIGNvbW1hbmQuLi5cXG5cXG5gKSArXHJcbiAgICAgICAgICBsaXN0Q29tbWFuZChleHBvcnRzLmNvbW1hbmRzLCBjb21tYW5kTmFtZSwgdHJ1ZSk7XHJcbiAgICAgICAgY29uc29sZS5sb2cob3V0cHV0KTtcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGV4ZWN1dGUgPSBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgb3V0cHV0ID1cclxuICAgICAgICAgIGNoYWxrLmJvbGQuZ3JheShcImxpc3RpbmcgYWxsIGNvbW1hbmRzLi4uXFxuXFxuXCIpICsgbGlzdEFsbENvbW1hbmRzKGV4cG9ydHMuY29tbWFuZHMsIHRydWUpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKG91dHB1dCk7XHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfSBlbHNlIHtcclxuICAgIC8vIHJ1blxyXG4gICAgaWYgKGFyZ3YuXy5sZW5ndGggPiAxKSB7XHJcbiAgICAgIGV4aXRXaXRoRXJyb3IoRXJyQ29kZS5DbGlFcnJvciwgXCJvbmx5IG9uZSBjb21tYW5kIGNhbiBiZSBydW4gYXQgdGhlIHNhbWUgdGltZVwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZpbGVUb0xvYWQgPSBnZXRGaWxlVG9Mb2FkKCk7XHJcbiAgICBjb25zdCB7IGV4cG9ydHMsIGNvbnRlbnRzIH0gPSBsb2FkRmlsZShmaWxlVG9Mb2FkLCB0cnVlKSE7XHJcblxyXG4gICAgY29uc3QgY29tbWFuZE5hbWUgPSBhcmd2Ll9bMF0udHJpbSgpO1xyXG5cclxuICAgIC8vIHJlbW92ZSByZXNlcnZlZCBhcmdzXHJcbiAgICBjb25zdCBjb21tYW5kQXJncyA9IHsgLi4uYXJndiB9O1xyXG4gICAgZGVsZXRlIGNvbW1hbmRBcmdzLl87XHJcbiAgICBkZWxldGUgY29tbWFuZEFyZ3MuJDA7XHJcblxyXG4gICAgZm9yIChjb25zdCByZXNBcmcgb2YgcmVzZXJ2ZWRBcmdOYW1lcykge1xyXG4gICAgICBkZWxldGUgY29tbWFuZEFyZ3NbcmVzQXJnXTtcclxuICAgIH1cclxuXHJcbiAgICAvLyByZW1vdmUgbm9uIGFscGhhbnVtZXJpYyBleHRlbmRlZCBhcmdzXHJcbiAgICBmb3IgKGNvbnN0IGFyZ05hbWUgb2YgT2JqZWN0LmtleXMoYXJndikpIHtcclxuICAgICAgaWYgKCFuZXcgUmVnRXhwKGFscGhhbnVtZXJpY0V4dGVuZGVkUGF0dGVybikudGVzdChhcmdOYW1lKSkge1xyXG4gICAgICAgIGRlbGV0ZSBjb21tYW5kQXJnc1thcmdOYW1lXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxldCBvcHRpb25zID0gZXhwb3J0cy5vcHRpb25zO1xyXG4gICAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBvcHRpb25zID0ge307XHJcbiAgICB9XHJcbiAgICBpZiAoIWlzT2JqZWN0KG9wdGlvbnMpKSB7XHJcbiAgICAgIGV4aXRXaXRoRXJyb3IoXHJcbiAgICAgICAgRXJyQ29kZS5Vc2VyRmlsZUVycm9yLFxyXG4gICAgICAgIGVycm9yTWVzc2FnZUZvck9iamVjdChbXCJvcHRpb25zXCJdLCBgbXVzdCBiZSBhbiBvYmplY3Qgb3IgdW5kZWZpbmVkYClcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKGFyZ3YucHJvZmlsZSkge1xyXG4gICAgICBvcHRpb25zLnByb2ZpbGUgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKGFyZ3Yuc2hvd1RpbWUpIHtcclxuICAgICAgb3B0aW9ucy5zaG93VGltZSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgZXhlY3V0ZSA9IGFzeW5jICgpID0+IHtcclxuICAgICAgYXdhaXQgcnVuQ29tbWFuZEFzeW5jKHtcclxuICAgICAgICBtYWtmeUZpbGVuYW1lOiBmaWxlVG9Mb2FkLmZpbGVuYW1lLFxyXG4gICAgICAgIG1ha2Z5RmlsZUNvbnRlbnRzOiBjb250ZW50cyxcclxuICAgICAgICBjb21tYW5kczogZXhwb3J0cy5jb21tYW5kcyxcclxuICAgICAgICBjb21tYW5kTmFtZTogY29tbWFuZE5hbWUsXHJcbiAgICAgICAgY29tbWFuZEFyZ3M6IGNvbW1hbmRBcmdzLFxyXG4gICAgICAgIG9wdGlvbnM6IG9wdGlvbnNcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgdHJ5IHtcclxuICAgIGF3YWl0IGV4ZWN1dGUoKTtcclxuICB9IGNhdGNoIChlcnIpIHtcclxuICAgIHJlc2V0Q29sb3JzKCk7XHJcbiAgICBpZiAoZXJyIGluc3RhbmNlb2YgTWFrZnlFcnJvcikge1xyXG4gICAgICBjb25zdCBwcmVmaXggPSBlcnIuZXhlY0NvbnRleHQgPyBmb3JtYXRDb250ZXh0SWQoZXJyLmV4ZWNDb250ZXh0KSA6IHVuZGVmaW5lZDtcclxuICAgICAgZXhpdFdpdGhFcnJvcihFcnJDb2RlLlVzZXJGaWxlRXJyb3IsIGVyci5tZXNzYWdlLCBwcmVmaXgpO1xyXG4gICAgfSBlbHNlIGlmIChlcnIgaW5zdGFuY2VvZiBSdW5FcnJvcikge1xyXG4gICAgICAvLyB0aGUgbWVzc2FnZSBzaG91bGQgYmUgcHJpbnRlZCBhbHJlYWR5XHJcbiAgICAgIGV4aXRXaXRoRXJyb3IoRXJyQ29kZS5FeGVjRXJyb3IpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhyb3cgZXJyO1xyXG4gICAgfVxyXG4gIH0gZmluYWxseSB7XHJcbiAgICByZXNldENvbG9ycygpO1xyXG4gIH1cclxufTtcclxuXHJcbnRyeSB7XHJcbiAgLy9ub2luc3BlY3Rpb24gSlNJZ25vcmVkUHJvbWlzZUZyb21DYWxsXHJcbiAgbWFpbkFzeW5jKCk7XHJcbn0gY2F0Y2ggKGVycikge1xyXG4gIHRocm93IGVycjtcclxufVxyXG4iXX0=

@@ -1,2 +0,2 @@

import { ExecContext } from "./execRuntime";
import { ExecContext } from "./schema/runtime";
export declare class MakfyError extends Error {

@@ -3,0 +3,0 @@ execContext?: ExecContext;

@@ -40,2 +40,1 @@ "use strict";

exports.RunError = RunError;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7SUFBZ0MsOEJBQUs7SUFHbkMsb0JBQVksT0FBZSxFQUFFLE9BQWdDO1FBQTdELFlBQ0Usa0JBQU0sT0FBTyxDQUFDLFNBSWY7UUFIQyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUksRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEQsS0FBSSxDQUFDLElBQUksR0FBRyxLQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztRQUNsQyxLQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQzs7SUFDN0IsQ0FBQztJQUNILGlCQUFDO0FBQUQsQ0FBQyxBQVRELENBQWdDLEtBQUssR0FTcEM7QUFUWSxnQ0FBVTtBQVd2QjtJQUE4Qiw0QkFBSztJQUdqQyxrQkFBWSxPQUFlLEVBQUUsT0FBZ0M7UUFBN0QsWUFDRSxrQkFBTSxPQUFPLENBQUMsU0FJZjtRQUhDLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSSxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoRCxLQUFJLENBQUMsSUFBSSxHQUFHLEtBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1FBQ2xDLEtBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDOztJQUM3QixDQUFDO0lBQ0gsZUFBQztBQUFELENBQUMsQUFURCxDQUE4QixLQUFLLEdBU2xDO0FBVFksNEJBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFeGVjQ29udGV4dCB9IGZyb20gXCIuL2V4ZWNSdW50aW1lXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgTWFrZnlFcnJvciBleHRlbmRzIEVycm9yIHtcclxuICBleGVjQ29udGV4dD86IEV4ZWNDb250ZXh0O1xyXG5cclxuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIGNvbnRleHQ6IEV4ZWNDb250ZXh0IHwgdW5kZWZpbmVkKSB7XHJcbiAgICBzdXBlcihtZXNzYWdlKTtcclxuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBNYWtmeUVycm9yLnByb3RvdHlwZSk7XHJcbiAgICB0aGlzLm5hbWUgPSB0aGlzLmNvbnN0cnVjdG9yLm5hbWU7XHJcbiAgICB0aGlzLmV4ZWNDb250ZXh0ID0gY29udGV4dDtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSdW5FcnJvciBleHRlbmRzIEVycm9yIHtcclxuICBleGVjQ29udGV4dD86IEV4ZWNDb250ZXh0O1xyXG5cclxuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIGNvbnRleHQ6IEV4ZWNDb250ZXh0IHwgdW5kZWZpbmVkKSB7XHJcbiAgICBzdXBlcihtZXNzYWdlKTtcclxuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBSdW5FcnJvci5wcm90b3R5cGUpO1xyXG4gICAgdGhpcy5uYW1lID0gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lO1xyXG4gICAgdGhpcy5leGVjQ29udGV4dCA9IGNvbnRleHQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==

@@ -1,22 +0,4 @@

import { ParsedCommands } from "./parser/commands";
import { GetFileChangesResult, MakfyContext } from "./schema/runtime";
import { HashCollection } from "./utils/hash";
export interface CachedGetFileChangesResult {
result: GetFileChangesResult;
oldHashCollection?: HashCollection;
newHashCollection: HashCollection;
}
export interface ExecContext extends MakfyContext {
parsedCommands: ParsedCommands;
makfyFileContents?: string;
idStack: string[];
cwd?: string;
env?: object;
syncMode: boolean;
getFileChangesResults: {
[hashFilename: string]: CachedGetFileChangesResult;
};
}
import { ExecContext } from "./schema/runtime";
export declare const runCommandAsync: (commandName: string, commandArgs: {
[argName: string]: any;
}, baseContext: ExecContext, unknownArgMeansError: boolean) => Promise<void>;

@@ -1,11 +0,6 @@

import { command, Command, CommandFromFunction, Commands } from "./schema/commands";
import { cmd, Commands } from "./schema/commands";
import { PartialOptions } from "./schema/options";
import { ExecCommand } from "./schema/runtime";
export { command };
export interface MakfyConfig {
commands: Commands;
dependencies?: string[];
options?: PartialOptions;
}
export declare function makfyConfig(makfyConfigData: MakfyConfig): MakfyConfig;
export * from "./simpleArgs";
export * from "./utils";
export { cmd };
export interface RunCommandOptions {

@@ -22,2 +17,3 @@ commands: Commands;

export declare const listAllCommands: (commands: Commands, listArguments?: boolean, listInternal?: boolean) => string;
export declare function run(...inlineCommands: ExecCommand[]): Command<{}> & CommandFromFunction;
export declare function setOptions(opts: PartialOptions): void;
export declare function setDependencies(deps: string[] | undefined): void;

@@ -78,2 +78,5 @@ "use strict";

};
function __export(m) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
}
var _this = this;

@@ -83,2 +86,3 @@ Object.defineProperty(exports, "__esModule", { value: true });

var strip_ansi_1 = require("strip-ansi");
var config_1 = require("./config");
var errors_1 = require("./errors");

@@ -89,3 +93,3 @@ var execRuntime = require("./execRuntime");

var commands_2 = require("./schema/commands");
exports.command = commands_2.command;
exports.cmd = commands_2.cmd;
var console_1 = require("./utils/console");

@@ -97,7 +101,4 @@ var formatting_1 = require("./utils/formatting");

var prettyHrTime = require("pretty-hrtime");
// only used for TS typing
function makfyConfig(makfyConfigData) {
return makfyConfigData;
}
exports.makfyConfig = makfyConfig;
__export(require("./simpleArgs"));
__export(require("./utils"));
exports.runCommandAsync = function (runCommandOptions) { return __awaiter(_this, void 0, void 0, function () {

@@ -119,3 +120,3 @@ var e_1, _a, commands, commandName, commandArgs, options, makfyFilename, makfyFileContents, parsedOptions, parsedCommands, currentCommand, parsedCommand, startTime, getFileChangesResults, execContext, savePromises, _b, _c, _d, key, value, err_1, endTime;

}
if (currentCommand.internal) {
if (commands_2.isInternalCommand(commandName)) {
throw new errors_1.MakfyError("internal commands cannot be run directly", undefined);

@@ -261,4 +262,3 @@ }

var commandName = _c.value;
var currentCommand = commands[commandName];
if (!currentCommand.internal || listInternal) {
if (!commands_2.isInternalCommand(commandName) || listInternal) {
output += exports.listCommand(commands, commandName, listArguments);

@@ -277,24 +277,9 @@ }

};
// short syntax
function run() {
var _this = this;
var inlineCommands = [];
for (var _i = 0; _i < arguments.length; _i++) {
inlineCommands[_i] = arguments[_i];
}
var cmd = {
run: function (exec) { return __awaiter(_this, void 0, void 0, function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, exec.apply(void 0, __spread(inlineCommands))];
case 1:
_a.sent();
return [2 /*return*/];
}
});
}); }
};
return cmd;
function setOptions(opts) {
Object.assign(config_1.config.options, opts);
}
exports.run = run;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaUJBME9BOztBQTFPQSwrQkFBcUM7QUFDckMseUNBQW9DO0FBQ3BDLG1DQUFnRDtBQUNoRCwyQ0FBNkM7QUFFN0MsOENBQWtEO0FBQ2xELDRDQUFnRDtBQUNoRCw4Q0FBb0Y7QUFZM0Usa0JBWkEsa0JBQU8sQ0FZQTtBQVRoQiwyQ0FBOEM7QUFDOUMsaURBQTBFO0FBQzFFLHFDQUEyRDtBQUMzRCxpREFBZ0Q7QUFDaEQscURBQWdEO0FBRWhELElBQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztBQVc5QywwQkFBMEI7QUFDMUIsU0FBZ0IsV0FBVyxDQUFDLGVBQTRCO0lBQ3RELE9BQU8sZUFBZSxDQUFDO0FBQ3pCLENBQUM7QUFGRCxrQ0FFQztBQVdZLFFBQUEsZUFBZSxHQUFHLFVBQU8saUJBQW9DOzs7OztnQkFFdEUsUUFBUSxHQU1OLGlCQUFpQixTQU5YLEVBQ1IsV0FBVyxHQUtULGlCQUFpQixZQUxSLEVBQ1gsV0FBVyxHQUlULGlCQUFpQixZQUpSLEVBQ1gsT0FBTyxHQUdMLGlCQUFpQixRQUhaLEVBQ1AsYUFBYSxHQUVYLGlCQUFpQixjQUZOLEVBQ2IsaUJBQWlCLEdBQ2YsaUJBQWlCLGtCQURGLENBQ0c7Z0JBRXRCLElBQUksQ0FBQyxXQUFXLEVBQUU7b0JBQ2hCLE1BQU0sSUFBSSxtQkFBVSxDQUFDLHNCQUFzQixFQUFFLFNBQVMsQ0FBQyxDQUFDO2lCQUN6RDtnQkFFSyxhQUFhLEdBQWdCLHNCQUFZLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUUxRCxjQUFjLEdBQUcsd0JBQWEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxD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LDZCQUFBLEVBQUEsb0JBQW9CO0lBQzVGLElBQUksQ0FBQyx1QkFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQ3ZCLE1BQU0sSUFBSSxtQkFBVSxDQUNsQixrQ0FBcUIsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLHdDQUF3QyxDQUFDLEVBQzdFLFNBQVMsQ0FDVixDQUFDO0tBQ0g7SUFFRCxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7O1FBRWhCLEtBQTBCLElBQUEsS0FBQSxTQUFBLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUEsZ0JBQUEsNEJBQUU7WUFBNUMsSUFBTSxXQUFXLFdBQUE7WUFDcEIsSUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzdDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxJQUFJLFlBQVksRUFBRTtnQkFDNUMsTUFBTSxJQUFJLG1CQUFXLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxhQUFhLENBQUMsQ0FBQzthQUM3RDtTQUNGOzs7Ozs7Ozs7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLENBQUM7QUFFRixlQUFlO0FBQ2YsU0FBZ0IsR0FBRztJQUFuQixpQkFPQztJQVBtQix3QkFBZ0M7U0FBaEMsVUFBZ0MsRUFBaEMscUJBQWdDLEVBQWhDLElBQWdDO1FBQWhDLG1DQUFnQzs7SUFDbEQsSUFBTSxHQUFHLEdBQWdCO1FBQ3ZCLEdBQUcsRUFBRSxVQUFPLElBQWtCOzs7NEJBQzVCLHFCQUFNLElBQUksd0JBQUksY0FBYyxJQUFDOzt3QkFBN0IsU0FBNkIsQ0FBQzs7OzthQUMvQjtLQUNGLENBQUM7SUFDRixPQUFPLEdBQXdDLENBQUM7QUFDbEQsQ0FBQztBQVBELGtCQU9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNoYWxrLCB7IExldmVsIH0gZnJvbSBcImNoYWxrXCI7XHJcbmltcG9ydCBzdHJpcENvbG9yIGZyb20gXCJzdHJpcC1hbnNpXCI7XHJcbmltcG9ydCB7IE1ha2Z5RXJyb3IsIFJ1bkVycm9yIH0gZnJvbSBcIi4vZXJyb3JzXCI7XHJcbmltcG9ydCAqIGFzIGV4ZWNSdW50aW1lIGZyb20gXCIuL2V4ZWNSdW50aW1lXCI7XHJcbmltcG9ydCB7IFBhcnNlZEFyZ0RlZmluaXRpb24gfSBmcm9tIFwiLi9wYXJzZXIvY29tbWFuZEFyZ1wiO1xyXG5pbXBvcnQgeyBwYXJzZUNvbW1hbmRzIH0gZnJvbSBcIi4vcGFyc2VyL2NvbW1hbmRzXCI7XHJcbmltcG9ydCB7IHBhcnNlT3B0aW9ucyB9IGZyb20gXCIuL3BhcnNlci9vcHRpb25zXCI7XHJcbmltcG9ydCB7IGNvbW1hbmQsIENvbW1hbmQsIENvbW1hbmRGcm9tRnVuY3Rpb24sIENvbW1hbmRzIH0gZnJvbSBcIi4vc2NoZW1hL2NvbW1hbmRzXCI7XHJcbmltcG9ydCB7IEZ1bGxPcHRpb25zLCBQYXJ0aWFsT3B0aW9ucyB9IGZyb20gXCIuL3NjaGVtYS9vcHRpb25zXCI7XHJcbmltcG9ydCB7IEV4ZWNDb21tYW5kLCBFeGVjRnVuY3Rpb24gfSBmcm9tIFwiLi9zY2hlbWEvcnVudGltZVwiO1xyXG5pbXBvcnQgeyByZXNldENvbG9ycyB9IGZyb20gXCIuL3V0aWxzL2NvbnNvbGVcIjtcclxuaW1wb3J0IHsgZXJyb3JNZXNzYWdlRm9yT2JqZWN0LCBnZXRUaW1lU3RyaW5nIH0gZnJvbSBcIi4vdXRpbHMvZm9ybWF0dGluZ1wiO1xyXG5pbXBvcnQgeyBzYXZlSGFzaENvbGxlY3Rpb25GaWxlQXN5bmMgfSBmcm9tIFwiLi91dGlscy9oYXNoXCI7XHJcbmltcG9ydCB7IFRleHRXcml0ZXIgfSBmcm9tIFwiLi91dGlscy9UZXh0V3JpdGVyXCI7XHJcbmltcG9ydCB7IGlzT2JqZWN0IH0gZnJvbSBcIi4vdXRpbHMvdHlwZUNoZWNraW5nXCI7XHJcblxyXG5jb25zdCBwcmV0dHlIclRpbWUgPSByZXF1aXJlKFwicHJldHR5LWhydGltZVwiKTtcclxudHlwZSBFeGVjQ29udGV4dCA9IGV4ZWNSdW50aW1lLkV4ZWNDb250ZXh0O1xyXG5cclxuZXhwb3J0IHsgY29tbWFuZCB9O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBNYWtmeUNvbmZpZyB7XHJcbiAgY29tbWFuZHM6IENvbW1hbmRzO1xyXG4gIGRlcGVuZGVuY2llcz86IHN0cmluZ1tdO1xyXG4gIG9wdGlvbnM/OiBQYXJ0aWFsT3B0aW9ucztcclxufVxyXG5cclxuLy8gb25seSB1c2VkIGZvciBUUyB0eXBpbmdcclxuZXhwb3J0IGZ1bmN0aW9uIG1ha2Z5Q29uZmlnKG1ha2Z5Q29uZmlnRGF0YTogTWFrZnlDb25maWcpOiBNYWtmeUNvbmZpZyB7XHJcbiAgcmV0dXJuIG1ha2Z5Q29uZmlnRGF0YTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSdW5Db21tYW5kT3B0aW9ucyB7XHJcbiAgY29tbWFuZHM6IENvbW1hbmRzO1xyXG4gIGNvbW1hbmROYW1lOiBzdHJpbmc7XHJcbiAgY29tbWFuZEFyZ3M6IG9iamVjdCB8IHVuZGVmaW5lZDtcclxuICBtYWtmeUZpbGVuYW1lOiBzdHJpbmc7XHJcbiAgbWFrZnlGaWxlQ29udGVudHM/OiBzdHJpbmc7XHJcbiAgb3B0aW9uczogUGFydGlhbE9wdGlvbnMgfCB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBydW5Db21tYW5kQXN5bmMgPSBhc3luYyAocnVuQ29tbWFuZE9wdGlvbnM6IFJ1bkNvbW1hbmRPcHRpb25zKSA9PiB7XHJcbiAgY29uc3Qge1xyXG4gICAgY29tbWFuZHMsXHJcbiAgICBjb21tYW5kTmFtZSxcclxuICAgIGNvbW1hbmRBcmdzLFxyXG4gICAgb3B0aW9ucyxcclxuICAgIG1ha2Z5RmlsZW5hbWUsXHJcbiAgICBtYWtmeUZpbGVDb250ZW50c1xyXG4gIH0gPSBydW5Db21tYW5kT3B0aW9ucztcclxuXHJcbiAgaWYgKCFjb21tYW5kTmFtZSkge1xyXG4gICAgdGhyb3cgbmV3IE1ha2Z5RXJyb3IoXCJjb21tYW5kIG5hbWUgbWlzc2luZ1wiLCB1bmRlZmluZWQpO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgcGFyc2VkT3B0aW9uczogRnVsbE9wdGlvbnMgPSBwYXJzZU9wdGlvbnMob3B0aW9ucywgZmFsc2UpO1xyXG5cclxuICBjb25zdCBwYXJzZWRDb21tYW5kcyA9IHBhcnNlQ29tbWFuZHMoY29tbWFuZHMsIGZhbHNlKTtcclxuICBjb25zdCBjdXJyZW50Q29tbWFuZCA9IGNvbW1hbmRzW2NvbW1hbmROYW1lXTtcclxuICBjb25zdCBwYXJzZWRDb21tYW5kID0gcGFyc2VkQ29tbWFuZHNbY29tbWFuZE5hbWVdO1xyXG4gIGlmICghcGFyc2VkQ29tbWFuZCB8fCAhY3VycmVudENvbW1hbmQpIHtcclxuICAgIHRocm93IG5ldyBNYWtmeUVycm9yKGBjb21tYW5kICcke2NvbW1hbmROYW1lfScgbm90IGZvdW5kYCwgdW5kZWZpbmVkKTtcclxuICB9XHJcblxyXG4gIGlmIChjdXJyZW50Q29tbWFuZC5pbnRlcm5hbCkge1xyXG4gICAgdGhyb3cgbmV3IE1ha2Z5RXJyb3IoXCJpbnRlcm5hbCBjb21tYW5kcyBjYW5ub3QgYmUgcnVuIGRpcmVjdGx5XCIsIHVuZGVmaW5lZCk7XHJcbiAgfVxyXG5cclxuICBjb25zb2xlLmxvZyhcclxuICAgIGdldFRpbWVTdHJpbmcocGFyc2VkT3B0aW9ucy5zaG93VGltZSkgKyBjaGFsay5iZ0JsdWUuYm9sZC53aGl0ZShgJHtjb21tYW5kTmFtZX0gLSBydW5uaW5nLi4uYClcclxuICApO1xyXG5cclxuICAvLyBydW5cclxuICBjb25zdCBzdGFydFRpbWUgPSBwcm9jZXNzLmhydGltZSgpO1xyXG5cclxuICBjb25zdCBnZXRGaWxlQ2hhbmdlc1Jlc3VsdHM6IEV4ZWNDb250ZXh0W1wiZ2V0RmlsZUNoYW5nZXNSZXN1bHRzXCJdID0ge307XHJcblxyXG4gIGNvbnN0IGV4ZWNDb250ZXh0OiBFeGVjQ29udGV4dCA9IHtcclxuICAgIC8vIGZvciBNYWtmeUNvbnRleHRcclxuICAgIGNvbW1hbmROYW1lOiBjb21tYW5kTmFtZSxcclxuICAgIGNvbW1hbmRBcmdzOiBjb21tYW5kQXJncyB8fCB7fSxcclxuICAgIGNvbW1hbmRzOiBjb21tYW5kcyxcclxuICAgIG9wdGlvbnM6IHtcclxuICAgICAgLi4ucGFyc2VkT3B0aW9ucyxcclxuICAgICAgY29sb3JNb2RlOiBjaGFsay5zdXBwb3J0c0NvbG9yLmxldmVsICE9PSBMZXZlbC5Ob25lXHJcbiAgICB9LFxyXG4gICAgbWFrZnlGaWxlbmFtZTogbWFrZnlGaWxlbmFtZSxcclxuXHJcbiAgICAvLyBmb3IgRXhlY0NvbnRleHRcclxuICAgIHBhcnNlZENvbW1hbmRzOiBwYXJzZWRDb21tYW5kcyxcclxuICAgIG1ha2Z5RmlsZUNvbnRlbnRzOiBtYWtmeUZpbGVDb250ZW50cyxcclxuICAgIHN5bmNNb2RlOiB0cnVlLFxyXG4gICAgaWRTdGFjazogW10sXHJcbiAgICBnZXRGaWxlQ2hhbmdlc1Jlc3VsdHM6IGdldEZpbGVDaGFuZ2VzUmVzdWx0c1xyXG4gIH07XHJcblxyXG4gIHRyeSB7XHJcbiAgICBhd2FpdCBleGVjUnVudGltZS5ydW5Db21tYW5kQXN5bmMoY29tbWFuZE5hbWUsIGNvbW1hbmRBcmdzIHx8IHt9LCBleGVjQ29udGV4dCwgZmFsc2UpO1xyXG5cclxuICAgIC8vIG9uIHN1Y2Nlc3Mgc2F2ZSBuZXcgY2FjaGVzIGluIHBhcmFsbGVsXHJcbiAgICBjb25zdCBzYXZlUHJvbWlzZXMgPSBbXTtcclxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGdldEZpbGVDaGFuZ2VzUmVzdWx0cykpIHtcclxuICAgICAgc2F2ZVByb21pc2VzLnB1c2goc2F2ZUhhc2hDb2xsZWN0aW9uRmlsZUFzeW5jKGtleSwgdmFsdWUubmV3SGFzaENvbGxlY3Rpb24pKTtcclxuICAgIH1cclxuICAgIGF3YWl0IFByb21pc2UuYWxsKHNhdmVQcm9taXNlcyk7XHJcbiAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICBpZiAoIShlcnIgaW5zdGFuY2VvZiBSdW5FcnJvcikgJiYgIShlcnIgaW5zdGFuY2VvZiBNYWtmeUVycm9yKSkge1xyXG4gICAgICAvLyBhbiBlcnJvciBtb3N0IHByb2JhYmx5IHRocm93biBieSB0aGUgZXhlY3V0aW9uIG9mIHJ1blxyXG4gICAgICB0aHJvdyBuZXcgTWFrZnlFcnJvcihlcnIubWVzc2FnZSwgdW5kZWZpbmVkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRocm93IGVycjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0IGVuZFRpbWUgPSBwcm9jZXNzLmhydGltZShzdGFydFRpbWUpO1xyXG4gIGNvbnNvbGUubG9nKFxyXG4gICAgXCJcXG5cIiArXHJcbiAgICAgIGdldFRpbWVTdHJpbmcocGFyc2VkT3B0aW9ucy5zaG93VGltZSkgK1xyXG4gICAgICBjaGFsay5ib2xkLmdyZWVuKGAnJHtjb21tYW5kTmFtZX0nIGRvbmUgaW4gJHtwcmV0dHlIclRpbWUoZW5kVGltZSl9YClcclxuICApO1xyXG4gIHJlc2V0Q29sb3JzKCk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgbGlzdENvbW1hbmQgPSAoY29tbWFuZHM6IENvbW1hbmRzLCBjb21tYW5kTmFtZTogc3RyaW5nLCBsaXN0QXJndW1lbnRzID0gdHJ1ZSkgPT4ge1xyXG4gIGlmICghY29tbWFuZE5hbWUpIHtcclxuICAgIHRocm93IG5ldyBNYWtmeUVycm9yKFwibWlzc2luZyBjb21tYW5kIG5hbWVcIiwgdW5kZWZpbmVkKTtcclxuICB9XHJcblxyXG4gIGNvbnN0IHcgPSBuZXcgVGV4dFdyaXRlcigpO1xyXG5cclxuICAvLyB0aGlzIGFsc28gbWFrZXMgc3VyZSB0aGUgY29tbWFuZCBleGlzdHNcclxuICBjb25zdCBwYXJzZWRDb21tYW5kcyA9IHBhcnNlQ29tbWFuZHMoY29tbWFuZHMsIGZhbHNlKTtcclxuICBjb25zdCBwYXJzZWRDb21tYW5kID0gcGFyc2VkQ29tbWFuZHNbY29tbWFuZE5hbWVdO1xyXG4gIGlmICghcGFyc2VkQ29tbWFuZCkge1xyXG4gICAgdGhyb3cgbmV3IE1ha2Z5RXJyb3IoYGNvbW1hbmQgJyR7Y29tbWFuZE5hbWV9JyBub3QgZm91bmRgLCB1bmRlZmluZWQpO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgY3VycmVudENvbW1hbmQgPSBjb21tYW5kc1tjb21tYW5kTmFtZV07XHJcblxyXG4gIGxldCB0aXRsZSA9IGNoYWxrLmJnQmx1ZS5ib2xkLndoaXRlKGNvbW1hbmROYW1lKTtcclxuXHJcbiAgY29uc3QgYXcgPSBuZXcgVGV4dFdyaXRlcigpO1xyXG4gIGlmIChsaXN0QXJndW1lbnRzKSB7XHJcbiAgICBjb25zdCBhcmdEZWZzTGlzdCA9IE9iamVjdC5lbnRyaWVzKHBhcnNlZENvbW1hbmQuYXJnRGVmaW5pdGlvbnMpO1xyXG4gICAgLy8gc29ydCBhbHBoYWJldGljYWxseVxyXG4gICAgYXJnRGVmc0xpc3Quc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICByZXR1cm4gYVswXS50b0xvd2VyQ2FzZSgpLmxvY2FsZUNvbXBhcmUoYlswXS50b0xvd2VyQ2FzZSgpKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChhcmdEZWZzTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IHJlcXVpcmVkQXJncyA9IGFyZ0RlZnNMaXN0LmZpbHRlcigoZSkgPT4gZVsxXS5yZXF1aXJlZCk7XHJcbiAgICAgIGNvbnN0IG9wdGlvbmFsQXJncyA9IGFyZ0RlZnNMaXN0LmZpbHRlcigoZSkgPT4gIWVbMV0ucmVxdWlyZWQpO1xyXG5cclxuICAgICAgY29uc3QgZm9ybWF0TGVmdEhlbHAgPSAoYXJnRGVmOiBQYXJzZWRBcmdEZWZpbml0aW9uKSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyByZXF1aXJlZCwgbGVmdEhlbHAgfSA9IGFyZ0RlZjtcclxuICAgICAgICBjb25zdCBsZWZ0QnJhY2tldCA9IHJlcXVpcmVkID8gXCJcIiA6IFwiW1wiO1xyXG4gICAgICAgIGNvbnN0IHJpZ2h0QnJhY2tldCA9IHJlcXVpcmVkID8gXCJcIiA6IFwiXVwiO1xyXG5cclxuICAgICAgICByZXR1cm4gY2hhbGsuYm9sZC5ncmF5KGAgJHtsZWZ0QnJhY2tldH0ke2xlZnRIZWxwfSR7cmlnaHRCcmFja2V0fWApO1xyXG4gICAgICB9O1xyXG5cclxuICAgICAgLy8gZmluZCBsZWZ0IGhlbHAgc2lkZSBtYXggbGVuZ3RoXHJcbiAgICAgIGNvbnN0IGxlbmd0aHMgPSBhcmdEZWZzTGlzdC5tYXAoKGVudHJ5KSA9PiBzdHJpcENvbG9yKGZvcm1hdExlZnRIZWxwKGVudHJ5WzFdKSkubGVuZ3RoKTtcclxuICAgICAgY29uc3QgbWF4TGVmdExlbmd0aCA9IE1hdGgubWF4KC4uLmxlbmd0aHMpICsgNDtcclxuXHJcbiAgICAgIGNvbnN0IHdyaXRlQXJnSGVscCA9IChhcmdEZWY6IFtzdHJpbmcsIFBhcnNlZEFyZ0RlZmluaXRpb25dKSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyByaWdodEhlbHAgfSA9IGFyZ0RlZlsxXTtcclxuXHJcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkTGVmdEhlbHAgPSBmb3JtYXRMZWZ0SGVscChhcmdEZWZbMV0pO1xyXG4gICAgICAgIGxldCBoZWxwID0gZm9ybWF0dGVkTGVmdEhlbHA7XHJcblxyXG4gICAgICAgIGlmIChyaWdodEhlbHApIHtcclxuICAgICAgICAgIGZvciAobGV0IGkgPSBzdHJpcENvbG9yKGZvcm1hdHRlZExlZnRIZWxwKS5sZW5ndGg7IGkgPCBtYXhMZWZ0TGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaGVscCArPSBcIiBcIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGhlbHAgKz0gcmlnaHRIZWxwO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhdy53cml0ZUxpbmUoYCAgJHtoZWxwfWApO1xyXG5cclxuICAgICAgICB0aXRsZSArPSBmb3JtYXR0ZWRMZWZ0SGVscDtcclxuICAgICAgfTtcclxuXHJcbiAgICAgIGlmIChyZXF1aXJlZEFyZ3MubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHJlcXVpcmVkQXJncy5mb3JFYWNoKChlKSA9PiB7XHJcbiAgICAgICAgICB3cml0ZUFyZ0hlbHAoZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChvcHRpb25hbEFyZ3MubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIG9wdGlvbmFsQXJncy5mb3JFYWNoKChlKSA9PiB7XHJcbiAgICAgICAgICB3cml0ZUFyZ0hlbHAoZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHcud3JpdGVMaW5lKHRpdGxlKTtcclxuICBpZiAoY3VycmVudENvbW1hbmQuZGVzYyAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICB3LndyaXRlTGluZShjaGFsay5ib2xkLmdyYXkoYCAtICR7Y3VycmVudENvbW1hbmQuZGVzY31gKSk7XHJcbiAgfVxyXG4gIHcud3JpdGUoYXcub3V0cHV0KTtcclxuICB3LndyaXRlTGluZShjaGFsay5yZXNldChcIlwiKSk7XHJcblxyXG4gIHJldHVybiB3Lm91dHB1dDtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBsaXN0QWxsQ29tbWFuZHMgPSAoY29tbWFuZHM6IENvbW1hbmRzLCBsaXN0QXJndW1lbnRzID0gdHJ1ZSwgbGlzdEludGVybmFsID0gZmFsc2UpID0+IHtcclxuICBpZiAoIWlzT2JqZWN0KGNvbW1hbmRzKSkge1xyXG4gICAgdGhyb3cgbmV3IE1ha2Z5RXJyb3IoXHJcbiAgICAgIGVycm9yTWVzc2FnZUZvck9iamVjdChbXCJjb21tYW5kc1wiXSwgYG11c3QgYmUgYW4gb2JqZWN0IChkaWQgeW91IGV4cG9ydCBpdD8pYCksXHJcbiAgICAgIHVuZGVmaW5lZFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGxldCBvdXRwdXQgPSBcIlwiO1xyXG5cclxuICBmb3IgKGNvbnN0IGNvbW1hbmROYW1lIG9mIE9iamVjdC5rZXlzKGNvbW1hbmRzKSkge1xyXG4gICAgY29uc3QgY3VycmVudENvbW1hbmQgPSBjb21tYW5kc1tjb21tYW5kTmFtZV07XHJcbiAgICBpZiAoIWN1cnJlbnRDb21tYW5kLmludGVybmFsIHx8IGxpc3RJbnRlcm5hbCkge1xyXG4gICAgICBvdXRwdXQgKz0gbGlzdENvbW1hbmQoY29tbWFuZHMsIGNvbW1hbmROYW1lLCBsaXN0QXJndW1lbnRzKTtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIG91dHB1dDtcclxufTtcclxuXHJcbi8vIHNob3J0IHN5bnRheFxyXG5leHBvcnQgZnVuY3Rpb24gcnVuKC4uLmlubGluZUNvbW1hbmRzOiBFeGVjQ29tbWFuZFtdKTogQ29tbWFuZDx7fT4gJiBDb21tYW5kRnJvbUZ1bmN0aW9uIHtcclxuICBjb25zdCBjbWQ6IENvbW1hbmQ8e30+ID0ge1xyXG4gICAgcnVuOiBhc3luYyAoZXhlYzogRXhlY0Z1bmN0aW9uKSA9PiB7XHJcbiAgICAgIGF3YWl0IGV4ZWMoLi4uaW5saW5lQ29tbWFuZHMpO1xyXG4gICAgfVxyXG4gIH07XHJcbiAgcmV0dXJuIGNtZCBhcyBDb21tYW5kPHt9PiAmIENvbW1hbmRGcm9tRnVuY3Rpb247XHJcbn1cclxuIl19
exports.setOptions = setOptions;
function setDependencies(deps) {
config_1.config.dependencies = deps;
}
exports.setDependencies = setDependencies;

@@ -31,2 +31,1 @@ "use strict";

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvcGFyc2VyL2NvbW1hbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxvQ0FBdUM7QUFDdkMsb0NBQTZDO0FBRTdDLCtDQUE0RDtBQUM1RCxrREFBNEQ7QUFDNUQsMkNBQXVFO0FBUTFELFFBQUEsWUFBWSxHQUFHLFVBQzFCLE9BQWdDLEVBQ2hDLE9BQWUsRUFDZixjQUF1QjtJQUV2QixJQUFNLEtBQUssR0FBRyxVQUFDLFFBQTRCLEVBQUUsT0FBZTtRQUMxRCxPQUFPLElBQUksbUJBQVUsQ0FDbkIsa0NBQXFCLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUMvRCxTQUFTLENBQ1YsQ0FBQztJQUNKLENBQUMsQ0FBQztJQUVGLElBQUksQ0FBQyxjQUFjLEVBQUU7UUFDbkIsSUFBTSxnQkFBZ0IsR0FBRyx5QkFBZ0IsQ0FBQyxPQUFPLEVBQUUsd0JBQWEsQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUU7WUFDM0IsTUFBTSxLQUFLLENBQUMsU0FBUyxFQUFFLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7U0FDckQ7S0FDRjtJQUVPLElBQUEsbUJBQUksQ0FBYTtJQUV6QixRQUFRO0lBQ1IsSUFBTSxPQUFPLEdBQWtCO1FBQzdCLGNBQWMsRUFBRSxFQUFFO0tBQ25CLENBQUM7SUFFRixJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7UUFDdEIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQyxPQUFPO1lBQ2hDLElBQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNwQyxPQUFPLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLCtCQUFrQixDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzlGLENBQUMsQ0FBQyxDQUFDO0tBQ0o7SUFFRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNYWtmeUVycm9yIH0gZnJvbSBcIi4uL2Vycm9yc1wiO1xyXG5pbXBvcnQgeyB2YWxpZGF0ZUluc3RhbmNlIH0gZnJvbSBcIi4uL3NjaGVtYVwiO1xyXG5pbXBvcnQgeyBBcmdEZWZpbml0aW9ucyB9IGZyb20gXCIuLi9zY2hlbWEvYXJnc1wiO1xyXG5pbXBvcnQgeyBDb21tYW5kLCBjb21tYW5kU2NoZW1hIH0gZnJvbSBcIi4uL3NjaGVtYS9jb21tYW5kc1wiO1xyXG5pbXBvcnQgeyBlcnJvck1lc3NhZ2VGb3JPYmplY3QgfSBmcm9tIFwiLi4vdXRpbHMvZm9ybWF0dGluZ1wiO1xyXG5pbXBvcnQgeyBwYXJzZUFyZ0RlZmluaXRpb24sIFBhcnNlZEFyZ0RlZmluaXRpb24gfSBmcm9tIFwiLi9jb21tYW5kQXJnXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlZENvbW1hbmQge1xyXG4gIGFyZ0RlZmluaXRpb25zOiB7XHJcbiAgICBbYXJnTmFtZTogc3RyaW5nXTogUGFyc2VkQXJnRGVmaW5pdGlvbjtcclxuICB9O1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgcGFyc2VDb21tYW5kID0gKFxyXG4gIGNvbW1hbmQ6IENvbW1hbmQ8QXJnRGVmaW5pdGlvbnM+LFxyXG4gIGNtZE5hbWU6IHN0cmluZyxcclxuICBza2lwVmFsaWRhdGlvbjogYm9vbGVhblxyXG4pOiBQYXJzZWRDb21tYW5kID0+IHtcclxuICBjb25zdCBlcnJvciA9IChwcm9wZXJ0eTogc3RyaW5nIHwgdW5kZWZpbmVkLCBtZXNzYWdlOiBzdHJpbmcpOiBNYWtmeUVycm9yID0+IHtcclxuICAgIHJldHVybiBuZXcgTWFrZnlFcnJvcihcclxuICAgICAgZXJyb3JNZXNzYWdlRm9yT2JqZWN0KFtcImNvbW1hbmRzXCIsIGNtZE5hbWUsIHByb3BlcnR5XSwgbWVzc2FnZSksXHJcbiAgICAgIHVuZGVmaW5lZFxyXG4gICAgKTtcclxuICB9O1xyXG5cclxuICBpZiAoIXNraXBWYWxpZGF0aW9uKSB7XHJcbiAgICBjb25zdCB2YWxpZGF0aW9uUmVzdWx0ID0gdmFsaWRhdGVJbnN0YW5jZShjb21tYW5kLCBjb21tYW5kU2NoZW1hKTtcclxuICAgIGlmICghdmFsaWRhdGlvblJlc3VsdC52YWxpZCkge1xyXG4gICAgICB0aHJvdyBlcnJvcih1bmRlZmluZWQsIHZhbGlkYXRpb25SZXN1bHQudG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdCB7IGFyZ3MgfSA9IGNvbW1hbmQ7XHJcblxyXG4gIC8vIHBhcnNlXHJcbiAgY29uc3QgY21kSW5mbzogUGFyc2VkQ29tbWFuZCA9IHtcclxuICAgIGFyZ0RlZmluaXRpb25zOiB7fVxyXG4gIH07XHJcblxyXG4gIGlmIChhcmdzICE9PSB1bmRlZmluZWQpIHtcclxuICAgIE9iamVjdC5rZXlzKGFyZ3MpLmZvckVhY2goKGFyZ05hbWUpID0+IHtcclxuICAgICAgY29uc3QgYXJnRGVmaW5pdGlvbiA9IGFyZ3NbYXJnTmFtZV07XHJcbiAgICAgIGNtZEluZm8uYXJnRGVmaW5pdGlvbnNbYXJnTmFtZV0gPSBwYXJzZUFyZ0RlZmluaXRpb24oY21kTmFtZSwgYXJnTmFtZSwgYXJnRGVmaW5pdGlvbiwgdHJ1ZSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJldHVybiBjbWRJbmZvO1xyXG59O1xyXG4iXX0=

@@ -159,2 +159,1 @@ "use strict";

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZEFyZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvcGFyc2VyL2NvbW1hbmRBcmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBLCtCQUEwQjtBQUMxQixvQ0FBdUM7QUFDdkMsb0NBQTZDO0FBQzdDLHVDQU13QjtBQUN4QixrREFBb0Y7QUFRcEYsSUFBTSxhQUFhLEdBQUcsVUFBQyxJQUFZO0lBQ2pDLElBQUksSUFBSSxLQUFLLEdBQUcsSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFO1FBQ25DLG9CQUFpQjtLQUNsQjtJQUNELElBQUksSUFBSSxLQUFLLEdBQUcsSUFBSSxJQUFJLEtBQUssUUFBUSxFQUFFO1FBQ3JDLHNCQUFtQjtLQUNwQjtJQUNELElBQUksSUFBSSxLQUFLLEdBQUcsSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFO1FBQ25DLG9CQUFpQjtLQUNsQjtJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMsQ0FBQztBQVdXLFFBQUEsa0JBQWtCLEdBQUcsVUFDaEMsT0FBZSxFQUNmLE9BQWUsRUFDZixhQUE0QixFQUM1QixjQUF1QjtJQUV2QixJQUFNLEtBQUssR0FBRyxVQUFDLFFBQTRCLEVBQUUsT0FBZTtRQUMxRCxPQUFPLElBQUksbUJBQVUsQ0FDbkIsa0NBQXFCLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQ2hGLFNBQVMsQ0FDVixDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRUYsSUFBSSxDQUFDLGNBQWMsRUFBRTtRQUNuQixJQUFNLGdCQUFnQixHQUFHLHlCQUFnQixDQUFDLGFBQWEsRUFBRSxnQkFBUyxDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRTtZQUMzQixNQUFNLEtBQUssQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLENBQUMs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T0FBTyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDMUMsQ0FBQyxDQUFDO0lBRUYsSUFBTSxPQUFPLEdBQUcsVUFBQyxNQUEwQixFQUFFLFlBQWlCO1FBQzVELE9BQU87WUFDTCxRQUFRLEVBQUUsV0FBVyxDQUFDLE1BQU0sRUFBRSxZQUFZLEtBQUssU0FBUyxDQUFDO1lBQ3pELFNBQVMsRUFBRSxZQUFZLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQztTQUM5QyxDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRUYsUUFBUSxjQUFjLEVBQUU7UUFDdEI7WUFDRSxPQUFPLE9BQU8sQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDckM7WUFDRSxPQUFPLE9BQU8sQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDdEM7WUFDVSxJQUFBLDZCQUFNLENBQXdDO1lBQ3RELE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDOUM7WUFDRSxNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFrQyxjQUFnQixDQUFDLENBQUM7S0FDdkU7QUFDSCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XHJcbmltcG9ydCB7IE1ha2Z5RXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzXCI7XHJcbmltcG9ydCB7IHZhbGlkYXRlSW5zdGFuY2UgfSBmcm9tIFwiLi4vc2NoZW1hXCI7XHJcbmltcG9ydCB7XHJcbiAgQXJnRGVmaW5pdGlvbixcclxuICBhcmdTY2hlbWEsXHJcbiAgRW51bUFyZ0RlZmluaXRpb24sXHJcbiAgRmxhZ0FyZ0RlZmluaXRpb24sXHJcbiAgU3RyaW5nQXJnRGVmaW5pdGlvblxyXG59IGZyb20gXCIuLi9zY2hlbWEvYXJnc1wiO1xyXG5pbXBvcnQgeyBhcmdOYW1lVG9EYXNoZWRBcmdOYW1lLCBlcnJvck1lc3NhZ2VGb3JPYmplY3QgfSBmcm9tIFwiLi4vdXRpbHMvZm9ybWF0dGluZ1wiO1xyXG5cclxuY29uc3QgZW51bSBUeXBlIHtcclxuICBGbGFnLFxyXG4gIFN0cmluZyxcclxuICBFbnVtXHJcbn1cclxuXHJcbmNvbnN0IG5vcm1hbGl6ZVR5cGUgPSAodHlwZTogc3RyaW5nKSA9PiB7XHJcbiAgaWYgKHR5cGUgPT09IFwiZlwiIHx8IHR5cGUgPT09IFwiZmxhZ1wiKSB7XHJcbiAgICByZXR1cm4gVHlwZS5GbGFnO1xyXG4gIH1cclxuICBpZiAodHlwZSA9PT0gXCJzXCIgfHwgdHlwZSA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgcmV0dXJuIFR5cGUuU3RyaW5nO1xyXG4gIH1cclxuICBpZiAodHlwZSA9PT0gXCJlXCIgfHwgdHlwZSA9PT0gXCJlbnVtXCIpIHtcclxuICAgIHJldHVybiBUeXBlLkVudW07XHJcbiAgfVxyXG4gIHJldHVybiB1bmRlZmluZWQ7XHJcbn07XHJcblxyXG5leHBvcnQgdHlwZSBQYXJzZUFyZ0Z1bmN0aW9uID0gKHZhbHVlOiBhbnkpID0+IGFueTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkQXJnRGVmaW5pdGlvbiB7XHJcbiAgbGVmdEhlbHA6IHN0cmluZztcclxuICByaWdodEhlbHA/OiBzdHJpbmc7XHJcbiAgcmVxdWlyZWQ6IGJvb2xlYW47XHJcbiAgcGFyc2U6IFBhcnNlQXJnRnVuY3Rpb247XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBwYXJzZUFyZ0RlZmluaXRpb24gPSAoXHJcbiAgY21kTmFtZTogc3RyaW5nLFxyXG4gIGFyZ05hbWU6IHN0cmluZyxcclxuICBhcmdEZWZpbml0aW9uOiBBcmdEZWZpbml0aW9uLFxyXG4gIHNraXBWYWxpZGF0aW9uOiBib29sZWFuXHJcbik6IFBhcnNlZEFyZ0RlZmluaXRpb24gPT4ge1xyXG4gIGNvbnN0IGVycm9yID0gKHByb3BlcnR5OiBzdHJpbmcgfCB1bmRlZmluZWQsIG1lc3NhZ2U6IHN0cmluZyk6IE1ha2Z5RXJyb3IgPT4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYWtmeUVycm9yKFxyXG4gICAgICBlcnJvck1lc3NhZ2VGb3JPYmplY3QoW1wiY29tbWFuZHNcIiwgY21kTmFtZSwgXCJhcmdzXCIsIGFyZ05hbWUsIHByb3BlcnR5XSwgbWVzc2FnZSksXHJcbiAgICAgIHVuZGVmaW5lZFxyXG4gICAgKTtcclxuICB9O1xyXG5cclxuICBpZiAoIXNraXBWYWxpZGF0aW9uKSB7XHJcbiAgICBjb25zdCB2YWxpZGF0aW9uUmVzdWx0ID0gdmFsaWRhdGVJbnN0YW5jZShhcmdEZWZpbml0aW9uLCBhcmdTY2hlbWEpO1xyXG4gICAgaWYgKCF2YWxpZGF0aW9uUmVzdWx0LnZhbGlkKSB7XHJcbiAgICAgIHRocm93IGVycm9yKHVuZGVmaW5lZCwgdmFsaWRhdGlvblJlc3VsdC50b1N0cmluZygpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0IG5vcm1hbGl6ZWRUeXBlID0gbm9ybWFsaXplVHlwZShhcmdEZWZpbml0aW9uLnR5cGUpO1xyXG5cclxuICBjb25zdCB2YWxpZGF0ZUVycm9yID0gKGVycjogc3RyaW5nKTogTWFrZnlFcnJvciA9PiB7XHJcbiAgICByZXR1cm4gbmV3IE1ha2Z5RXJyb3IoYGFyZ3VtZW50ICcke2FyZ05hbWV9JyAtICR7ZXJyfWAsIHVuZGVmaW5lZCk7XHJcbiAgfTtcclxuXHJcbiAgbGV0IHBhcnNlOiBQYXJzZUFyZ0Z1bmN0aW9uO1xyXG4gIGxldCByZXF1aXJlZDtcclxuICBjb25zdCBhcmdSZXF1aXJlZE1lc3NhZ2UgPSBcImFyZ3VtZW50IGlzIHJlcXVpcmVkXCI7XHJcblxyXG4gIGlmIChub3JtYWxpemVkVHlwZSA9PT0gVHlwZS5GbGFnKSB7XHJcbiAgICBsZXQgeyBieURlZmF1bHQgfSA9IGFyZ0RlZmluaXRpb24gYXMgRmxhZ0FyZ0RlZmluaXRpb247XHJcbiAgICBieURlZmF1bHQgPSBmYWxzZTtcclxuICAgIHJlcXVpcmVkID0gZmFsc2U7XHJcblxyXG4gICAgcGFyc2UgPSAodmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHZhbHVlID0gYnlEZWZhdWx0O1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdGhyb3cgdmFsaWRhdGVFcnJvcihhcmdSZXF1aXJlZE1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiYm9vbGVhblwiKSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh2YWx1ZSA9PT0gXCJ0cnVlXCIpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodmFsdWUgPT09IFwiZmFsc2VcIikge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICB0aHJvdyB2YWxpZGF0ZUVycm9yKGBhIGZsYWcgYXJndW1lbnQgY2Fubm90IGhhdmUgYSB2YWx1ZWApO1xyXG4gICAgfTtcclxuICB9IGVsc2UgaWYgKG5vcm1hbGl6ZWRUeXBlID09PSBUeXBlLlN0cmluZykge1xyXG4gICAgY29uc3QgeyBieURlZmF1bHQgfSA9IGFyZ0RlZmluaXRpb24gYXMgU3RyaW5nQXJnRGVmaW5pdGlvbjtcclxuICAgIHJlcXVpcmVkID0gYnlEZWZhdWx0ID09PSB1bmRlZmluZWQ7XHJcblxyXG4gICAgcGFyc2UgPSAodmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHZhbHVlID0gYnlEZWZhdWx0O1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdGhyb3cgdmFsaWRhdGVFcnJvcihhcmdSZXF1aXJlZE1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIpIHtcclxuICAgICAgICB2YWx1ZSA9IFN0cmluZyh2YWx1ZSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgIHRocm93IHZhbGlkYXRlRXJyb3IoXCJhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH07XHJcbiAgfSBlbHNlIGlmIChub3JtYWxpemVkVHlwZSA9PT0gVHlwZS5FbnVtKSB7XHJcbiAgICBjb25zdCB7IGJ5RGVmYXVsdCwgdmFsdWVzIH0gPSBhcmdEZWZpbml0aW9uIGFzIEVudW1BcmdEZWZpbml0aW9uO1xyXG4gICAgcmVxdWlyZWQgPSBieURlZmF1bHQgPT09IHVuZGVmaW5lZDtcclxuXHJcbiAgICBwYXJzZSA9ICh2YWx1ZTogYW55KSA9PiB7XHJcbiAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdmFsdWUgPSBieURlZmF1bHQ7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aHJvdyB2YWxpZGF0ZUVycm9yKGFyZ1JlcXVpcmVkTWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIikge1xyXG4gICAgICAgIHZhbHVlID0gU3RyaW5nKHZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcInN0cmluZ1wiIHx8ICF2YWx1ZXMuaW5jbHVkZXModmFsdWUpKSB7XHJcbiAgICAgICAgdGhyb3cgdmFsaWRhdGVFcnJvcihgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2Y6ICR7dmFsdWVzLmpvaW4oXCIsIFwiKX1gKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9O1xyXG4gIH0gZWxzZSB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnRlcm5hbCBlcnJvciAtIHZhbGlkYXRpb24gZmFpbGVkP1wiKTtcclxuICB9XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICAuLi5nZXRIZWxwRm9yQXJnKGFyZ05hbWUsIGFyZ0RlZmluaXRpb24pLFxyXG4gICAgcmVxdWlyZWQsXHJcbiAgICBwYXJzZVxyXG4gIH07XHJcbn07XHJcblxyXG5jb25zdCBnZXRIZWxwRm9yQXJnID0gKGFyZ05hbWU6IHN0cmluZywgYXJnRGVmaW5pdGlvbjogQXJnRGVmaW5pdGlvbikgPT4ge1xyXG4gIGNvbnN0IHsgYnlEZWZhdWx0LCBkZXNjIH0gPSBhcmdEZWZpbml0aW9uO1xyXG4gIGNvbnN0IG5vcm1hbGl6ZWRUeXBlID0gbm9ybWFsaXplVHlwZShhcmdEZWZpbml0aW9uLnR5cGUpO1xyXG5cclxuICBjb25zdCBnZXRMZWZ0SGVscCA9IChlcXVhbHM6IHN0cmluZyB8IHVuZGVmaW5lZCwgcmVxdWlyZWQ6IGJvb2xlYW4pID0+IHtcclxuICAgIGxldCBzdHIgPSBhcmdOYW1lVG9EYXNoZWRBcmdOYW1lKGFyZ05hbWUpO1xyXG4gICAgaWYgKHJlcXVpcmVkKSB7XHJcbiAgICAgIHN0ciA9IGNoYWxrLmJvbGQucmVkKHN0cik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzdHIgPSBjaGFsay5ib2xkLm1hZ2VudGEoc3RyKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZXF1YWxzKSB7XHJcbiAgICAgIHN0ciArPSBjaGFsay5ib2xkLmdyYXkoYD0ke2VxdWFsc31gKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gc3RyO1xyXG4gIH07XHJcblxyXG4gIGNvbnN0IGdldFJpZ2h0SGVscCA9IChlcXVhbHM6IHN0cmluZyB8IHVuZGVmaW5lZCwgZGVmYXVsdFZhbHVlOiBhbnkpID0+IHtcclxuICAgIGxldCBzdHIgPSBcIlwiO1xyXG4gICAgaWYgKGRlc2MpIHtcclxuICAgICAgc3RyID0gY2hhbGsuYm9sZC5ncmF5KGRlc2MpO1xyXG4gICAgfVxyXG4gICAgaWYgKGRlZmF1bHRWYWx1ZSkge1xyXG4gICAgICBzdHIgKz0gY2hhbGsuYm9sZC5ncmF5KFwiIChkZWZhdWx0OiBcIiArIGRlZmF1bHRWYWx1ZSArIFwiKVwiKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gc3RyLmxlbmd0aCA+IDAgPyBzdHIgOiB1bmRlZmluZWQ7XHJcbiAgfTtcclxuXHJcbiAgY29uc3QgZ2V0SGVscCA9IChlcXVhbHM6IHN0cmluZyB8IHVuZGVmaW5lZCwgZGVmYXVsdFZhbHVlOiBhbnkpID0+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGxlZnRIZWxwOiBnZXRMZWZ0SGVscChlcXVhbHMsIGRlZmF1bHRWYWx1ZSA9PT0gdW5kZWZpbmVkKSxcclxuICAgICAgcmlnaHRIZWxwOiBnZXRSaWdodEhlbHAoZXF1YWxzLCBkZWZhdWx0VmFsdWUpXHJcbiAgICB9O1xyXG4gIH07XHJcblxyXG4gIHN3aXRjaCAobm9ybWFsaXplZFR5cGUpIHtcclxuICAgIGNhc2UgVHlwZS5GbGFnOlxyXG4gICAgICByZXR1cm4gZ2V0SGVscCh1bmRlZmluZWQsIFwiZmFsc2VcIik7XHJcbiAgICBjYXNlIFR5cGUuU3RyaW5nOlxyXG4gICAgICByZXR1cm4gZ2V0SGVscChcInN0cmluZ1wiLCBieURlZmF1bHQpO1xyXG4gICAgY2FzZSBUeXBlLkVudW06XHJcbiAgICAgIGNvbnN0IHsgdmFsdWVzIH0gPSBhcmdEZWZpbml0aW9uIGFzIEVudW1BcmdEZWZpbml0aW9uO1xyXG4gICAgICByZXR1cm4gZ2V0SGVscCh2YWx1ZXMuam9pbihcInxcIiksIGJ5RGVmYXVsdCk7XHJcbiAgICBkZWZhdWx0OlxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGludGVybmFsIGVycm9yIC0gdW5rbm93biB0eXBlOiAke25vcm1hbGl6ZWRUeXBlfWApO1xyXG4gIH1cclxufTtcclxuIl19

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

parseInfo[cmdName] = command_1.parseCommand(command, cmdName, true);
if (!command.internal) {
if (!commands_1.isInternalCommand(cmdName)) {
publicCommands++;

@@ -37,2 +37,1 @@ }

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3BhcnNlci9jb21tYW5kcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLG9DQUF1QztBQUN2QyxvQ0FBNkM7QUFDN0MsK0NBQThEO0FBQzlELGtEQUE0RDtBQUM1RCxzREFBaUQ7QUFDakQscUNBQXdEO0FBTTNDLFFBQUEsYUFBYSxHQUFHLFVBQUMsUUFBa0IsRUFBRSxjQUF1QjtJQUN2RSxJQUFNLEtBQUssR0FBRyxVQUFDLFFBQTRCLEVBQUUsT0FBZTtRQUMxRCxPQUFPLElBQUksbUJBQVUsQ0FBQyxrQ0FBcUIsQ0FBQyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMzRixDQUFDLENBQUM7SUFFRixJQUFJLENBQUMsdUJBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRTtRQUN2QixNQUFNLEtBQUssQ0FBQyxTQUFTLEVBQUUsd0NBQXdDLENBQUMsQ0FBQztLQUNsRTtJQUVELElBQUksQ0FBQyxjQUFjLEVBQUU7UUFDbkIsSUFBTSxnQkFBZ0IsR0FBRyx5QkFBZ0IsQ0FBQyxRQUFRLEVBQUUseUJBQWMsQ0FBQyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUU7WUFDM0IsTUFBTSxLQUFLLENBQUMsU0FBUyxFQUFFLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7U0FDckQ7S0FDRjtJQUVELElBQUksY0FBYyxHQUFHLENBQUMsQ0FBQztJQUV2QixJQUFNLFNBQVMsR0FBbUIsRUFBRSxDQUFDO0lBRXJDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQUMsT0FBTztRQUNwQyxJQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFbEMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLHNCQUFZLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUUxRCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRTtZQUNyQixjQUFjLEVBQUUsQ0FBQztTQUNsQjtJQUNILENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxjQUFjLElBQUksQ0FBQyxFQUFFO1FBQ3ZCLE1BQU0sS0FBSyxDQUFDLFNBQVMsRUFBRSw2REFBNkQsQ0FBQyxDQUFDO0tBQ3ZGO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWFrZnlFcnJvciB9IGZyb20gXCIuLi9lcnJvcnNcIjtcclxuaW1wb3J0IHsgdmFsaWRhdGVJbnN0YW5jZSB9IGZyb20gXCIuLi9zY2hlbWFcIjtcclxuaW1wb3J0IHsgQ29tbWFuZHMsIGNvbW1hbmRzU2NoZW1hIH0gZnJvbSBcIi4uL3NjaGVtYS9jb21tYW5kc1wiO1xyXG5pbXBvcnQgeyBlcnJvck1lc3NhZ2VGb3JPYmplY3QgfSBmcm9tIFwiLi4vdXRpbHMvZm9ybWF0dGluZ1wiO1xyXG5pbXBvcnQgeyBpc09iamVjdCB9IGZyb20gXCIuLi91dGlscy90eXBlQ2hlY2tpbmdcIjtcclxuaW1wb3J0IHsgcGFyc2VDb21tYW5kLCBQYXJzZWRDb21tYW5kIH0gZnJvbSBcIi4vY29tbWFuZFwiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQYXJzZWRDb21tYW5kcyB7XHJcbiAgW2NtZE5hbWU6IHN0cmluZ106IFBhcnNlZENvbW1hbmQ7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBwYXJzZUNvbW1hbmRzID0gKGNvbW1hbmRzOiBDb21tYW5kcywgc2tpcFZhbGlkYXRpb246IGJvb2xlYW4pOiBQYXJzZWRDb21tYW5kcyA9PiB7XHJcbiAgY29uc3QgZXJyb3IgPSAocHJvcGVydHk6IHN0cmluZyB8IHVuZGVmaW5lZCwgbWVzc2FnZTogc3RyaW5nKTogTWFrZnlFcnJvciA9PiB7XHJcbiAgICByZXR1cm4gbmV3IE1ha2Z5RXJyb3IoZXJyb3JNZXNzYWdlRm9yT2JqZWN0KFtcImNvbW1hbmRzXCIsIHByb3BlcnR5XSwgbWVzc2FnZSksIHVuZGVmaW5lZCk7XHJcbiAgfTtcclxuXHJcbiAgaWYgKCFpc09iamVjdChjb21tYW5kcykpIHtcclxuICAgIHRocm93IGVycm9yKHVuZGVmaW5lZCwgYG11c3QgYmUgYW4gb2JqZWN0IChkaWQgeW91IGV4cG9ydCBpdD8pYCk7XHJcbiAgfVxyXG5cclxuICBpZiAoIXNraXBWYWxpZGF0aW9uKSB7XHJcbiAgICBjb25zdCB2YWxpZGF0aW9uUmVzdWx0ID0gdmFsaWRhdGVJbnN0YW5jZShjb21tYW5kcywgY29tbWFuZHNTY2hlbWEpO1xyXG4gICAgaWYgKCF2YWxpZGF0aW9uUmVzdWx0LnZhbGlkKSB7XHJcbiAgICAgIHRocm93IGVycm9yKHVuZGVmaW5lZCwgdmFsaWRhdGlvblJlc3VsdC50b1N0cmluZygpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxldCBwdWJsaWNDb21tYW5kcyA9IDA7XHJcblxyXG4gIGNvbnN0IHBhcnNlSW5mbzogUGFyc2VkQ29tbWFuZHMgPSB7fTtcclxuXHJcbiAgT2JqZWN0LmtleXMoY29tbWFuZHMpLmZvckVhY2goKGNtZE5hbWUpID0+IHtcclxuICAgIGNvbnN0IGNvbW1hbmQgPSBjb21tYW5kc1tjbWROYW1lXTtcclxuXHJcbiAgICBwYXJzZUluZm9bY21kTmFtZV0gPSBwYXJzZUNvbW1hbmQoY29tbWFuZCwgY21kTmFtZSwgdHJ1ZSk7XHJcblxyXG4gICAgaWYgKCFjb21tYW5kLmludGVybmFsKSB7XHJcbiAgICAgIHB1YmxpY0NvbW1hbmRzKys7XHJcbiAgICB9XHJcbiAgfSk7XHJcblxyXG4gIGlmIChwdWJsaWNDb21tYW5kcyA8PSAwKSB7XHJcbiAgICB0aHJvdyBlcnJvcih1bmRlZmluZWQsIGBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIGNvbW1hbmQgKG5vdCBjb3VudGluZyBpbnRlcm5hbCBvbmVzKWApO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHBhcnNlSW5mbztcclxufTtcclxuIl19

@@ -32,2 +32,1 @@ "use strict";

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvcGFyc2VyL29wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBLG9DQUF1QztBQUN2QyxvQ0FBNkM7QUFDN0MsNkNBQStFO0FBQy9FLGtEQUE0RDtBQUU1RCxJQUFNLGNBQWMsR0FBZ0I7SUFDbEMsT0FBTyxFQUFFLEtBQUs7SUFDZCxRQUFRLEVBQUUsS0FBSztDQUNoQixDQUFDO0FBRVcsUUFBQSxZQUFZLEdBQUcsVUFDMUIsT0FBbUMsRUFDbkMsY0FBdUI7SUFFdkIsSUFBTSxXQUFXLGdCQUFRLGNBQWMsRUFBSyxPQUFPLENBQUUsQ0FBQztJQUV0RCxJQUFJLENBQUMsY0FBYyxFQUFFO1FBQ25CLElBQU0sZ0JBQWdCLEdBQUcseUJBQWdCLENBQUMsV0FBVyxFQUFFLHVCQUFhLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFO1lBQzNCLE1BQU0sSUFBSSxtQkFBVSxDQUNsQixrQ0FBcUIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQy9ELFNBQVMsQ0FDVixDQUFDO1NBQ0g7S0FDRjtJQUVELE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1ha2Z5RXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzXCI7XHJcbmltcG9ydCB7IHZhbGlkYXRlSW5zdGFuY2UgfSBmcm9tIFwiLi4vc2NoZW1hXCI7XHJcbmltcG9ydCB7IEZ1bGxPcHRpb25zLCBvcHRpb25zU2NoZW1hLCBQYXJ0aWFsT3B0aW9ucyB9IGZyb20gXCIuLi9zY2hlbWEvb3B0aW9uc1wiO1xyXG5pbXBvcnQgeyBlcnJvck1lc3NhZ2VGb3JPYmplY3QgfSBmcm9tIFwiLi4vdXRpbHMvZm9ybWF0dGluZ1wiO1xyXG5cclxuY29uc3QgZGVmYXVsdE9wdGlvbnM6IEZ1bGxPcHRpb25zID0ge1xyXG4gIHByb2ZpbGU6IGZhbHNlLFxyXG4gIHNob3dUaW1lOiBmYWxzZVxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHBhcnNlT3B0aW9ucyA9IChcclxuICBvcHRpb25zOiBQYXJ0aWFsT3B0aW9ucyB8IHVuZGVmaW5lZCxcclxuICBza2lwVmFsaWRhdGlvbjogYm9vbGVhblxyXG4pOiBGdWxsT3B0aW9ucyA9PiB7XHJcbiAgY29uc3QgZnVsbE9wdGlvbnMgPSB7IC4uLmRlZmF1bHRPcHRpb25zLCAuLi5vcHRpb25zIH07XHJcblxyXG4gIGlmICghc2tpcFZhbGlkYXRpb24pIHtcclxuICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSB2YWxpZGF0ZUluc3RhbmNlKGZ1bGxPcHRpb25zLCBvcHRpb25zU2NoZW1hKTtcclxuICAgIGlmICghdmFsaWRhdGlvblJlc3VsdC52YWxpZCkge1xyXG4gICAgICB0aHJvdyBuZXcgTWFrZnlFcnJvcihcclxuICAgICAgICBlcnJvck1lc3NhZ2VGb3JPYmplY3QoW1wib3B0aW9uc1wiXSwgdmFsaWRhdGlvblJlc3VsdC50b1N0cmluZygpKSxcclxuICAgICAgICB1bmRlZmluZWRcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldHVybiBmdWxsT3B0aW9ucztcclxufTtcclxuIl19

@@ -101,2 +101,1 @@ "use strict";

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvc2NoZW1hL2FyZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLGtEQUFrRDs7O0FBR2xELHVCQUFpRDtBQUVwQyxRQUFBLGdCQUFnQixHQUFHO0lBQzlCLEdBQUc7SUFDSCxNQUFNO0lBQ04sR0FBRztJQUNILE1BQU07SUFDTixHQUFHO0lBQ0gsTUFBTTtJQUNOLEdBQUc7SUFDSCxTQUFTO0lBQ1QsT0FBTztJQUNQLFNBQVM7SUFDVCxVQUFVO0lBQ1YsU0FBUztJQUNULFVBQVU7SUFDVixXQUFXO0NBQ1osQ0FBQztBQVNXLFFBQUEsYUFBYSxHQUFXO0lBQ25DLEVBQUUsRUFBRSxVQUFVO0lBQ2QsSUFBSSxFQUFFLFFBQVE7SUFDZCxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUM7SUFDbEIsVUFBVSxFQUFFO1FBQ1YsSUFBSSxFQUFFO1lBQ0osSUFBSSxFQUFFLFFBQVE7WUFDZCxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUMsZ0RBQWdEO1NBQ3JFO1FBQ0QsU0FBUyxFQUFFO1lBQ1QsSUFBSSxFQUFFLFNBQVM7WUFDZixJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxnREFBZ0Q7U0FDL0Q7UUFDRCxJQUFJLEVBQUU7WUFDSixJQUFJLEVBQUUsUUFBUTtTQUNmO0tBQ0Y7SUFDRCxvQkFBb0IsRUFBRSxLQUFLO0NBQzVCLENBQUM7QUFTVyxRQUFBLGVBQWUsR0FBVztJQUNyQyxFQUFFLEVBQUUsWUFBWTtJQUNoQixJQUFJLEVBQUUsUUFBUTtJQUNkLFFBQVEsRUFBRSxDQUFDLE1BQU0sQ0FBQztJQUNsQixVQUFVLEVBQUU7UUFDVixJQUFJLEVBQUU7WUFDSixJQUFJLEVBQUUsUUFBUTtZQUNkLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQyxnREFBZ0Q7U0FDdkU7UUFDRCxTQUFTLEVBQUU7WUFDVCxJQUFJLEVBQUUsUUFBUTtTQUNmO1FBQ0QsSUFBSSxFQUFFO1lBQ0osSUFBSSxFQUFFLFFBQVE7U0FDZjtLQUNGO0lBQ0Qsb0JBQW9CLEVBQUUsS0FBSztDQUM1QixDQUFDO0FBV1csUUFBQSxhQUFhLEdBQVc7SUFDbkMsRUFBRSxFQUFFLFVBQVU7SUFDZCxJQUFJLEVBQUUsUUFBUTtJQUNkLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUM7SUFDNUIsVUFBVSxFQUFFO1FBQ1YsSUFBSSxFQUFFO1lBQ0osSUFBSSxFQUFFLFFBQVE7WUFDZCxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUMsZ0RBQWdEO1NBQ3JFO1FBQ0QsTUFBTSxFQUFFO1lBQ04sSUFBSSxFQUFFLE9BQU87WUFDYixRQUFRLEVBQUUsQ0FBQztZQUNYLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLEtBQUssRUFBRTtnQkFDTCxJQUFJLEVBQUUsUUFBUTtnQkFDZCxPQUFPLEVBQUUsOEJBQTJCO2FBQ3JDO1NBQ0Y7UUFDRCxTQUFTLEVBQUU7WUFDVCxJQUFJLEVBQUUsUUFBUTtZQUNkLE9BQU8sRUFBRSw4QkFBMkI7WUFDcEMsYUFBYSxFQUFFLElBQUk7U0FDVjtRQUNYLElBQUksRUFBRTtZQUNKLElBQUksRUFBRSxRQUFRO1NBQ2Y7S0FDRjtJQUNELG9CQUFvQixFQUFFLEtBQUs7Q0FDNUIsQ0FBQztBQVVXLFFBQUEsU0FBUyxHQUFXO0lBQy9CLEVBQUUsRUFBRSxNQUFNO0lBQ1YsS0FBSyxFQUFFLENBQUMscUJBQWEsRUFBRSx1QkFBZSxFQUFFLHFCQUFhLENBQUM7Q0FDdkQsQ0FBQztBQUVXLFFBQUEsVUFBVSxHQUFXO0lBQ2hDLEVBQUUsRUFBRSxPQUFPO0lBQ1gsSUFBSSxFQUFFLFFBQVE7SUFDZCxpQkFBaUI7UUFDZixHQUFDLDhCQUEyQixJQUFHLGlCQUFTO1dBQ3pDO0lBQ0Qsb0JBQW9CLEVBQUUsS0FBSztJQUMzQixzQkFBc0IsRUFBRSx3QkFBZ0I7Q0FDL0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRzbGludDpkaXNhYmxlOm5vLW9iamVjdC1saXRlcmFsLXR5cGUtYXNzZXJ0aW9uXHJcblxyXG5pbXBvcnQgeyBTY2hlbWEgfSBmcm9tIFwianNvbnNjaGVtYVwiO1xyXG5pbXBvcnQgeyBhbHBoYW51bWVyaWNFeHRlbmRlZFBhdHRlcm4gfSBmcm9tIFwiLi9cIjtcclxuXHJcbmV4cG9ydCBjb25zdCByZXNlcnZlZEFyZ05hbWVzID0gW1xyXG4gIFwiZlwiLFxyXG4gIFwiZmlsZVwiLFxyXG4gIFwibFwiLFxyXG4gIFwibGlzdFwiLFxyXG4gIFwiaFwiLFxyXG4gIFwiaGVscFwiLFxyXG4gIFwidlwiLFxyXG4gIFwidmVyc2lvblwiLFxyXG4gIFwiY29sb3JcIixcclxuICBcIm5vQ29sb3JcIixcclxuICBcIm5vLWNvbG9yXCIsXHJcbiAgXCJwcm9maWxlXCIsXHJcbiAgXCJzaG93VGltZVwiLFxyXG4gIFwic2hvdy10aW1lXCJcclxuXTtcclxuXHJcbi8vIGFuIG9wdGlvbmFsIGZsYWcsIGZhbHNlIGJ5IGRlZmF1bHRcclxuZXhwb3J0IGludGVyZmFjZSBGbGFnQXJnRGVmaW5pdGlvbiB7XHJcbiAgdHlwZTogXCJmbGFnXCIgfCBcImZcIjtcclxuICBieURlZmF1bHQ/OiBmYWxzZTtcclxuICBkZXNjPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgZmxhZ0FyZ1NjaGVtYTogU2NoZW1hID0ge1xyXG4gIGlkOiBcIi9mbGFnQXJnXCIsXHJcbiAgdHlwZTogXCJvYmplY3RcIixcclxuICByZXF1aXJlZDogW1widHlwZVwiXSxcclxuICBwcm9wZXJ0aWVzOiB7XHJcbiAgICB0eXBlOiB7XHJcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXHJcbiAgICAgIGVudW06IFtcImZcIiwgXCJmbGFnXCJdIC8vIHRzbGludDpkaXNhYmxlLWxpbmU6b2JqZWN0LWxpdGVyYWwta2V5LXF1b3Rlc1xyXG4gICAgfSxcclxuICAgIGJ5RGVmYXVsdDoge1xyXG4gICAgICB0eXBlOiBcImJvb2xlYW5cIixcclxuICAgICAgZW51bTogW2ZhbHNlXSAvLyB0c2xpbnQ6ZGlzYWJsZS1saW5lOm9iamVjdC1saXRlcmFsLWtleS1xdW90ZXNcclxuICAgIH0sXHJcbiAgICBkZXNjOiB7XHJcbiAgICAgIHR5cGU6IFwic3RyaW5nXCJcclxuICAgIH1cclxuICB9LFxyXG4gIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZVxyXG59O1xyXG5cclxuLy8gYW55IHN0cmluZywgcmVxdWlyZWQgaWYgbm8gZGVmYXVsdCB2YWx1ZSBpcyBnaXZlblxyXG5leHBvcnQgaW50ZXJmYWNlIFN0cmluZ0FyZ0RlZmluaXRpb24ge1xyXG4gIHR5cGU6IFwic3RyaW5nXCIgfCBcInNcIjtcclxuICBieURlZmF1bHQ/OiBzdHJpbmc7XHJcbiAgZGVzYz86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IHN0cmluZ0FyZ1NjaGVtYTogU2NoZW1hID0ge1xyXG4gIGlkOiBcIi9zdHJpbmdBcmdcIixcclxuICB0eXBlOiBcIm9iamVjdFwiLFxyXG4gIHJlcXVpcmVkOiBbXCJ0eXBlXCJdLFxyXG4gIHByb3BlcnRpZXM6IHtcclxuICAgIHR5cGU6IHtcclxuICAgICAgdHlwZTogXCJzdHJpbmdcIixcclxuICAgICAgZW51bTogW1wic1wiLCBcInN0cmluZ1wiXSAvLyB0c2xpbnQ6ZGlzYWJsZS1saW5lOm9iamVjdC1saXRlcmFsLWtleS1xdW90ZXNcclxuICAgIH0sXHJcbiAgICBieURlZmF1bHQ6IHtcclxuICAgICAgdHlwZTogXCJzdHJpbmdcIlxyXG4gICAgfSxcclxuICAgIGRlc2M6IHtcclxuICAgICAgdHlwZTogXCJzdHJpbmdcIlxyXG4gICAgfVxyXG4gIH0sXHJcbiAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlXHJcbn07XHJcblxyXG4vLyBhbiBlbnVtLCByZXF1aXJlZCBpZiBub3QgZGVmYXVsdCB2YWx1ZSBpcyBnaXZlblxyXG4vLyB0aGUgZGVmYXVsdCB2YWx1ZSBtdXN0IGJlIGluc2lkZSB0aGUgZW51bSBnaXZlbiBpbiB2YWx1ZXM7IHZhbHVlcyBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIGVsZW1lbnRcclxuZXhwb3J0IGludGVyZmFjZSBFbnVtQXJnRGVmaW5pdGlvbiB7XHJcbiAgdHlwZTogXCJlbnVtXCIgfCBcImVcIjtcclxuICB2YWx1ZXM6IHN0cmluZ1tdO1xyXG4gIGJ5RGVmYXVsdD86IHN0cmluZztcclxuICBkZXNjPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgZW51bUFyZ1NjaGVtYTogU2NoZW1hID0ge1xyXG4gIGlkOiBcIi9lbnVtQXJnXCIsXHJcbiAgdHlwZTogXCJvYmplY3RcIixcclxuICByZXF1aXJlZDogW1widHlwZVwiLCBcInZhbHVlc1wiXSxcclxuICBwcm9wZXJ0aWVzOiB7XHJcbiAgICB0eXBlOiB7XHJcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXHJcbiAgICAgIGVudW06IFtcImVcIiwgXCJlbnVtXCJdIC8vIHRzbGludDpkaXNhYmxlLWxpbmU6b2JqZWN0LWxpdGVyYWwta2V5LXF1b3Rlc1xyXG4gICAgfSxcclxuICAgIHZhbHVlczoge1xyXG4gICAgICB0eXBlOiBcImFycmF5XCIsXHJcbiAgICAgIG1pbkl0ZW1zOiAxLFxyXG4gICAgICB1bmlxdWVJdGVtczogdHJ1ZSxcclxuICAgICAgaXRlbXM6IHtcclxuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxyXG4gICAgICAgIHBhdHRlcm46IGFscGhhbnVtZXJpY0V4dGVuZGVkUGF0dGVyblxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgYnlEZWZhdWx0OiB7XHJcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXHJcbiAgICAgIHBhdHRlcm46IGFscGhhbnVtZXJpY0V4dGVuZGVkUGF0dGVybixcclxuICAgICAgbWF0Y2hlc1ZhbHVlczogdHJ1ZVxyXG4gICAgfSBhcyBTY2hlbWEsXHJcbiAgICBkZXNjOiB7XHJcbiAgICAgIHR5cGU6IFwic3RyaW5nXCJcclxuICAgIH1cclxuICB9LFxyXG4gIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZVxyXG59O1xyXG5cclxuZXhwb3J0IHR5cGUgQXJnRGVmaW5pdGlvbiA9IEZsYWdBcmdEZWZpbml0aW9uIHwgU3RyaW5nQXJnRGVmaW5pdGlvbiB8IEVudW1BcmdEZWZpbml0aW9uO1xyXG5cclxuZXhwb3J0IHR5cGUgQXJnSW5zdGFuY2U8VCBleHRlbmRzIEFyZ0RlZmluaXRpb24+ID0gVCBleHRlbmRzIEZsYWdBcmdEZWZpbml0aW9uXHJcbiAgPyBib29sZWFuXHJcbiAgOiBUIGV4dGVuZHMgU3RyaW5nQXJnRGVmaW5pdGlvblxyXG4gICAgPyBzdHJpbmdcclxuICAgIDogVCBleHRlbmRzIEVudW1BcmdEZWZpbml0aW9uID8gc3RyaW5nIDogc3RyaW5nIHwgYm9vbGVhbjtcclxuXHJcbmV4cG9ydCBjb25zdCBhcmdTY2hlbWE6IFNjaGVtYSA9IHtcclxuICBpZDogXCIvYXJnXCIsXHJcbiAgb25lT2Y6IFtmbGFnQXJnU2NoZW1hLCBzdHJpbmdBcmdTY2hlbWEsIGVudW1BcmdTY2hlbWFdXHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgYXJnc1NjaGVtYTogU2NoZW1hID0ge1xyXG4gIGlkOiBcIi9hcmdzXCIsXHJcbiAgdHlwZTogXCJvYmplY3RcIixcclxuICBwYXR0ZXJuUHJvcGVydGllczoge1xyXG4gICAgW2FscGhhbnVtZXJpY0V4dGVuZGVkUGF0dGVybl06IGFyZ1NjaGVtYVxyXG4gIH0sXHJcbiAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxyXG4gIGZvcmJpZGRlblByb3BlcnR5TmFtZXM6IHJlc2VydmVkQXJnTmFtZXNcclxufSBhcyBTY2hlbWE7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFyZ0RlZmluaXRpb25zIHtcclxuICBbYXJnTmFtZTogc3RyaW5nXTogQXJnRGVmaW5pdGlvbjtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgQXJnc0luc3RhbmNlPFRBcmdEZWZzIGV4dGVuZHMgQXJnRGVmaW5pdGlvbnM+ID0ge1xyXG4gIFtrIGluIGtleW9mIFRBcmdEZWZzXTogQXJnSW5zdGFuY2U8VEFyZ0RlZnNba10+XHJcbn07XHJcbiJdfQ==
import { Schema } from "jsonschema";
import { ArgDefinitions, ArgsInstance } from "./args";
import { ExecFunction, ExecUtils } from "./runtime";
import { ExecCommand, ExecFunction } from "./runtime";
export declare type CommandRunFn<TArgDefs extends ArgDefinitions> = (exec: ExecFunction, args: ArgsInstance<TArgDefs>) => Promise<void>;
export interface Command<TArgDefs extends ArgDefinitions> {
desc?: string;
args?: TArgDefs;
internal?: boolean;
run(exec: ExecFunction, args: ArgsInstance<TArgDefs>, utils: ExecUtils): void;
run: CommandRunFn<TArgDefs>;
}
export interface CommandFromFunction {
readonly $fromCommandFunction: undefined;
}
export declare const commandSchema: Schema;
export interface Commands {
[commandName: string]: Command<ArgDefinitions> & CommandFromFunction;
[commandName: string]: Command<ArgDefinitions>;
}
export declare const commandsSchema: Schema;
export declare function command<TArgDefs extends ArgDefinitions = {}>(cmd: Command<TArgDefs>): Command<TArgDefs> & CommandFromFunction;
export declare function isInternalCommand(commandName: string): boolean;
export declare class CommandBuilder<TArgDefs extends ArgDefinitions> {
private readonly name;
private _command;
constructor(name: string);
desc(desc: string): this;
args<TNewArgDefs extends ArgDefinitions>(argDefs: TNewArgDefs): CommandBuilder<TNewArgDefs>;
argsDesc(argDescs: {
[k in keyof TArgDefs]?: string;
}): this;
run(runFn: CommandRunFn<TArgDefs>): void;
run(...inlineCommands: ExecCommand[]): void;
}
export declare function cmd(name: string): CommandBuilder<{}>;
"use strict";
// tslint:disable:no-object-literal-type-assertion
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
var __spread = (this && this.__spread) || function () {
for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
return ar;
};
Object.defineProperty(exports, "__esModule", { value: true });
var _a;
var config_1 = require("../config");
var _1 = require("./");

@@ -18,5 +85,2 @@ var args_1 = require("./args");

isFunction: true
},
internal: {
type: "boolean"
}

@@ -34,6 +98,60 @@ },

};
function command(cmd) {
return cmd;
function isInternalCommand(commandName) {
return commandName.startsWith("_");
}
exports.command = command;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3NjaGVtYS9jb21tYW5kcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsa0RBQWtEOzs7QUFHbEQsdUJBQWlEO0FBQ2pELCtCQUFrRTtBQWVyRCxRQUFBLGFBQWEsR0FBVztJQUNuQyxFQUFFLEVBQUUsVUFBVTtJQUNkLElBQUksRUFBRSxRQUFRO0lBQ2QsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ2pCLFVBQVUsRUFBRTtRQUNWLElBQUksRUFBRTtZQUNKLElBQUksRUFBRSxRQUFRO1NBQ2Y7UUFDRCxJQUFJLEVBQUUsaUJBQVU7UUFDaEIsR0FBRyxFQUFFO1lBQ0gsVUFBVSxFQUFFLElBQUk7U0FDUDtRQUNYLFFBQVEsRUFBRTtZQUNSLElBQUksRUFBRSxTQUFTO1NBQ2hCO0tBQ0Y7SUFDRCxvQkFBb0IsRUFBRSxLQUFLO0NBQzVCLENBQUM7QUFNVyxRQUFBLGNBQWMsR0FBVztJQUNwQyxFQUFFLEVBQUUsV0FBVztJQUNmLElBQUksRUFBRSxRQUFRO0lBQ2QsaUJBQWlCO1FBQ2YsR0FBQyw4QkFBMkIsSUFBRyxxQkFBYTtXQUM3QztJQUNELG9CQUFvQixFQUFFLEtBQUs7Q0FDNUIsQ0FBQztBQUVGLFNBQWdCLE9BQU8sQ0FDckIsR0FBc0I7SUFFdEIsT0FBTyxHQUE4QyxDQUFDO0FBQ3hELENBQUM7QUFKRCwwQkFJQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRzbGludDpkaXNhYmxlOm5vLW9iamVjdC1saXRlcmFsLXR5cGUtYXNzZXJ0aW9uXHJcblxyXG5pbXBvcnQgeyBTY2hlbWEgfSBmcm9tIFwianNvbnNjaGVtYVwiO1xyXG5pbXBvcnQgeyBhbHBoYW51bWVyaWNFeHRlbmRlZFBhdHRlcm4gfSBmcm9tIFwiLi9cIjtcclxuaW1wb3J0IHsgQXJnRGVmaW5pdGlvbnMsIEFyZ3NJbnN0YW5jZSwgYXJnc1NjaGVtYSB9IGZyb20gXCIuL2FyZ3NcIjtcclxuaW1wb3J0IHsgRXhlY0Z1bmN0aW9uLCBFeGVjVXRpbHMgfSBmcm9tIFwiLi9ydW50aW1lXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvbW1hbmQ8VEFyZ0RlZnMgZXh0ZW5kcyBBcmdEZWZpbml0aW9ucz4ge1xyXG4gIGRlc2M/OiBzdHJpbmc7XHJcbiAgYXJncz86IFRBcmdEZWZzO1xyXG4gIGludGVybmFsPzogYm9vbGVhbjtcclxuICBydW4oZXhlYzogRXhlY0Z1bmN0aW9uLCBhcmdzOiBBcmdzSW5zdGFuY2U8VEFyZ0RlZnM+LCB1dGlsczogRXhlY1V0aWxzKTogdm9pZDtcclxufVxyXG5cclxuLy8gZmFrZSwgb25seSB1c2VkIHRvIGZvcmNlIGNvbW1hbmRzIHRvIGNvbWUgZnJvbSB0aGUgY29tbWFuZCBmdW5jdGlvblxyXG5leHBvcnQgaW50ZXJmYWNlIENvbW1hbmRGcm9tRnVuY3Rpb24ge1xyXG4gIHJlYWRvbmx5ICRmcm9tQ29tbWFuZEZ1bmN0aW9uOiB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBjb21tYW5kU2NoZW1hOiBTY2hlbWEgPSB7XHJcbiAgaWQ6IFwiL2NvbW1hbmRcIixcclxuICB0eXBlOiBcIm9iamVjdFwiLFxyXG4gIHJlcXVpcmVkOiBbXCJydW5cIl0sXHJcbiAgcHJvcGVydGllczoge1xyXG4gICAgZGVzYzoge1xyXG4gICAgICB0eXBlOiBcInN0cmluZ1wiXHJcbiAgICB9LFxyXG4gICAgYXJnczogYXJnc1NjaGVtYSxcclxuICAgIHJ1bjoge1xyXG4gICAgICBpc0Z1bmN0aW9uOiB0cnVlXHJcbiAgICB9IGFzIFNjaGVtYSxcclxuICAgIGludGVybmFsOiB7XHJcbiAgICAgIHR5cGU6IFwiYm9vbGVhblwiXHJcbiAgICB9XHJcbiAgfSxcclxuICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2VcclxufTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29tbWFuZHMge1xyXG4gIFtjb21tYW5kTmFtZTogc3RyaW5nXTogQ29tbWFuZDxBcmdEZWZpbml0aW9ucz4gJiBDb21tYW5kRnJvbUZ1bmN0aW9uO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgY29tbWFuZHNTY2hlbWE6IFNjaGVtYSA9IHtcclxuICBpZDogXCIvY29tbWFuZHNcIixcclxuICB0eXBlOiBcIm9iamVjdFwiLFxyXG4gIHBhdHRlcm5Qcm9wZXJ0aWVzOiB7XHJcbiAgICBbYWxwaGFudW1lcmljRXh0ZW5kZWRQYXR0ZXJuXTogY29tbWFuZFNjaGVtYVxyXG4gIH0sXHJcbiAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlXHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY29tbWFuZDxUQXJnRGVmcyBleHRlbmRzIEFyZ0RlZmluaXRpb25zID0ge30+KFxyXG4gIGNtZDogQ29tbWFuZDxUQXJnRGVmcz5cclxuKTogQ29tbWFuZDxUQXJnRGVmcz4gJiBDb21tYW5kRnJvbUZ1bmN0aW9uIHtcclxuICByZXR1cm4gY21kIGFzIENvbW1hbmQ8VEFyZ0RlZnM+ICYgQ29tbWFuZEZyb21GdW5jdGlvbjtcclxufVxyXG4iXX0=
exports.isInternalCommand = isInternalCommand;
var CommandBuilder = /** @class */ (function () {
function CommandBuilder(name) {
this.name = name;
this._command = {};
}
CommandBuilder.prototype.desc = function (desc) {
this._command.desc = desc;
return this;
};
CommandBuilder.prototype.args = function (argDefs) {
this._command.args = argDefs;
return this;
};
CommandBuilder.prototype.argsDesc = function (argDescs) {
var _this = this;
this._command.args = this._command.args || {};
Object.keys(argDescs).forEach(function (argName) {
var desc = argDescs[argName];
var argObj = (_this._command.args[argName] = _this._command.args[argName] || {});
Object.assign(argObj, { desc: desc });
});
return this;
};
// base
CommandBuilder.prototype.run = function () {
var _this = this;
var cmdOrCommands = [];
for (var _i = 0; _i < arguments.length; _i++) {
cmdOrCommands[_i] = arguments[_i];
}
var runFn;
if (cmdOrCommands.length === 1 && typeof cmdOrCommands[0] === "function") {
runFn = cmdOrCommands[0];
}
else {
runFn = function (exec) { return __awaiter(_this, void 0, void 0, function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, exec.apply(void 0, __spread(cmdOrCommands))];
case 1:
_a.sent();
return [2 /*return*/];
}
});
}); };
}
config_1.config.commands[this.name] = __assign({}, this._command, { run: runFn });
};
return CommandBuilder;
}());
exports.CommandBuilder = CommandBuilder;
function cmd(name) {
return new CommandBuilder(name);
}
exports.cmd = cmd;
import { Schema, ValidatorResult } from "jsonschema";
export declare const alphanumericExtendedPattern = "^[a-zA-Z0-9][-:_a-zA-Z0-9]*$";
export declare const alphanumericExtendedPattern = "^_?[a-zA-Z0-9][-:_a-zA-Z0-9]*$";
export declare const validateInstance: (obj: any, sch: Schema) => ValidatorResult;

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

// export const alphanumericPattern = '^[a-zA-Z0-9]+$';
exports.alphanumericExtendedPattern = "^[a-zA-Z0-9][-:_a-zA-Z0-9]*$";
exports.alphanumericExtendedPattern = "^_?[a-zA-Z0-9][-:_a-zA-Z0-9]*$";
exports.validateInstance = function (obj, sch) {

@@ -81,2 +81,1 @@ var v = new jsonschema_1.Validator();

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3NjaGVtYS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsa0RBQWtEOzs7Ozs7Ozs7Ozs7QUFFbEQseUNBQXdGO0FBRXhGLHVEQUF1RDtBQUMxQyxRQUFBLDJCQUEyQixHQUFHLDhCQUE4QixDQUFDO0FBRTdELFFBQUEsZ0JBQWdCLEdBQUcsVUFBQyxHQUFRLEVBQUUsR0FBVztJQUNwRCxJQUFNLENBQUMsR0FBRyxJQUFJLHNCQUFTLEVBQUUsQ0FBQztJQUV6QixDQUFDLENBQUMsVUFBa0IsQ0FBQyxVQUFVLEdBQUcsVUFBQyxRQUFhLEVBQUUsTUFBYztRQUMvRCxJQUFJLENBQUUsTUFBYyxDQUFDLFVBQVUsRUFBRTtZQUMvQixPQUFPO1NBQ1I7UUFFRCxJQUFJLE9BQU8sUUFBUSxLQUFLLFVBQVUsRUFBRTtZQUNsQyxPQUFPLG9CQUFvQixDQUFDO1NBQzdCO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQyxDQUFDO0lBRUQsQ0FBQyxDQUFDLFVBQWtCLENBQUMsYUFBYSxHQUFHLFVBQ3BDLFFBQWEsRUFDYixNQUFjLEVBQ2QsT0FBZ0IsRUFDaEIsR0FBa0I7UUFFbEIsSUFBSSxDQUFFLE1BQWMsQ0FBQyxhQUFhLEVBQUU7WUFDbEMsT0FBTztTQUNSO1FBRUQsSUFBSSxRQUFRLEtBQUssU0FBUyxFQUFFO1lBQzFCLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO1FBQ0QsSUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekMsSUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLElBQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUM3QyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUMxQixPQUFPLFNBQVMsQ0FBQztTQUNsQjtRQUVELElBQUksT0FBTyxRQUFRLEtBQUssUUFBUSxFQUFFO1lBQ2hDLE9BQU8sa0JBQWtCLENBQUM7U0FDM0I7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUM5QixPQUFPLHFCQUFtQixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBRyxDQUFDO1NBQy9DO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQyxDQUFDO0lBRUQsQ0FBQyxDQUFDLFVBQWtCLENBQUMsc0JBQXNCLEdBQUcsVUFBQyxRQUFhLEVBQUUsTUFBYzs7UUFDM0UsSUFBTSxjQUFjLEdBQWMsTUFBYyxDQUFDLHNCQUFzQixDQUFDO1FBQ3hFLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDbkIsT0FBTyxTQUFTLENBQUM7U0FDbEI7UUFFRCxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFFO1lBQ3JELE9BQU8sU0FBUyxDQUFDO1NBQ2xCOztZQUVELEtBQW1CLElBQUEsS0FBQSxTQUFBLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUEsZ0JBQUEsNEJBQUU7Z0JBQXJDLElBQU0sSUFBSSxXQUFBO2dCQUNiLElBQUksY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDakMsT0FBTyx3QkFBc0IsSUFBSSx1Q0FBb0MsQ0FBQztpQkFDdkU7YUFDRjs7Ozs7Ozs7O1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQyxDQUFDO0lBRUYsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUU7UUFDMUIsWUFBWSxFQUFFLElBQUk7S0FDUixDQUFDLENBQUM7QUFDaEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHNsaW50OmRpc2FibGU6bm8tb2JqZWN0LWxpdGVyYWwtdHlwZS1hc3NlcnRpb25cclxuXHJcbmltcG9ydCB7IE9wdGlvbnMsIFNjaGVtYSwgU2NoZW1hQ29udGV4dCwgVmFsaWRhdG9yLCBWYWxpZGF0b3JSZXN1bHQgfSBmcm9tIFwianNvbnNjaGVtYVwiO1xyXG5cclxuLy8gZXhwb3J0IGNvbnN0IGFscGhhbnVtZXJpY1BhdHRlcm4gPSAnXlthLXpBLVowLTldKyQnO1xyXG5leHBvcnQgY29uc3QgYWxwaGFudW1lcmljRXh0ZW5kZWRQYXR0ZXJuID0gXCJeW2EtekEtWjAtOV1bLTpfYS16QS1aMC05XSokXCI7XHJcblxyXG5leHBvcnQgY29uc3QgdmFsaWRhdGVJbnN0YW5jZSA9IChvYmo6IGFueSwgc2NoOiBTY2hlbWEpOiBWYWxpZGF0b3JSZXN1bHQgPT4ge1xyXG4gIGNvbnN0IHYgPSBuZXcgVmFsaWRhdG9yKCk7XHJcblxyXG4gICh2LmF0dHJpYnV0ZXMgYXMgYW55KS5pc0Z1bmN0aW9uID0gKGluc3RhbmNlOiBhbnksIHNjaGVtYTogU2NoZW1hKSA9PiB7XHJcbiAgICBpZiAoIShzY2hlbWEgYXMgYW55KS5pc0Z1bmN0aW9uKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodHlwZW9mIGluc3RhbmNlICE9PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgcmV0dXJuIFwibXVzdCBiZSBhIGZ1bmN0aW9uXCI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH07XHJcblxyXG4gICh2LmF0dHJpYnV0ZXMgYXMgYW55KS5tYXRjaGVzVmFsdWVzID0gKFxyXG4gICAgaW5zdGFuY2U6IGFueSxcclxuICAgIHNjaGVtYTogU2NoZW1hLFxyXG4gICAgb3B0aW9uczogT3B0aW9ucyxcclxuICAgIGN0eDogU2NoZW1hQ29udGV4dFxyXG4gICkgPT4ge1xyXG4gICAgaWYgKCEoc2NoZW1hIGFzIGFueSkubWF0Y2hlc1ZhbHVlcykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGluc3RhbmNlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuICAgIGNvbnN0IHBhdGggPSBjdHgucHJvcGVydHlQYXRoLnNwbGl0KFwiLlwiKTtcclxuICAgIGNvbnN0IGNvbW1hbmQgPSBwYXRoWzFdO1xyXG4gICAgY29uc3QgYXJnID0gcGF0aFszXTtcclxuICAgIGNvbnN0IHZhbHVlcyA9IG9ialtjb21tYW5kXS5hcmdzW2FyZ10udmFsdWVzO1xyXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlcykpIHtcclxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodHlwZW9mIGluc3RhbmNlICE9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgIHJldHVybiBcIm11c3QgYmUgYSBzdHJpbmdcIjtcclxuICAgIH1cclxuICAgIGlmICghdmFsdWVzLmluY2x1ZGVzKGluc3RhbmNlKSkge1xyXG4gICAgICByZXR1cm4gYG11c3QgYmUgb25lIG9mOiAke3ZhbHVlcy5qb2luKFwiLCBcIil9YDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH07XHJcblxyXG4gICh2LmF0dHJpYnV0ZXMgYXMgYW55KS5mb3JiaWRkZW5Qcm9wZXJ0eU5hbWVzID0gKGluc3RhbmNlOiBhbnksIHNjaGVtYTogU2NoZW1hKSA9PiB7XHJcbiAgICBjb25zdCBmb3JiaWRkZW5OYW1lczogc3RyaW5nW10gPSAoc2NoZW1hIGFzIGFueSkuZm9yYmlkZGVuUHJvcGVydHlOYW1lcztcclxuICAgIGlmICghZm9yYmlkZGVuTmFtZXMpIHtcclxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodHlwZW9mIGluc3RhbmNlICE9PSBcIm9iamVjdFwiIHx8IGluc3RhbmNlID09PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChjb25zdCBwcm9wIG9mIE9iamVjdC5rZXlzKGluc3RhbmNlKSkge1xyXG4gICAgICBpZiAoZm9yYmlkZGVuTmFtZXMuaW5jbHVkZXMocHJvcCkpIHtcclxuICAgICAgICByZXR1cm4gYHRoZSBwcm9wZXJ0eSBuYW1lICcke3Byb3B9JyBpcyByZXNlcnZlZCBhbmQgY2Fubm90IGJlIHJldXNlZGA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH07XHJcblxyXG4gIHJldHVybiB2LnZhbGlkYXRlKG9iaiwgc2NoLCB7XHJcbiAgICBuZXN0ZWRFcnJvcnM6IHRydWVcclxuICB9IGFzIE9wdGlvbnMpO1xyXG59O1xyXG4iXX0=

@@ -17,2 +17,1 @@ "use strict";

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvc2NoZW1hL29wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFTYSxRQUFBLGFBQWEsR0FBVztJQUNuQyxFQUFFLEVBQUUsVUFBVTtJQUNkLElBQUksRUFBRSxRQUFRO0lBQ2QsUUFBUSxFQUFFLEVBQUU7SUFDWixVQUFVLEVBQUU7UUFDVixPQUFPLEVBQUU7WUFDUCxJQUFJLEVBQUUsU0FBUztTQUNoQjtRQUNELFFBQVEsRUFBRTtZQUNSLElBQUksRUFBRSxTQUFTO1NBQ2hCO0tBQ0Y7SUFDRCxvQkFBb0IsRUFBRSxLQUFLO0NBQzVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY2hlbWEgfSBmcm9tIFwianNvbnNjaGVtYVwiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGdWxsT3B0aW9ucyB7XHJcbiAgcHJvZmlsZTogYm9vbGVhbjtcclxuICBzaG93VGltZTogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQYXJ0aWFsT3B0aW9ucyBleHRlbmRzIFBhcnRpYWw8RnVsbE9wdGlvbnM+IHt9XHJcblxyXG5leHBvcnQgY29uc3Qgb3B0aW9uc1NjaGVtYTogU2NoZW1hID0ge1xyXG4gIGlkOiBcIi9vcHRpb25zXCIsXHJcbiAgdHlwZTogXCJvYmplY3RcIixcclxuICByZXF1aXJlZDogW10sXHJcbiAgcHJvcGVydGllczoge1xyXG4gICAgcHJvZmlsZToge1xyXG4gICAgICB0eXBlOiBcImJvb2xlYW5cIlxyXG4gICAgfSxcclxuICAgIHNob3dUaW1lOiB7XHJcbiAgICAgIHR5cGU6IFwiYm9vbGVhblwiXHJcbiAgICB9XHJcbiAgfSxcclxuICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2VcclxufTtcclxuIl19

@@ -0,1 +1,3 @@

import { ParsedCommands } from "../parser/commands";
import { HashCollection } from "../utils/hash";
import { Commands } from "./commands";

@@ -13,8 +15,12 @@ import { FullOptions } from "./options";

}>;
export interface GetFileChangesOptions {
log: boolean;
}
export interface ExtendedFullOptions extends FullOptions {
colorMode: boolean;
}
export interface MakfyContext {
commandName: string;
commandArgs: object;
commands: Commands;
options: ExtendedFullOptions;
makfyFilename: string;
}
export interface GetFileChangesResult {

@@ -28,18 +34,17 @@ hasChanges: boolean;

}
export interface MakfyContext {
commandName: string;
commandArgs: object;
commands: Commands;
options: ExtendedFullOptions;
makfyFilename: string;
export interface CachedGetFileChangesResult {
result: GetFileChangesResult;
oldHashCollection?: HashCollection;
newHashCollection: HashCollection;
}
export interface ExecUtils {
makfyContext: MakfyContext;
escape(...parts: string[]): string;
fixPath(path: string, style: "autodetect" | "windows" | "posix"): string;
setEnvVar(name: string, value: string | undefined): string;
expandGlobsAsync(globPatterns: string[]): Promise<string[]>;
getFileChangesAsync(contextName: string, globPatterns: string[] | string, options?: Partial<GetFileChangesOptions>): Promise<GetFileChangesResult>;
cleanCache(): void;
limitPromiseConcurrency<T>(concurrency: number): (fn: () => PromiseLike<T>) => Promise<T>;
export interface ExecContext extends MakfyContext {
parsedCommands: ParsedCommands;
makfyFileContents?: string;
idStack: string[];
cwd?: string;
env?: object;
syncMode: boolean;
getFileChangesResults: {
[hashFilename: string]: CachedGetFileChangesResult;
};
}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvc2NoZW1hL3J1bnRpbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1hbmRzIH0gZnJvbSBcIi4vY29tbWFuZHNcIjtcclxuaW1wb3J0IHsgRnVsbE9wdGlvbnMgfSBmcm9tIFwiLi9vcHRpb25zXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWNPYmplY3Qge1xyXG4gIF86IHN0cmluZzsgLy8gY29tbWFuZCBuYW1lXHJcbiAgYXJncz86IHtcclxuICAgIFthcmdOYW1lOiBzdHJpbmddOiBzdHJpbmcgfCBib29sZWFuO1xyXG4gIH07XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEV4ZWNDb21tYW5kID0gc3RyaW5nIHwgRXhlY09iamVjdCB8IChzdHJpbmcgfCBFeGVjT2JqZWN0KVtdO1xyXG5cclxuZXhwb3J0IHR5cGUgRXhlY0Z1bmN0aW9uID0gKC4uLmNvbW1hbmRzOiBFeGVjQ29tbWFuZFtdKSA9PiBQcm9taXNlPHsga2VlcENvbnRleHQ6IEV4ZWNGdW5jdGlvbiB9PjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgR2V0RmlsZUNoYW5nZXNPcHRpb25zIHtcclxuICBsb2c6IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZW5kZWRGdWxsT3B0aW9ucyBleHRlbmRzIEZ1bGxPcHRpb25zIHtcclxuICBjb2xvck1vZGU6IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgR2V0RmlsZUNoYW5nZXNSZXN1bHQge1xyXG4gIGhhc0NoYW5nZXM6IGJvb2xlYW47XHJcbiAgY2xlYW5SdW46IGJvb2xlYW47XHJcbiAgYWRkZWQ6IHN0cmluZ1tdO1xyXG4gIHJlbW92ZWQ6IHN0cmluZ1tdO1xyXG4gIG1vZGlmaWVkOiBzdHJpbmdbXTtcclxuICB1bm1vZGlmaWVkOiBzdHJpbmdbXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBNYWtmeUNvbnRleHQge1xyXG4gIGNvbW1hbmROYW1lOiBzdHJpbmc7XHJcbiAgY29tbWFuZEFyZ3M6IG9iamVjdDtcclxuICBjb21tYW5kczogQ29tbWFuZHM7XHJcbiAgb3B0aW9uczogRXh0ZW5kZWRGdWxsT3B0aW9ucztcclxuICBtYWtmeUZpbGVuYW1lOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRXhlY1V0aWxzIHtcclxuICBtYWtmeUNvbnRleHQ6IE1ha2Z5Q29udGV4dDtcclxuICBlc2NhcGUoLi4ucGFydHM6IHN0cmluZ1tdKTogc3RyaW5nO1xyXG4gIGZpeFBhdGgocGF0aDogc3RyaW5nLCBzdHlsZTogXCJhdXRvZGV0ZWN0XCIgfCBcIndpbmRvd3NcIiB8IFwicG9zaXhcIik6IHN0cmluZztcclxuICBzZXRFbnZWYXIobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nO1xyXG4gIGV4cGFuZEdsb2JzQXN5bmMoZ2xvYlBhdHRlcm5zOiBzdHJpbmdbXSk6IFByb21pc2U8c3RyaW5nW10+O1xyXG4gIGdldEZpbGVDaGFuZ2VzQXN5bmMoXHJcbiAgICBjb250ZXh0TmFtZTogc3RyaW5nLFxyXG4gICAgZ2xvYlBhdHRlcm5zOiBzdHJpbmdbXSB8IHN0cmluZyxcclxuICAgIG9wdGlvbnM/OiBQYXJ0aWFsPEdldEZpbGVDaGFuZ2VzT3B0aW9ucz5cclxuICApOiBQcm9taXNlPEdldEZpbGVDaGFuZ2VzUmVzdWx0PjtcclxuICBjbGVhbkNhY2hlKCk6IHZvaWQ7XHJcblxyXG4gIC8vIGludGVybmFsIG9ubHkgZm9yIG5vd1xyXG4gIGxpbWl0UHJvbWlzZUNvbmN1cnJlbmN5PFQ+KGNvbmN1cnJlbmN5OiBudW1iZXIpOiAoZm46ICgpID0+IFByb21pc2VMaWtlPFQ+KSA9PiBQcm9taXNlPFQ+O1xyXG59XHJcbiJdfQ==

@@ -72,2 +72,1 @@ "use strict";

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc29sZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdXRpbHMvY29uc29sZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpQkFnQkE7O0FBaEJBLCtCQUEwQjtBQUMxQixxQ0FBa0Q7QUFFckMsUUFBQSxXQUFXLEdBQUc7SUFDekIsSUFBTSxLQUFLLEdBQUcsZUFBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM5QixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM5QixDQUFDLENBQUM7QUFFVyxRQUFBLGtCQUFrQixHQUFHLFVBQU8sR0FBZ0I7SUFBaEIsb0JBQUEsRUFBQSxRQUFnQjs7Ozt3QkFDdkQscUJBQU0sK0JBQXFCLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsRUFBQTs7b0JBQWhELFNBQWdELENBQUM7Ozs7O0NBQ2xELENBQUM7QUFFVyxRQUFBLG9CQUFvQixHQUFHLFVBQU8sR0FBZ0I7SUFBaEIsb0JBQUEsRUFBQSxRQUFnQjs7Ozt3QkFDekQscUJBQU0sK0JBQXFCLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsRUFBQTs7b0JBQWhELFNBQWdELENBQUM7Ozs7O0NBQ2xELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XHJcbmltcG9ydCB7IHNvY2tldEZsdXNoV3JpdGVBc3luYyB9IGZyb20gXCIuL3NvY2tldHNcIjtcclxuXHJcbmV4cG9ydCBjb25zdCByZXNldENvbG9ycyA9ICgpID0+IHtcclxuICBjb25zdCByZXNldCA9IGNoYWxrLnJlc2V0KFwiXCIpO1xyXG4gIHByb2Nlc3Muc3Rkb3V0LndyaXRlKHJlc2V0KTtcclxuICBwcm9jZXNzLnN0ZGVyci53cml0ZShyZXNldCk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgYmxvY2tpbmdDb25zb2xlTG9nID0gYXN5bmMgKHN0cjogc3RyaW5nID0gXCJcIikgPT4ge1xyXG4gIGF3YWl0IHNvY2tldEZsdXNoV3JpdGVBc3luYyhwcm9jZXNzLnN0ZG91dCwgc3RyKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBibG9ja2luZ0NvbnNvbGVFcnJvciA9IGFzeW5jIChzdHI6IHN0cmluZyA9IFwiXCIpID0+IHtcclxuICBhd2FpdCBzb2NrZXRGbHVzaFdyaXRlQXN5bmMocHJvY2Vzcy5zdGRlcnIsIHN0cik7XHJcbn07XHJcbiJdfQ==

@@ -1,2 +0,2 @@

import { ExecContext } from "../execRuntime";
import { ExecContext } from "../schema/runtime";
export declare const getTimeString: (show: boolean) => string;

@@ -3,0 +3,0 @@ export declare const errorMessageForObject: (parts: (string | undefined)[], message: string) => string;

@@ -92,2 +92,1 @@ "use strict";

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0dGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdXRpbHMvZm9ybWF0dGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtCQUEwQjtBQUliLFFBQUEsYUFBYSxHQUFHLFVBQUMsSUFBYTtJQUN6QyxJQUFJLENBQUMsSUFBSSxFQUFFO1FBQ1QsT0FBTyxFQUFFLENBQUM7S0FDWDtJQUNELE9BQU8sZUFBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsa0JBQWtCLEVBQUUsT0FBSSxDQUFDLENBQUM7QUFDdEYsQ0FBQyxDQUFDO0FBRVcsUUFBQSxxQkFBcUIsR0FBRyxVQUFDLEtBQTZCLEVBQUUsT0FBZTtJQUNsRixPQUFVLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBQyxDQUFDLElBQUssT0FBQSxDQUFDLEtBQUssU0FBUyxFQUFmLENBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBTSxPQUFTLENBQUM7QUFDMUUsQ0FBQyxDQUFDO0FBRVcsUUFBQSxzQkFBc0IsR0FBRyxVQUFDLE9BQWU7SUFDcEQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQztBQUN0RCxDQUFDLENBQUM7QUFFRixxQkFBcUI7QUFDUixRQUFBLHVCQUF1QixHQUFHLFVBQUMsR0FBUTs7SUFDOUMsSUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBRWYsZUFBZTtJQUNmLElBQUksR0FBRyxDQUFDLEVBQUUsRUFBRTtRQUNWLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0tBQ2xCO0lBRUQsaUJBQWlCO0lBQ2pCLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRTtRQUNULEdBQUcsQ0FBQyxJQUFJLE9BQVIsR0FBRyxXQUFTLEdBQUcsQ0FBQyxDQUFDLEdBQUU7S0FDcEI7O1FBRUQsS0FBc0IsSUFBQSxLQUFBLFNBQUEsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQSxnQkFBQSw0QkFBRTtZQUFuQyxJQUFNLE9BQU8sV0FBQTtZQUNoQixRQUFRLE9BQU8sRUFBRTtnQkFDZixLQUFLLElBQUksQ0FBQztnQkFDVixLQUFLLEdBQUc7b0JBQ04sTUFBTTtnQkFDUjtvQkFDRSxJQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQzlCLElBQUksUUFBUSxLQUFLLFNBQVMsSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFFO3dCQUMvQyxHQUFHLENBQUMsSUFBSSxDQUFDLDhCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7cUJBQzNDO3lCQUFNO3dCQUNMLEdBQUcsQ0FBQyxJQUFJLE9BQVIsR0FBRyxXQUFTLENBQUMsOEJBQXNCLENBQUMsT0FBTyxDQUFDLEVBQUUsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUU7cUJBQ3JFO29CQUNELE1BQU07YUFDVDtTQUNGOzs7Ozs7Ozs7SUFFRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMsQ0FBQztBQUVXLFFBQUEsb0JBQW9CLEdBQUcsVUFBQyxPQUFpQixFQUFFLFFBQWlCO0lBQ3ZFLE9BQU8scUJBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQzdFLENBQUMsQ0FBQztBQUVXLFFBQUEsZUFBZSxHQUFHLFVBQUMsT0FBb0I7SUFDbEQsT0FBTyw0QkFBb0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDekUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xyXG5pbXBvcnQgeyBFeGVjQ29udGV4dCB9IGZyb20gXCIuLi9leGVjUnVudGltZVwiO1xyXG5pbXBvcnQgU29ja2V0ID0gTm9kZUpTLlNvY2tldDtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRUaW1lU3RyaW5nID0gKHNob3c6IGJvb2xlYW4pID0+IHtcclxuICBpZiAoIXNob3cpIHtcclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cclxuICByZXR1cm4gY2hhbGsuYm9sZC5ncmF5KGBbJHtuZXcgRGF0ZShuZXcgRGF0ZSgpLmdldFRpbWUoKSkudG9Mb2NhbGVUaW1lU3RyaW5nKCl9XSBgKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBlcnJvck1lc3NhZ2VGb3JPYmplY3QgPSAocGFydHM6IChzdHJpbmcgfCB1bmRlZmluZWQpW10sIG1lc3NhZ2U6IHN0cmluZykgPT4ge1xyXG4gIHJldHVybiBgJHtwYXJ0cy5maWx0ZXIoKGUpID0+IGUgIT09IHVuZGVmaW5lZCkuam9pbihcIi5cIil9IC0gJHttZXNzYWdlfWA7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgYXJnTmFtZVRvRGFzaGVkQXJnTmFtZSA9IChhcmdOYW1lOiBzdHJpbmcpID0+IHtcclxuICByZXR1cm4gKGFyZ05hbWUubGVuZ3RoIDw9IDEgPyBcIi1cIiA6IFwiLS1cIikgKyBhcmdOYW1lO1xyXG59O1xyXG5cclxuLy8gVE9ETzogcmVtb3ZlIHRoaXM/XHJcbmV4cG9ydCBjb25zdCBvYmplY3RUb0NvbW1hbmRMaW5lQXJncyA9IChvYmo6IGFueSkgPT4ge1xyXG4gIGNvbnN0IGFyciA9IFtdO1xyXG5cclxuICAvLyBjb21tYW5kIG5hbWVcclxuICBpZiAob2JqLiQwKSB7XHJcbiAgICBhcnIucHVzaChvYmouJDApO1xyXG4gIH1cclxuXHJcbiAgLy8gbm9uIGFyZ3MgYXJyYXlcclxuICBpZiAob2JqLl8pIHtcclxuICAgIGFyci5wdXNoKC4uLm9iai5fKTtcclxuICB9XHJcblxyXG4gIGZvciAoY29uc3QgYXJnTmFtZSBvZiBPYmplY3Qua2V5cyhvYmopKSB7XHJcbiAgICBzd2l0Y2ggKGFyZ05hbWUpIHtcclxuICAgICAgY2FzZSBcIiQwXCI6XHJcbiAgICAgIGNhc2UgXCJfXCI6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgY29uc3QgYXJnVmFsdWUgPSBvYmpbYXJnTmFtZV07XHJcbiAgICAgICAgaWYgKGFyZ1ZhbHVlID09PSB1bmRlZmluZWQgfHwgYXJnVmFsdWUgPT09IG51bGwpIHtcclxuICAgICAgICAgIGFyci5wdXNoKGFyZ05hbWVUb0Rhc2hlZEFyZ05hbWUoYXJnTmFtZSkpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBhcnIucHVzaCguLi5bYXJnTmFtZVRvRGFzaGVkQXJnTmFtZShhcmdOYW1lKSwgYXJnVmFsdWUudG9TdHJpbmcoKV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldHVybiBhcnI7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZm9ybWF0Q29udGV4dElkU3RhY2sgPSAoaWRTdGFjazogc3RyaW5nW10sIHNob3dUaW1lOiBib29sZWFuKSA9PiB7XHJcbiAgcmV0dXJuIGdldFRpbWVTdHJpbmcoc2hvd1RpbWUpICsgaWRTdGFjay5qb2luKGNoYWxrLmJvbGQuZ3JheShcIi9cIikpICsgXCIgIFwiO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGZvcm1hdENvbnRleHRJZCA9IChjb250ZXh0OiBFeGVjQ29udGV4dCkgPT4ge1xyXG4gIHJldHVybiBmb3JtYXRDb250ZXh0SWRTdGFjayhjb250ZXh0LmlkU3RhY2ssIGNvbnRleHQub3B0aW9ucy5zaG93VGltZSk7XHJcbn07XHJcbiJdfQ==

@@ -152,2 +152,1 @@ "use strict";

}); };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzL2dsb2JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlCQW1EQTs7QUFuREEsSUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRWhCLFFBQUEsc0JBQXNCLEdBQUcsVUFBTyxXQUFtQjs7UUFDOUQsc0JBQU8sSUFBSSxPQUFPLENBQVcsVUFBQyxPQUFPLEVBQUUsTUFBTTtnQkFDM0MsSUFBSSxDQUNGLFdBQVcsRUFDWCxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQzNDLFVBQUMsR0FBaUIsRUFBRSxLQUFlO29CQUNqQyxJQUFJLEdBQUcsRUFBRTt3QkFDUCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBQ1osT0FBTztxQkFDUjtvQkFFRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2pCLENBQUMsQ0FDRixDQUFDO1lBQ0osQ0FBQyxDQUFDLEVBQUM7O0tBQ0osQ0FBQztBQUVXLFFBQUEsdUJBQXVCLEdBQUcsVUFBTyxZQUFzQjs7Ozs7Z0JBQ2xFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFO29CQUNoQyxNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7aUJBQ3pEO2dCQUVLLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDOzs7O2dCQUNFLGlCQUFBLFNBQUEsWUFBWSxDQUFBOzs7O2dCQUEzQixXQUFXO2dCQUNsQixJQUFJLE9BQU8sV0FBVyxLQUFLLFFBQVEsRUFBRTtvQkFDbkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO2lCQUNwRDtnQkFDRCxXQUFXLEdBQUcsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMzQixRQUFRLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDOUMsSUFBSSxRQUFRLEVBQUU7b0JBQ1osV0FBVyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3BDLFdBQVcsR0FBRyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7aUJBQ2xDO2dCQUVELElBQUksV0FBVyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7b0JBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztpQkFDckQ7Z0JBRWEscUJBQU0sOEJBQXNCLENBQUMsV0FBVyxDQUFDLEVBQUE7O2dCQUFqRCxLQUFLLEdBQUcsU0FBeUM7O29CQUN2RCxLQUFtQixVQUFBLFNBQUEsS0FBSyxDQUFBLDJFQUFFO3dCQUFmLElBQUk7d0JBQ2IsSUFBSSxRQUFRLEVBQUU7NEJBQ1osR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzt5QkFDbEI7NkJBQU07NEJBQ0wsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQzt5QkFDZjtxQkFDRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O29CQUVILCtCQUFXLEdBQUcsR0FBRTs7O0tBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBnbG9iID0gcmVxdWlyZShcImdsb2JcIik7XHJcblxyXG5leHBvcnQgY29uc3QgdW5yb2xsR2xvYlBhdHRlcm5Bc3luYyA9IGFzeW5jIChnbG9iUGF0dGVybjogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4gPT4ge1xyXG4gIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmdbXT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgZ2xvYihcclxuICAgICAgZ2xvYlBhdHRlcm4sXHJcbiAgICAgIHsgc3RyaWN0OiB0cnVlLCBub2RpcjogdHJ1ZSwgZm9sbG93OiB0cnVlIH0sXHJcbiAgICAgIChlcnI6IEVycm9yIHwgbnVsbCwgZmlsZXM6IHN0cmluZ1tdKSA9PiB7XHJcbiAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgcmVqZWN0KGVycik7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXNvbHZlKGZpbGVzKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9KTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCB1bnJvbGxHbG9iUGF0dGVybnNBc3luYyA9IGFzeW5jIChnbG9iUGF0dGVybnM6IHN0cmluZ1tdKTogUHJvbWlzZTxzdHJpbmdbXT4gPT4ge1xyXG4gIGlmICghQXJyYXkuaXNBcnJheShnbG9iUGF0dGVybnMpKSB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJnbG9iIHBhdHRlcm5zIG11c3QgYmUgYSBzdHJpbmcgYXJyYXlcIik7XHJcbiAgfVxyXG5cclxuICBjb25zdCBzZXQgPSBuZXcgU2V0KCk7XHJcbiAgZm9yIChsZXQgZ2xvYlBhdHRlcm4gb2YgZ2xvYlBhdHRlcm5zKSB7XHJcbiAgICBpZiAodHlwZW9mIGdsb2JQYXR0ZXJuICE9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcImEgZ2xvYiBwYXR0ZXJuIG11c3QgYmUgYSBzdHJpbmdcIik7XHJcbiAgICB9XHJcbiAgICBnbG9iUGF0dGVybiA9IGdsb2JQYXR0ZXJuLnRyaW0oKTtcclxuICAgIGNvbnN0IG5lZ2F0aXZlID0gZ2xvYlBhdHRlcm4uc3RhcnRzV2l0aChcIiEhXCIpO1xyXG4gICAgaWYgKG5lZ2F0aXZlKSB7XHJcbiAgICAgIGdsb2JQYXR0ZXJuID0gZ2xvYlBhdHRlcm4uc3Vic3RyKDIpO1xyXG4gICAgICBnbG9iUGF0dGVybiA9IGdsb2JQYXR0ZXJuLnRyaW0oKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZ2xvYlBhdHRlcm4ubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcImEgZ2xvYiBwYXR0ZXJuIG11c3Qgbm90IGJlIGVtcHR5XCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgdW5yb2xsR2xvYlBhdHRlcm5Bc3luYyhnbG9iUGF0dGVybik7XHJcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcclxuICAgICAgaWYgKG5lZ2F0aXZlKSB7XHJcbiAgICAgICAgc2V0LmRlbGV0ZShmaWxlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzZXQuYWRkKGZpbGUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBbLi4uc2V0XTtcclxufTtcclxuIl19

@@ -250,2 +250,1 @@ "use strict";

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdXRpbHMvaGFzaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpQkE4TEE7O0FBOUxBLCtCQUFpQztBQUNqQyx1QkFBeUI7QUFDekIsMkJBQTZCO0FBbUJoQixRQUFBLGVBQWUsR0FBRyxjQUFjLENBQUM7QUFFakMsUUFBQSxzQkFBc0IsR0FBRyxVQUNwQyxRQUFnQixFQUNoQixRQUFrQixFQUNsQixRQUFpQjs7O1FBRVgsSUFBSSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0IsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFFdkIsSUFBSSxRQUFRLEVBQUU7WUFDWixzQkFBTztvQkFDTCxJQUFJLEVBQUUsSUFBSTtpQkFDWCxFQUFDO1NBQ0g7UUFFSyxJQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuQyxNQUFNLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTdDLHNCQUFPLElBQUksT0FBTyxDQUFZLFVBQUMsT0FBTyxFQUFFLE1BQU07Z0JBQzVDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQUMsR0FBVTtvQkFDOUIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNkLENBQUMsQ0FBQyxDQUFDO2dCQUVILE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLFVBQUMsSUFBWTtvQkFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDcEIsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7b0JBQ2pCLElBQU0sU0FBUyxHQUFjO3dC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QUFHLFVBQ3ZDLGNBQXNCLEVBQ3RCLFdBQW1CLEVBQ25CLFFBQWtCO0lBRWxCLElBQU0sSUFBSSxHQUFHLE1BQU07U0FDaEIsVUFBVSxDQUFDLFFBQVEsQ0FBQztTQUNwQixNQUFNLENBQUMsY0FBYyxHQUFHLFdBQVcsR0FBRyxRQUFRLENBQUM7U0FDL0MsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRWpCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBZSxFQUFLLElBQUksVUFBTyxDQUFDLENBQUM7QUFDcEQsQ0FBQyxDQUFDO0FBRVcsUUFBQSxpQkFBaUIsR0FBRztJQUMvQixJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyx1QkFBZSxDQUFDLEVBQUU7UUFDbkMsRUFBRSxDQUFDLFNBQVMsQ0FBQyx1QkFBZSxDQUFDLENBQUM7S0FDL0I7QUFDSCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjcnlwdG8gZnJvbSBcImNyeXB0b1wiO1xyXG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIjtcclxuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xyXG5pbXBvcnQgeyBHZXRGaWxlQ2hhbmdlc1Jlc3VsdCB9IGZyb20gXCIuLi9zY2hlbWEvcnVudGltZVwiO1xyXG5cclxuZXhwb3J0IHR5cGUgSGFzaFR5cGUgPSBcInNoYTFcIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSGFzaEVudHJ5IHtcclxuICBoYXNoPzogc3RyaW5nO1xyXG4gIHNpemU6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBIYXNoZXMge1xyXG4gIFtwYXRoOiBzdHJpbmddOiBIYXNoRW50cnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSGFzaENvbGxlY3Rpb24ge1xyXG4gIGhhc2hUeXBlOiBIYXNoVHlwZTtcclxuICBoYXNoZXM6IEhhc2hlcztcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGNhY2hlRm9sZGVyTmFtZSA9IFwiLm1ha2Z5LWNhY2hlXCI7XHJcblxyXG5leHBvcnQgY29uc3QgZ2VuZXJhdGVIYXNoRW50cnlBc3luYyA9IGFzeW5jIChcclxuICBmaWxlUGF0aDogc3RyaW5nLFxyXG4gIGhhc2hUeXBlOiBIYXNoVHlwZSxcclxuICBvbmx5U2l6ZTogYm9vbGVhblxyXG4pOiBQcm9taXNlPEhhc2hFbnRyeT4gPT4ge1xyXG4gIGNvbnN0IHN0YXQgPSBmcy5zdGF0U3luYyhmaWxlUGF0aCk7XHJcbiAgY29uc3Qgc2l6ZSA9IHN0YXQuc2l6ZTtcclxuXHJcbiAgaWYgKG9ubHlTaXplKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBzaXplOiBzaXplXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgY29uc3QgaGFzaCA9IGNyeXB0by5jcmVhdGVIYXNoKGhhc2hUeXBlKTtcclxuICBjb25zdCBzdHJlYW0gPSBmcy5jcmVhdGVSZWFkU3RyZWFtKGZpbGVQYXRoKTtcclxuXHJcbiAgcmV0dXJuIG5ldyBQcm9taXNlPEhhc2hFbnRyeT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgc3RyZWFtLm9uY2UoXCJlcnJvclwiLCAoZXJyOiBFcnJvcikgPT4ge1xyXG4gICAgICByZWplY3QoZXJyKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHN0cmVhbS5vbihcImRhdGFcIiwgKGRhdGE6IEJ1ZmZlcikgPT4ge1xyXG4gICAgICBoYXNoLnVwZGF0ZShkYXRhKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHN0cmVhbS5vbmNlKFwiZW5kXCIsICgpID0+IHtcclxuICAgICAgY29uc3QgaGFzaEVudHJ5OiBIYXNoRW50cnkgPSB7XHJcbiAgICAgICAgaGFzaDogaGFzaC5kaWdlc3QoXCJiYXNlNjRcIiksXHJcbiAgICAgICAgc2l6ZTogc2l6ZVxyXG4gICAgICB9O1xyXG5cclxuICAgICAgcmVzb2x2ZShoYXNoRW50cnkpO1xyXG4gICAgfSk7XHJcbiAgfSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ2VuZXJhdGVIYXNoQ29sbGVjdGlvbkFzeW5jID0gYXN5bmMgKFxyXG4gIGZpbGVzOiBzdHJpbmdbXSxcclxuICBoYXNoVHlwZTogSGFzaFR5cGUsXHJcbiAgb25seVNpemU6IGJvb2xlYW5cclxuKTogUHJvbWlzZTxIYXNoQ29sbGVjdGlvbj4gPT4ge1xyXG4gIGNvbnN0IGhhc2hlczoge1xyXG4gICAgW2s6IHN0cmluZ106IEhhc2hFbnRyeTtcclxuICB9ID0ge307XHJcblxyXG4gIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xyXG4gICAgaGFzaGVzW2ZpbGVdID0gYXdhaXQgZ2VuZXJhdGVIYXNoRW50cnlBc3luYyhmaWxlLCBoYXNoVHlwZSwgb25seVNpemUpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHtcclxuICAgIGhhc2hUeXBlOiBoYXNoVHlwZSxcclxuICAgIGhhc2hlczogaGFzaGVzXHJcbiAgfTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBHZXRzIGEgZGVsdGEgYmV0d2VlbiB0d28gaGFzaCBjb2xsZWN0aW9ucy5cclxuICogQHBhcmFtIG9sZEhhc2hDb2xsZWN0aW9uXHJcbiAqIEBwYXJhbSBuZXdIYXNoQ29sbGVjdGlvblxyXG4gKiBAcmV0dXJuIHtQcm9taXNlPEdldEZpbGVDaGFuZ2VzUmVzdWx0Pn1cclxuICovXHJcbmV4cG9ydCBjb25zdCBnZXRIYXNoQ29sbGVjdGlvbkRlbHRhID0gKFxyXG4gIG9sZEhhc2hDb2xsZWN0aW9uOiBIYXNoQ29sbGVjdGlvbiB8IHVuZGVmaW5lZCxcclxuICBuZXdIYXNoQ29sbGVjdGlvbjogSGFzaENvbGxlY3Rpb25cclxuKTogR2V0RmlsZUNoYW5nZXNSZXN1bHQgPT4ge1xyXG4gIGNvbnN0IHJlc3VsdDogR2V0RmlsZUNoYW5nZXNSZXN1bHQgPSB7XHJcbiAgICBoYXNDaGFuZ2VzOiBmYWxzZSxcclxuICAgIGNsZWFuUnVuOiBmYWxzZSxcclxuICAgIHJlbW92ZWQ6IFtdLFxyXG4gICAgbW9kaWZpZWQ6IFtdLFxyXG4gICAgdW5tb2RpZmllZDogW10sXHJcbiAgICBhZGRlZDogW11cclxuICB9O1xyXG5cclxuICBpZiAob2xkSGFzaENvbGxlY3Rpb24gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgcmVzdWx0Lmhhc0NoYW5nZXMgPSB0cnVlO1xyXG4gICAgcmVzdWx0LmNsZWFuUnVuID0gdHJ1ZTtcclxuICAgIHJlc3VsdC5hZGRlZCA9IE9iamVjdC5rZXlzKG5ld0hhc2hDb2xsZWN0aW9uLmhhc2hlcyk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgaWYgKG9sZEhhc2hDb2xsZWN0aW9uLmhhc2hUeXBlICE9PSBuZXdIYXNoQ29sbGVjdGlvbi5oYXNoVHlwZSkge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiaGFzaCB0eXBlIG1pc3RtYXRjaFwiKTtcclxuICB9XHJcblxyXG4gIGNvbnN0IG9sZEhhc2hlcyA9IG9sZEhhc2hDb2xsZWN0aW9uLmhhc2hlcztcclxuICBjb25zdCBuZXdIYXNoZXMgPSBuZXdIYXNoQ29sbGVjdGlvbi5oYXNoZXM7XHJcblxyXG4gIGNvbnN0IHVuaW9uID0gbmV3IFNldDxzdHJpbmc+KFsuLi5PYmplY3Qua2V5cyhvbGRIYXNoZXMpLCAuLi5PYmplY3Qua2V5cyhuZXdIYXNoZXMpXSk7XHJcbiAgZm9yIChjb25zdCBlIG9mIHVuaW9uKSB7XHJcbiAgICBjb25zdCBvbGRIYXNoID0gb2xkSGFzaGVzW2VdO1xyXG4gICAgY29uc3QgbmV3SGFzaCA9IG5ld0hhc2hlc1tlXTtcclxuICAgIGlmIChvbGRIYXNoICYmIG5ld0hhc2gpIHtcclxuICAgICAgaWYgKG9sZEhhc2guc2l6ZSA9PT0gbmV3SGFzaC5zaXplICYmIG9sZEhhc2guaGFzaCA9PT0gbmV3SGFzaC5oYXNoKSB7XHJcbiAgICAgICAgcmVzdWx0LnVubW9kaWZpZWQucHVzaChlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXN1bHQuaGFzQ2hhbmdlcyA9IHRydWU7XHJcbiAgICAgICAgcmVzdWx0Lm1vZGlmaWVkLnB1c2goZSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAob2xkSGFzaCkge1xyXG4gICAgICByZXN1bHQuaGFzQ2hhbmdlcyA9IHRydWU7XHJcbiAgICAgIHJlc3VsdC5yZW1vdmVkLnB1c2goZSk7XHJcbiAgICB9IGVsc2UgaWYgKG5ld0hhc2gpIHtcclxuICAgICAgcmVzdWx0Lmhhc0NoYW5nZXMgPSB0cnVlO1xyXG4gICAgICByZXN1bHQuYWRkZWQucHVzaChlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIm5vIG9sZCBhbmQgbm8gbmV3IGhhc2gsIHRoaXMgc2hvdWxkIG5vdCBoYXBwZW5cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXR1cm4gcmVzdWx0O1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFRyaWVzIHRvIGxvYWQgYSBoYXNoIGZpbGUuXHJcbiAqIEBwYXJhbSBoYXNoRmlsZVBhdGggUGF0aCB0byB0aGUgaGFzaCBmaWxlXHJcbiAqIEByZXR1cm4ge1Byb21pc2U8SGFzaENvbGxlY3Rpb24+fSBUaGUgaGFzaCBjb2xsZWN0aW9uLlxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IGxvYWRIYXNoQ29sbGVjdGlvbkZpbGVBc3luYyA9IGFzeW5jIChcclxuICBoYXNoRmlsZVBhdGg6IHN0cmluZ1xyXG4pOiBQcm9taXNlPEhhc2hDb2xsZWN0aW9uPiA9PiB7XHJcbiAgcmV0dXJuIG5ldyBQcm9taXNlPEhhc2hDb2xsZWN0aW9uPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICBmcy5yZWFkRmlsZShoYXNoRmlsZVBhdGgsIFwidXRmOFwiLCAoZXJyLCBkYXRhKSA9PiB7XHJcbiAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICByZWplY3QoZXJyKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJlc29sdmUoSlNPTi5wYXJzZShkYXRhKSk7XHJcbiAgICB9KTtcclxuICB9KTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBzYXZlSGFzaENvbGxlY3Rpb25GaWxlQXN5bmMgPSBhc3luYyAoXHJcbiAgaGFzaEZpbGVQYXRoOiBzdHJpbmcsXHJcbiAgaGFzaENvbGxlY3Rpb246IEhhc2hDb2xsZWN0aW9uXHJcbikgPT4ge1xyXG4gIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICBmcy53cml0ZUZpbGUoaGFzaEZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShoYXNoQ29sbGVjdGlvbiksIChlcnIpID0+IHtcclxuICAgICAgaWYgKGVycikge1xyXG4gICAgICAgIHJlamVjdChlcnIpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICByZXNvbHZlKCk7XHJcbiAgICB9KTtcclxuICB9KTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRIYXNoQ29sbGVjdGlvbkZpbGVuYW1lID0gKFxyXG4gIHNjcmlwdENvbnRlbnRzOiBzdHJpbmcsXHJcbiAgY29udGV4dE5hbWU6IHN0cmluZyxcclxuICBoYXNoVHlwZTogSGFzaFR5cGVcclxuKSA9PiB7XHJcbiAgY29uc3QgaGFzaCA9IGNyeXB0b1xyXG4gICAgLmNyZWF0ZUhhc2goaGFzaFR5cGUpXHJcbiAgICAudXBkYXRlKHNjcmlwdENvbnRlbnRzICsgY29udGV4dE5hbWUgKyBoYXNoVHlwZSlcclxuICAgIC5kaWdlc3QoXCJoZXhcIik7XHJcblxyXG4gIHJldHVybiBwYXRoLmpvaW4oY2FjaGVGb2xkZXJOYW1lLCBgJHtoYXNofS5oYXNoYCk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlQ2FjaGVGb2xkZXIgPSAoKSA9PiB7XHJcbiAgaWYgKCFmcy5leGlzdHNTeW5jKGNhY2hlRm9sZGVyTmFtZSkpIHtcclxuICAgIGZzLm1rZGlyU3luYyhjYWNoZUZvbGRlck5hbWUpO1xyXG4gIH1cclxufTtcclxuIl19

@@ -148,2 +148,1 @@ "use strict";

exports.OutputBuffer = OutputBuffer;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3V0cHV0QnVmZmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi91dGlscy9PdXRwdXRCdWZmZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSwrQkFBMEI7QUFDMUIseUNBQW9DO0FBQ3BDLHFDQUFrRDtBQWNsRDtJQUdFLHNCQUNtQixXQUFtQixFQUNuQixhQUF1QztRQUR2QyxnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUNuQixrQkFBYSxHQUFiLGFBQWEsQ0FBMEI7UUFKbEQsWUFBTyxHQUF1QixFQUFFLENBQUM7SUFLdEMsQ0FBQztJQUVKLDRCQUFLLEdBQUwsVUFBTSxPQUF5QjtRQUM3QixJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM1QjtJQUNILENBQUM7SUFFRCxrQ0FBVyxHQUFYLFVBQVksSUFBWSxFQUFFLEdBQVc7UUFDbkMsSUFBSSxvQkFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ2hCLElBQUksRUFBRSxJQUFJO2dCQUNWLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUM7YUFDL0IsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUssaUNBQVUsR0FBaEI7Ozs7Ozt3QkFDUSxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQzt3QkFFaEMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDOzs7O3dCQUVkLEtBQUEsU0FBQSxJQUFJLENBQUMsT0FBTyxDQUFBOzs7O3dCQUFqQixDQUFDO3dCQUNKLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO3dCQUNwQixJQUFJLElBQUksS0FBSyxRQUFRLEVBQUU7NEJBQ3JCLFFBQVEsR0FBRyxJQUFJLENBQUM7NEJBQ2hCLGtCQUFrQixHQUFHLElBQUksQ0FBQzt5QkFDM0I7d0JBRUssWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUNoRCxJQUFJLENBQUMsWUFBWSxFQUFFOzRCQUNqQix3QkFBUzt5QkFDVjt3QkFFTyxNQUFNLEdBQVksWUFBWSxPQUF4QixFQUFFLEtBQUssR0FBSyxZQUFZLE1BQWpCLENBQWtCO3dCQUVuQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBRWxDLEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFFekIsS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ3hCLGFBQWEsR0FBYSxFQUFFLENBQUM7d0JBQ25DLEtBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTs0QkFDakMsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDcEIsSUFBSSxLQUFLLEVBQUU7Z0NBQ1QsSUFBSSxHQUFHLGVBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDOzZCQUN4Qzs0QkFDRCxJQUNFLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLG9CQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztnQ0FDeEQsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFDaEM7Z0NBQ0EsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzs2QkFDMUI7aUNBQU07Z0NBQ0wsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLENBQUM7NkJBQ3ZDO3lCQUNGO3dCQUVLLElBQUksR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUN0QyxxQkFBTSwrQkFBcUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUE7O3dCQUF6QyxTQUF5QyxDQUFDO3dCQUVwQyxhQUFhLEdBQUcsb0JBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDdkMsa0JBQWtCOzRCQUNoQixhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxhQUFhLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCQUdqRixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQzs7Ozs7S0FDbkI7SUFFRCw4QkFBTyxHQUFQO1FBQ0UsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUNILG1CQUFDO0FBQUQsQ0FBQyxBQTdFRCxJQTZFQztBQTdFWSxvQ0FBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBTb2NrZXQgPSBOb2RlSlMuU29ja2V0O1xyXG5pbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XHJcbmltcG9ydCBzdHJpcENvbG9yIGZyb20gXCJzdHJpcC1hbnNpXCI7XHJcbmltcG9ydCB7IHNvY2tldEZsdXNoV3JpdGVBc3luYyB9IGZyb20gXCIuL3NvY2tldHNcIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgT3V0cHV0QnVmZmVyRGF0YSB7XHJcbiAgdHlwZTogc3RyaW5nO1xyXG4gIGRhdGE6IEJ1ZmZlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBPdXRwdXRCdWZmZXJTb2NrZXRDb25maWcge1xyXG4gIFtpZDogc3RyaW5nXToge1xyXG4gICAgc29ja2V0OiBTb2NrZXQ7XHJcbiAgICBjb2xvcj86IHN0cmluZztcclxuICB9O1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgT3V0cHV0QnVmZmVyIHtcclxuICBwcml2YXRlIF9vdXRwdXQ6IE91dHB1dEJ1ZmZlckRhdGFbXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2xpbmVQcmVmaXg6IHN0cmluZyxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3NvY2tldENvbmZpZzogT3V0cHV0QnVmZmVyU29ja2V0Q29uZmlnXHJcbiAgKSB7fVxyXG5cclxuICB3cml0ZShidWZEYXRhOiBPdXRwdXRCdWZmZXJEYXRhKSB7XHJcbiAgICBpZiAoYnVmRGF0YS5kYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5fb3V0cHV0LnB1c2goYnVmRGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB3cml0ZVN0cmluZyh0eXBlOiBzdHJpbmcsIHN0cjogc3RyaW5nKSB7XHJcbiAgICBpZiAoc3RyaXBDb2xvcihzdHIpLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5fb3V0cHV0LnB1c2goe1xyXG4gICAgICAgIHR5cGU6IHR5cGUsXHJcbiAgICAgICAgZGF0YTogQnVmZmVyLmZyb20oc3RyLCBcInV0ZjhcIilcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBmbHVzaEFzeW5jKCkge1xyXG4gICAgY29uc3QgbGluZVByZWZpeCA9IHRoaXMuX2xpbmVQcmVmaXg7XHJcblxyXG4gICAgbGV0IGxhc3RFbmRlZEluTmV3TGluZSA9IHRydWU7XHJcbiAgICBsZXQgbGFzdFR5cGU7XHJcbiAgICBmb3IgKGNvbnN0IGIgb2YgdGhpcy5fb3V0cHV0KSB7XHJcbiAgICAgIGNvbnN0IHR5cGUgPSBiLnR5cGU7XHJcbiAgICAgIGlmICh0eXBlICE9PSBsYXN0VHlwZSkge1xyXG4gICAgICAgIGxhc3RUeXBlID0gdHlwZTtcclxuICAgICAgICBsYXN0RW5kZWRJbk5ld0xpbmUgPSB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBzb2NrZXRDb25maWcgPSB0aGlzLl9zb2NrZXRDb25maWdbYi50eXBlXTtcclxuICAgICAgaWYgKCFzb2NrZXRDb25maWcpIHtcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgeyBzb2NrZXQsIGNvbG9yIH0gPSBzb2NrZXRDb25maWc7XHJcblxyXG4gICAgICBsZXQgc3RyID0gYi5kYXRhLnRvU3RyaW5nKFwidXRmOFwiKTtcclxuXHJcbiAgICAgIHN0ciA9IHN0ci5zcGxpdChcIlxcclwiKS5qb2luKFwiXCIpO1xyXG5cclxuICAgICAgY29uc3QgbGluZXMgPSBzdHIuc3BsaXQoXCJcXG5cIik7XHJcbiAgICAgIGNvbnN0IHByZWZpeGVkTGluZXM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgbGluZSA9IGxpbmVzW2ldO1xyXG4gICAgICAgIGlmIChjb2xvcikge1xyXG4gICAgICAgICAgbGluZSA9IGNoYWxrLmJvbGQua2V5d29yZChjb2xvcikobGluZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIChpID09PSBsaW5lcy5sZW5ndGggLSAxICYmIHN0cmlwQ29sb3IobGluZSkubGVuZ3RoIDw9IDApIHx8XHJcbiAgICAgICAgICAoaSA9PT0gMCAmJiAhbGFzdEVuZGVkSW5OZXdMaW5lKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgcHJlZml4ZWRMaW5lcy5wdXNoKGxpbmUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBwcmVmaXhlZExpbmVzLnB1c2gobGluZVByZWZpeCArIGxpbmUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgdGV4dCA9IHByZWZpeGVkTGluZXMuam9pbihcIlxcblwiKTtcclxuICAgICAgYXdhaXQgc29ja2V0Rmx1c2hXcml0ZUFzeW5jKHNvY2tldCwgdGV4dCk7XHJcblxyXG4gICAgICBjb25zdCB1bmNvbG9yZWRUZXh0ID0gc3RyaXBDb2xvcih0ZXh0KTtcclxuICAgICAgbGFzdEVuZGVkSW5OZXdMaW5lID1cclxuICAgICAgICB1bmNvbG9yZWRUZXh0Lmxlbmd0aCA+IDAgJiYgdW5jb2xvcmVkVGV4dFt1bmNvbG9yZWRUZXh0Lmxlbmd0aCAtIDFdID09PSBcIlxcblwiO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX291dHB1dCA9IFtdO1xyXG4gIH1cclxuXHJcbiAgaGFzRGF0YSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9vdXRwdXQubGVuZ3RoID4gMDtcclxuICB9XHJcbn1cclxuIl19

@@ -39,2 +39,1 @@ "use strict";

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbWlzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdXRpbHMvcHJvbWlzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFhLFFBQUEsdUJBQXVCLEdBQUcsVUFDckMsV0FBbUI7SUFFbkIsSUFBSSxXQUFXLEdBQUcsQ0FBQyxFQUFFO1FBQ25CLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztLQUMvQztJQUVELElBQU0sS0FBSyxHQUFtQixFQUFFLENBQUM7SUFDakMsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0lBRXBCLElBQU0sSUFBSSxHQUFHO1FBQ1gsV0FBVyxFQUFFLENBQUM7UUFFZCxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3BCLElBQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM3QixJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUU7Z0JBQ3hCLE1BQU0sRUFBRSxDQUFDO2FBQ1Y7U0FDRjtJQUNILENBQUMsQ0FBQztJQUVGLE9BQU8sVUFBQyxjQUFjO1FBQ3BCLE9BQUEsSUFBSSxPQUFPLENBQUksVUFBQyxPQUFPLEVBQUUsTUFBTTtZQUM3QixJQUFNLEdBQUcsR0FBRztnQkFDVixXQUFXLEVBQUUsQ0FBQztnQkFFZCxjQUFjLEVBQUUsQ0FBQyxJQUFJLENBQ25CLFVBQUMsR0FBUTtvQkFDUCxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ2IsSUFBSSxFQUFFLENBQUM7Z0JBQ1QsQ0FBQyxFQUNELFVBQUMsR0FBUTtvQkFDUCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ1osSUFBSSxFQUFFLENBQUM7Z0JBQ1QsQ0FBQyxDQUNGLENBQUM7WUFDSixDQUFDLENBQUM7WUFFRixJQUFJLFdBQVcsR0FBRyxXQUFXLEVBQUU7Z0JBQzdCLEdBQUcsRUFBRSxDQUFDO2FBQ1A7aUJBQU07Z0JBQ0wsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNqQjtRQUNILENBQUMsQ0FBQztJQXJCRixDQXFCRSxDQUFDO0FBQ1AsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGxpbWl0UHJvbWlzZUNvbmN1cnJlbmN5ID0gPFQ+KFxyXG4gIGNvbmN1cnJlbmN5OiBudW1iZXJcclxuKTogKChmbjogKCkgPT4gUHJvbWlzZUxpa2U8VD4pID0+IFByb21pc2U8VD4pID0+IHtcclxuICBpZiAoY29uY3VycmVuY3kgPCAxKSB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCdjb25jdXJyZW5jeScgbXVzdCBiZSA+PSAxYCk7XHJcbiAgfVxyXG5cclxuICBjb25zdCBxdWV1ZTogKCgpID0+IHZvaWQpW10gPSBbXTtcclxuICBsZXQgYWN0aXZlQ291bnQgPSAwO1xyXG5cclxuICBjb25zdCBuZXh0ID0gKCkgPT4ge1xyXG4gICAgYWN0aXZlQ291bnQtLTtcclxuXHJcbiAgICBpZiAocXVldWUubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBuZXdSdW4gPSBxdWV1ZS5zaGlmdCgpO1xyXG4gICAgICBpZiAobmV3UnVuICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBuZXdSdW4oKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIHJldHVybiAod3JhcHBlZFByb21pc2UpID0+XHJcbiAgICBuZXcgUHJvbWlzZTxUPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGNvbnN0IHJ1biA9ICgpID0+IHtcclxuICAgICAgICBhY3RpdmVDb3VudCsrO1xyXG5cclxuICAgICAgICB3cmFwcGVkUHJvbWlzZSgpLnRoZW4oXHJcbiAgICAgICAgICAodmFsOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgcmVzb2x2ZSh2YWwpO1xyXG4gICAgICAgICAgICBuZXh0KCk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHJlamVjdChlcnIpO1xyXG4gICAgICAgICAgICBuZXh0KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgICAgfTtcclxuXHJcbiAgICAgIGlmIChhY3RpdmVDb3VudCA8IGNvbmN1cnJlbmN5KSB7XHJcbiAgICAgICAgcnVuKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcXVldWUucHVzaChydW4pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxufTtcclxuIl19

@@ -51,2 +51,1 @@ "use strict";

exports.escapeShell = escapeShell;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGxlc2NhcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzL3NoZWxsZXNjYXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEsU0FBUyxjQUFjLENBQUMsSUFBWTtJQUNsQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ3BDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztLQUN2RTtTQUFNO1FBQ0wsT0FBTyxJQUFJLENBQUM7S0FDYjtBQUNILENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxJQUFZO0lBQ25DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDcEMsT0FBTyxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDO0tBQzdDO1NBQU07UUFDTCxPQUFPLElBQUksQ0FBQztLQUNiO0FBQ0gsQ0FBQztBQUVZLFFBQUEsT0FBTyxHQUFHLFVBQUMsS0FBZ0IsRUFBRSxJQUFZO0lBQ3BELElBQU0sTUFBTSxHQUFHLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQzNDLElBQU0sTUFBTSxHQUFHLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBRTNDLElBQU0sWUFBWSxHQUFHLElBQUksQ0FBQztJQUMxQixJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ25CLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN2QyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssT0FBTyxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUU7UUFDbEQsc0JBQXNCO1FBQ3RCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN0QixJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRTtnQkFDekQsTUFBTSxJQUFJLEtBQUssQ0FBQyxNQUFJLFlBQVksNkJBQTBCLENBQUMsQ0FBQzthQUM3RDtZQUVELHdCQUF3QjtZQUN4QixJQUFJLEdBQUcsTUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUcsQ0FBQztTQUN2QztLQUNGO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUM7QUFFRixTQUFnQixXQUFXLENBQUMsS0FBZ0IsRUFBRSxhQUFnQztJQUM1RSxJQUFNLE1BQU0sR0FBRyxLQUFLLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztJQUVsRSxJQUFNLEdBQUcsR0FBYSxFQUFFLENBQUM7SUFFekIsSUFBSSxPQUFPLGFBQWEsS0FBSyxRQUFRLEVBQUU7UUFDckMsT0FBTyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7S0FDOUI7U0FBTTtRQUNMLGFBQWEsQ0FBQyxPQUFPLENBQUMsVUFBQyxNQUFNO1lBQzNCLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDdEI7QUFDSCxDQUFDO0FBYkQsa0NBYUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBTaGVsbFR5cGUgPSBcInNoXCIgfCBcImNtZFwiO1xyXG5cclxuZnVuY3Rpb24gX2VzY2FwZVNoZWxsU2gocGF0aDogc3RyaW5nKSB7XHJcbiAgaWYgKCEvXltBLVphLXowLTlfXFwvLV0rJC8udGVzdChwYXRoKSkge1xyXG4gICAgcmV0dXJuIChcIidcIiArIHBhdGgucmVwbGFjZSgvJy9nLCBcIidcXFwiJ1xcXCInXCIpICsgXCInXCIpLnJlcGxhY2UoLycnL2csIFwiXCIpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZXR1cm4gcGF0aDtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIF9lc2NhcGVTaGVsbENtZChwYXRoOiBzdHJpbmcpIHtcclxuICBpZiAoIS9eW0EtWmEtejAtOV9cXC8tXSskLy50ZXN0KHBhdGgpKSB7XHJcbiAgICByZXR1cm4gJ1wiJyArIHBhdGgucmVwbGFjZSgvXCIvZywgJ1wiXCInKSArICdcIic7XHJcbiAgfSBlbHNlIHtcclxuICAgIHJldHVybiBwYXRoO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGZpeFBhdGggPSAoc2hlbGw6IFNoZWxsVHlwZSwgcGF0aDogc3RyaW5nKSA9PiB7XHJcbiAgY29uc3Qgb2xkU2VwID0gc2hlbGwgPT09IFwic2hcIiA/IFwiXFxcXFwiIDogXCIvXCI7XHJcbiAgY29uc3QgbmV3U2VwID0gc2hlbGwgPT09IFwic2hcIiA/IFwiL1wiIDogXCJcXFxcXCI7XHJcblxyXG4gIGNvbnN0IG9yaWdpbmFsUGF0aCA9IHBhdGg7XHJcbiAgcGF0aCA9IHBhdGgudHJpbSgpO1xyXG4gIHBhdGggPSBwYXRoLnNwbGl0KG9sZFNlcCkuam9pbihuZXdTZXApO1xyXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSBcIndpbjMyXCIgJiYgc2hlbGwgPT09IFwic2hcIikge1xyXG4gICAgLy8gbW9zdCBwcm9iYWJseSBtaW5nd1xyXG4gICAgaWYgKHBhdGguaW5jbHVkZXMoXCI6XCIpKSB7XHJcbiAgICAgIGlmIChwYXRoLmxlbmd0aCA8IDIgfHwgcGF0aFsxXSAhPT0gXCI6XCIgfHwgcGF0aFsyXSAhPT0gXCIvXCIpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCcke29yaWdpbmFsUGF0aH0nIC0gcGF0aCBjYW5ub3QgYmUgZml4ZWRgKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gZnJvbSBDOlxcLi4uIHRvIC9DLy4uLlxyXG4gICAgICBwYXRoID0gYC8ke3BhdGhbMF19JHtwYXRoLnN1YnN0cigyKX1gO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHBhdGg7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlU2hlbGwoc2hlbGw6IFNoZWxsVHlwZSwgc3RyaW5nT3JBcnJheTogc3RyaW5nIHwgc3RyaW5nW10pIHtcclxuICBjb25zdCBlc2NhcGUgPSBzaGVsbCA9PT0gXCJjbWRcIiA/IF9lc2NhcGVTaGVsbENtZCA6IF9lc2NhcGVTaGVsbFNoO1xyXG5cclxuICBjb25zdCByZXQ6IHN0cmluZ1tdID0gW107XHJcblxyXG4gIGlmICh0eXBlb2Ygc3RyaW5nT3JBcnJheSA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgcmV0dXJuIGVzY2FwZShzdHJpbmdPckFycmF5KTtcclxuICB9IGVsc2Uge1xyXG4gICAgc3RyaW5nT3JBcnJheS5mb3JFYWNoKChtZW1iZXIpID0+IHtcclxuICAgICAgcmV0LnB1c2goZXNjYXBlKG1lbWJlcikpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcmV0LmpvaW4oXCIgXCIpO1xyXG4gIH1cclxufVxyXG4iXX0=

@@ -57,2 +57,1 @@ "use strict";

}); };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ja2V0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdXRpbHMvc29ja2V0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpQkFZQTs7QUFWYSxRQUFBLHFCQUFxQixHQUFHLFVBQU8sTUFBYyxFQUFFLEdBQVc7OztvQkFDckUscUJBQU0sSUFBSSxPQUFPLENBQUMsVUFBQyxPQUFPO29CQUN4QixJQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNsQyxJQUFJLE9BQU8sRUFBRTt3QkFDWCxPQUFPLEVBQUUsQ0FBQztxQkFDWDt5QkFBTTt3QkFDTCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztxQkFDL0I7Z0JBQ0gsQ0FBQyxDQUFDLEVBQUE7O2dCQVBGLFNBT0UsQ0FBQzs7OztLQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgU29ja2V0ID0gTm9kZUpTLlNvY2tldDtcclxuXHJcbmV4cG9ydCBjb25zdCBzb2NrZXRGbHVzaFdyaXRlQXN5bmMgPSBhc3luYyAoc29ja2V0OiBTb2NrZXQsIHN0cjogc3RyaW5nKSA9PiB7XHJcbiAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgIGNvbnN0IGZsdXNoZWQgPSBzb2NrZXQud3JpdGUoc3RyKTtcclxuICAgIGlmIChmbHVzaGVkKSB7XHJcbiAgICAgIHJlc29sdmUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHNvY2tldC5vbmNlKFwiZHJhaW5cIiwgcmVzb2x2ZSk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbn07XHJcbiJdfQ==

@@ -17,2 +17,1 @@ "use strict";

exports.TextWriter = TextWriter;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGV4dFdyaXRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdXRpbHMvVGV4dFdyaXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBO0lBQUE7UUFDRSxXQUFNLEdBQVcsRUFBRSxDQUFDO0lBVXRCLENBQUM7SUFSQywwQkFBSyxHQUFMLFVBQU0sR0FBWTtRQUNoQixJQUFJLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELDhCQUFTLEdBQVQsVUFBVSxHQUFZO1FBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBQ0gsaUJBQUM7QUFBRCxDQUFDLEFBWEQsSUFXQztBQVhZLGdDQUFVIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFRleHRXcml0ZXIge1xyXG4gIG91dHB1dDogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgd3JpdGUoc3RyPzogc3RyaW5nKSB7XHJcbiAgICB0aGlzLm91dHB1dCArPSBzdHIgPyBzdHIgOiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgd3JpdGVMaW5lKHN0cj86IHN0cmluZykge1xyXG4gICAgdGhpcy53cml0ZShzdHIpO1xyXG4gICAgdGhpcy53cml0ZShcIlxcblwiKTtcclxuICB9XHJcbn1cclxuIl19

@@ -41,2 +41,1 @@ "use strict";

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZUNoZWNraW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi91dGlscy90eXBlQ2hlY2tpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQWEsUUFBQSxRQUFRLEdBQUcsVUFBQyxHQUFRO0lBQy9CLE9BQU8sR0FBRyxLQUFLLElBQUksSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLENBQUM7QUFDakQsQ0FBQyxDQUFDO0FBRVcsUUFBQSxVQUFVLEdBQUcsVUFBQyxJQUFTO0lBQ2xDLE9BQU8sT0FBTyxJQUFJLEtBQUssVUFBVSxDQUFDO0FBQ3BDLENBQUMsQ0FBQztBQUVXLFFBQUEsYUFBYSxHQUFHLFVBQUMsR0FBUTs7SUFDcEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDdkIsT0FBTyxLQUFLLENBQUM7S0FDZDs7UUFDRCxLQUFnQixJQUFBLFFBQUEsU0FBQSxHQUFHLENBQUEsd0JBQUEseUNBQUU7WUFBaEIsSUFBTSxDQUFDLGdCQUFBO1lBQ1YsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLEVBQUU7Z0JBQ3pCLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7U0FDRjs7Ozs7Ozs7O0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgaXNPYmplY3QgPSAob2JqOiBhbnkpID0+IHtcclxuICByZXR1cm4gb2JqICE9PSBudWxsICYmIHR5cGVvZiBvYmogPT09IFwib2JqZWN0XCI7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgaXNGdW5jdGlvbiA9IChmdW5jOiBhbnkpID0+IHtcclxuICByZXR1cm4gdHlwZW9mIGZ1bmMgPT09IFwiZnVuY3Rpb25cIjtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBpc1N0cmluZ0FycmF5ID0gKGFycjogYW55KSA9PiB7XHJcbiAgaWYgKCFBcnJheS5pc0FycmF5KGFycikpIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgZm9yIChjb25zdCBlIG9mIGFycikge1xyXG4gICAgaWYgKHR5cGVvZiBlICE9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIHRydWU7XHJcbn07XHJcbiJdfQ==
{
"name": "makfy",
"version": "1.4.2",
"version": "2.0.0",
"description": "makfy - npm scripts on steroids!",

@@ -11,5 +11,4 @@ "main": "dist/lib/index.js",

"scripts": {
"build": "tsc -p .",
"clean": "rimraf ./dist",
"prepublishOnly": "yarn clean && yarn build"
"build": "rimraf ./dist && tsc -p .",
"prepublishOnly": "yarn build"
},

@@ -16,0 +15,0 @@ "files": [

@@ -8,5 +8,10 @@ <p align="center">

Install it globally `npm install -g makfy`
or locally `npm install --save-dev makfy`
Install it globally
`npm install -g makfy` / `yarn add global makfy`
or locally
`npm install --save-dev makfy` / `yarn add --dev makfy`
**To support this project star it on [github](https://github.com/xaviergonz/makfy)!**

@@ -59,44 +64,17 @@

js
```js
module.exports = {
commands: {
clean: {
run: async (exec) => {
await exec(
// running sequentially
"rimraf ./dist-a",
"rimraf ./dist-b",
// and these run after the other ones too, but in parallel!
["rimraf ./dist-c", "rimraf ./dist-d"]
);
}
})
}
};
```
ts
```ts
import { command, makfyConfig } from "makfy";
import { cmd } from "makfy";
// or
const { cmd } = require("makfy");
// note how in TS makfyConfig and command are used to get better typing validation
// these can also be used in js, but it is not necessary
export default makfyConfig({
commands: {
clean: command({
run: async (exec) => {
await exec(
// running sequentially
"rimraf ./dist-a",
"rimraf ./dist-b",
// and these run after the other ones too, but in parallel!
["rimraf ./dist-c", "rimraf ./dist-d"]
);
}
})
}
});
cmd("clean")
.run(async (exec) => {
await exec(
// running sequentially
"rimraf ./dist-a",
"rimraf ./dist-b",
// and these run after the other ones too, but in parallel!
["rimraf ./dist-c", "rimraf ./dist-d"]
);
});
```

@@ -106,19 +84,20 @@

js
```ts
import { cmd, flag } from "makfy";
// or
const { cmd } = require("makfy");
```js
module.exports = {
commands: {
clean: {
desc: "clean the project",
args: {
prod: { type: "flag", desc: "production clean" },
dev: { type: "flag", desc: "dev clean" }
},
run: async (exec, args) => {
await exec(args.prod ? "rimraf ./dist-prod" : null, args.dev ? "rimraf ./dist-dev" : null);
}
}
}
};
cmd("clean")
.desc("clean the project")
.args({
prod: flag(),
dev: flag()
})
.argsDesc({
prod: "production clean",
dev: "dev clean"
})
.run(async (exec, {prod, desc}) => {
await exec(prod ? "rimraf ./dist-prod" : null, dev ? "rimraf ./dist-dev" : null);
});
```

@@ -140,21 +119,25 @@

js
```ts
import { cmd } from "makfy";
// or
const { cmd } = require("makfy");
```js
module.exports = {
commands: {
build: {
run: async(exec) => {
await exec(
'@clean',
{ _: 'clean' }, // same as above
... // whatever commands go next
);
}
}
clean: {
...
}
}
};
cmd("build")
.run(async (exec) => {
await exec(
"@clean",
{ _: "clean" }, // same as above
... // whatever commands go next
);
});
// shorter version
cmd("build")
.run(
"@clean",
{ _: 'clean' }, // same as above
... // whatever commands go next
);
cmd("clean")...
```

@@ -164,21 +147,25 @@

js
```ts
import { cmd } from "makfy";
// or
const { cmd } = require("makfy");
```js
module.exports = {
commands: {
build: {
run: async(exec) => {
await exec(
'@clean --dev --prod',
{ _: 'clean', args: { dev: true, prod: true }}, // same as above
... // whatever commands go next
);
}
}
clean: {
...
}
}
};
cmd("build")
.run(async (exec) => {
await exec(
"@clean --dev --prod",
{ _: "clean", args: { dev: true, prod: true }}, // same as above
... // whatever commands go next
);
});
// shorter version
cmd("build")
.run(
"@clean --dev --prod",
{ _: "clean", args: { dev: true, prod: true }}, // same as above
... // whatever commands go next
);
cmd("clean")...
```

@@ -189,67 +176,69 @@

js
```ts
import { cmd, getFileChanges } from "makfy";
// or
const { cmd, getFileChanges } = require("makfy");
```js
module.exports = {
commands: {
compile: {
run: async (exec, args, utils) => {
const delta = await utils.getFileChanges("typescript", ["./src/**/*.ts", "./src/**/*.tsx"]);
cmd("compile")
.run(async (exec) => {
const delta = await getFileChanges("typescript", ["./src/**/*.ts", "./src/**/*.tsx"]);
if (delta.hasChanges) {
await exec(
// here you would remove all target files generated by this step
// then compile new target files
"tsc -p ."
// additionally you could even only run the compiler over delta.added + delta.modified files
);
}
}
if (delta.hasChanges) {
await exec(
// here you would remove all target files generated by this step
// then compile new target files
"tsc -p ."
// additionally you could even only run the compiler over delta.added + delta.modified files
);
}
}
};
});
```
## Documentation
### `cmd` short syntax
The basic structure of a `makfyfile.(js|ts)` is as follows:
If your command doesn't need any to access any arguments then you can use the `cmd("commandName").run(...commands)` function to make it shorter to write:
js
```ts
import { cmd } from "makfy";
// or
const { cmd } = require("makfy");
```js
module.exports = {
commands: {
[commandName]: {
run: async(exec, args, utils) => Promise<void>,
desc?: string,
args?: {
[argName]: ArgDefinition
},
internal?: boolean
} | run(...commandsToRun)
},
dependencies?: string[],
options?: Options
};
cmd("clean")
.desc("cleans stuff")
.run(
// running sequentially
"rimraf ./dist-a",
"rimraf ./dist-b",
// and these run after the other ones too, but in parallel!
["rimraf ./dist-c", "rimraf ./dist-d"]
);
```
ts
## Documentation
The basic structure of a `makfyfile.(js|ts)` is as follows:
```ts
import { command, makfyConfig } from "makfy";
import { cmd, setDependencies, setOptions, flag, choice, str } from "makfy";
// or
const { cmd, setDepenencies, setOptions, flag, choice, str } = require("makfy");
export default makfyConfig({
commands: commands({
[commandName]: command({
run: async(exec, args, utils) => Promise<void>,
desc?: string,
args?: {
[argName]: ArgDefinition
},
internal?: boolean
}) | run(...commandsToRun)
}),
dependencies?: string[],
options?: Options
});
cmd("commandName")
.desc?("command description")
.args?({
[argName]:
| flag()
| choice(["option1", "option2", "default"?])
| str("default"?)
})
.argsDesc?({
[argName]: "arg description"
})
// one of these two
.run(async (exec, args) => {...})
.run("cmd1", "cmd2", ...)
// optionally...
setDependencies(string[] | undefined);
setOptions(Options);
```

@@ -259,11 +248,11 @@

### `commands: { [commandName]: Command }`
#### `cmd(commandName)`
`commands` is an object with alphanumeric keys, which are the command names.
Adds a command to the list of possible commands. If `commandName` starts with `_` then it will be
considered an internal command that cannot be invoked/listed using the CLI, yet can be run by other
commands.
#### `Command: { run, desc?, args? }`
- **`.run(async (exec, args) => Promise<void>)`**
- **`run: async(exec, args, utils) => Promise<void>`**
> An async function that takes three arguments, `exec`, `args` and `utils`.
> An async function that takes three arguments, `exec` and `args`.
>

@@ -315,12 +304,13 @@ > - **`exec: async(...commands: ExecCommand[]) => Promise<void>`**

> > An object where each property is the argument value as coming from the command line or exec sub-command invocation.
>
> - **`utils: object`**
> > An object with nifty utility methods. See the end of the docs for more info.
- **`desc?: string`**
- **`.run(...commands: ExecCommand[])`**
> An optional property that defines what the command does so it is shown when using `makfy --list`.
> Short syntax to run an argument-less command.
- **`args?: { [argName]: ArgDefinition }`**
- **`.desc?(string)`**
> An optional description that defines what the command does so it is shown when using `makfy --list`.
- **`.args?({ [argName]: ArgDefinition })`**
> An optional object of argument definitions that can be passed to that command using `makfy commandName ...args` and that will be automatically validated.

@@ -330,22 +320,21 @@ >

>
> - **Flag option - `{ type: 'flag' | 'f' }`**
> - **Flag option - `flag()`**
>
> > An optional flag, false by default unless you use `--argName`
>
> - **String option - `{ type: 'string' | 's', byDefault?: string }`**
> - **String option - `str(byDefault?: string)`**
>
> > A string option, required if no `byDefault` is given (`--argName=string`, use quotes if it has to have spaces)
>
> - **Enum option - `{ type: 'enum' | 'e', values: string[], byDefault?: string }`**
> - **Choice (AKA enum) option - `choice(values: string[], byDefault?: string })`**
>
> > An enum option where only `values` are valid, required if no `byDefault` is given (`--argName=string`)
>
> All of them accept a `desc?: string` property in case you want to add a given help string to them.
> > An choice (enum) option where only `values` are valid, required if no `byDefault` is given (`--argName=string`)
- **`internal?: boolean`**
> An optional boolean that indicates that it is an internal command, that is, it should not be shown when listing and cannot be invoked directly from the command line (default: `false`).
- **`.argsDesc?({ [argName]: string })`**
### `dependencies?: string[]`
> An optional object of argument descriptions that will be shown as help when using `makfy --list`.
`dependencies` is only ever needed if you use the `getFilesChangedAsync()` utility method, since it is
### `setDependencies(string[] | undefined)`
`setDependencies` is only ever needed if you use the `getFilesChangedAsync()` utility method, since it is
used to determine when it a clean run is triggered.

@@ -355,5 +344,5 @@ As a rule of thumb, if you do a local require such as `require('./foo/bar')` in your

### `options?: {profile?, showTime?}`
### `setOptions({profile?, showTime?})`
`options` is an optional object that can be exported to set the default of some options:
`setOptions` takes an optional object that can be exported to set the default of some options:

@@ -368,43 +357,10 @@ - `profile: boolean`

### Short syntax
### Utility methods (imported from makfy package)
If your command doesn't need any arguments or any description then you can use the `run` function to make it shorter to write:
- `escape(...parts: string[]): string`
js
```js
const { run } = require('makfy');
...
clean: run(
// running sequentially
"rimraf ./dist-a",
"rimraf ./dist-b",
// and these run after the other ones too, but in parallel!
["rimraf ./dist-c", "rimraf ./dist-d"]
)
```
ts
```ts
import { run } from 'makfy';
...
// note how command() is not needed when using run
clean: run(
// running sequentially
"rimraf ./dist-a",
"rimraf ./dist-b",
// and these run after the other ones too, but in parallel!
["rimraf ./dist-c", "rimraf ./dist-d"]
)
```
### Utility methods (provided by `utils`)
- `escape: (...parts: string[]) => string`
> Escapes all parts of a given shell command.
> For example, `escape('hello', 'to this world')` will return `hello "to this world"` under a cmd shell and `hello 'to this world'` under other shells .
- `fixPath: (path: string, style: 'autodetect' | 'windows' | 'posix') => string`
- `fixPath(path: string, style: 'autodetect' | 'windows' | 'posix'): string`

@@ -414,3 +370,3 @@ > Fixes a path so it is valid under a given OS, by swapping `/` and `\` if needed, plus converting `c:\...` to `/c/...` in mingw in windows.

- `setEnvVar: (name: string, value: string | undefined) => string`
- `setEnvVar(name: string, value: string | undefined): string`

@@ -420,3 +376,3 @@ > Returns a command string that can be used inside `exec` to set/clear an environment variable.

- `expandGlobsAsync: async (globPatterns: string[]) => Promise<string[]>`
- `async expandGlobsAsync(globPatterns: string[]): Promise<string[]>`

@@ -426,3 +382,3 @@ > Expand one or more glob patterns into and array of single files. Note that if the glob pattern starts with `'!!'` then matched files will be removed from previous glob pattern results rather than added.

- `getFileChangesAsync: async (contextName: string, globPatterns: string[] | string, options: { log = true }) => Promise<GetFileChangesResult>`
- `async getFileChangesAsync(contextName: string, globPatterns: string[] | string, options: { log = true }): Promise<GetFileChangesResult>`

@@ -454,3 +410,3 @@ > Returns an object which includes the changes to the given files (given a certain context) since the last successful run.

- `cleanCache: () => void`
- `cleanCache(): void`

@@ -489,3 +445,3 @@ > Cleans the `.makfy-cache` folder. Use it if you want to make sure all next calls to `getFileChangesAsync` work as if it was a clean run.

- _Set/unset an environment variable:_ Just invoke `utils.setEnvVar` inside an `exec` call. Alternatively use [cross-env](https://www.npmjs.com/package/cross-env).
- _Set/unset an environment variable:_ Just invoke `setEnvVar` inside an `exec` call. Alternatively use [cross-env](https://www.npmjs.com/package/cross-env).
- _Delete files/directories:_ [rimraf](https://www.npmjs.com/package/rimraf)

@@ -506,2 +462,2 @@ - _Copy files/directories:_ [ncp](https://www.npmjs.com/package/ncp)

**Note:** In unix style shells you need to export the variable for it to be tracked (e.g. `export NODE_ENV=production`). Consider using `utils.setEnvVar`, which does this for you.
**Note:** In unix style shells you need to export the variable for it to be tracked (e.g. `export NODE_ENV=production`). Consider using `setEnvVar`, which does this for you.

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc