Comparing version 0.0.9 to 0.0.10
@@ -10,4 +10,10 @@ 'use strict'; | ||
/** | ||
* Defines a parsed argument. | ||
* Captures the argument name if it contains `<` and `>` to signify the argument is required. | ||
* @type {RegExp} | ||
*/ | ||
const nameRegExp = /^\s*(?:<(.+)>|\[(.+)\])\s*$/; | ||
/** | ||
* Defines a argument. | ||
*/ | ||
class Argument { | ||
@@ -17,14 +23,18 @@ /** | ||
* | ||
* @param {Object} [params] - Various parameters. | ||
* @param {String} [params.desc] - The description of the argument used in the help display. | ||
* @param {String|Object} [nameOrParams] - Various parameters. If value is a `String`, then see | ||
* `params.name` below for usage. | ||
* @param {Function} [params.callback] - ????????????????????????????? | ||
* @param {String} [params.desc] - The description of the argument used in the help output. | ||
* @param {Boolean} [params.hidden=false] - When `true`, the argument is not displayed on the | ||
* help screen or auto-suggest. | ||
* @param {String} [params.name] - The name of the argument. | ||
* @param {String} [params.name] - The name of the argument. If the name is wrapped in angle | ||
* brackets (`<`, `>`), then the brackets are trimmed off and the argument is flagged as | ||
* required (unless `params.required` is explicitly set to `false`). If the name is wrapped in | ||
* square brackets (`[`, `]`), then the brackets are trimmed off. | ||
* @param {Boolean} [params.regex] - A regular expression used to validate the value. | ||
* @param {Boolean} [params.required] - Marks the option value as required. | ||
* @param {String|Array.<String>} [params.type] - The argument type to coerce the data type | ||
* into. | ||
* @param {Boolean} [params.required=false] - Marks the option value as required. | ||
* @param {String} [params.type] - The argument type to coerce the data type into. | ||
* @access public | ||
*/ | ||
constructor(params) { | ||
constructor(nameOrParams) { | ||
/* | ||
@@ -35,14 +45,26 @@ { name: 'path', required: true, regex: /^\//, desc: 'the path to request' }, | ||
if (!params) { | ||
params = {}; | ||
} | ||
let params = nameOrParams; | ||
if (typeof params === 'string') { | ||
if (typeof nameOrParams === 'string') { | ||
params = { | ||
name: params | ||
name: nameOrParams | ||
}; | ||
} else if (typeof params !== 'object' || Array.isArray(params)) { | ||
} else if (!nameOrParams) { | ||
params = {}; | ||
} else if (typeof nameOrParams !== 'object' || Array.isArray(nameOrParams)) { | ||
throw new TypeError('Expected params to be an object'); | ||
} | ||
if (!params.name || typeof params.name !== 'string') { | ||
throw TypeError('Expected argument name to be a non-empty string'); | ||
} | ||
const m = params.name.match(nameRegExp); | ||
if (m) { | ||
if (params.required === undefined && m[1]) { | ||
params.required = true; | ||
} | ||
params.name = (m[1] || m[2]).trim(); | ||
} | ||
Object.assign(this, params); | ||
@@ -84,2 +106,2 @@ | ||
exports.default = Argument; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFyZ3VtZW50LmpzIl0sIm5hbWVzIjpbIkFyZ3VtZW50IiwiY29uc3RydWN0b3IiLCJwYXJhbXMiLCJuYW1lIiwiQXJyYXkiLCJpc0FycmF5IiwiVHlwZUVycm9yIiwiT2JqZWN0IiwiYXNzaWduIiwiaGlkZGVuIiwicmVxdWlyZWQiLCJ0eXBlIiwidHJhbnNmb3JtIiwidmFsdWUiLCJtaW4iLCJFcnJvciIsIm1heCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0FBRUE7OztBQUdlLE1BQU1BLFFBQU4sQ0FBZTtBQUM3Qjs7Ozs7Ozs7Ozs7Ozs7QUFjQUMsYUFBWUMsTUFBWixFQUFvQjtBQUNuQjs7Ozs7QUFLQSxNQUFJLENBQUNBLE1BQUwsRUFBYTtBQUNaQSxZQUFTLEVBQVQ7QUFDQTs7QUFFRCxNQUFJLE9BQU9BLE1BQVAsS0FBa0IsUUFBdEIsRUFBZ0M7QUFDL0JBLFlBQVM7QUFDUkMsVUFBTUQ7QUFERSxJQUFUO0FBR0EsR0FKRCxNQUlPLElBQUksT0FBT0EsTUFBUCxLQUFrQixRQUFsQixJQUE4QkUsTUFBTUMsT0FBTixDQUFjSCxNQUFkLENBQWxDLEVBQXlEO0FBQy9ELFNBQU0sSUFBSUksU0FBSixDQUFjLGlDQUFkLENBQU47QUFDQTs7QUFFREMsU0FBT0MsTUFBUCxDQUFjLElBQWQsRUFBb0JOLE1BQXBCOztBQUVBOztBQUVBLE9BQUtPLE1BQUwsR0FBZ0IsQ0FBQyxDQUFDUCxPQUFPTyxNQUF6QjtBQUNBLE9BQUtDLFFBQUwsR0FBZ0IsQ0FBQyxDQUFDUixPQUFPUSxRQUF6QjtBQUNBLE9BQUtDLElBQUwsR0FBZ0Isc0JBQVVULE9BQU9TLElBQWpCLEVBQXVCLFFBQXZCLENBQWhCO0FBQ0E7O0FBRUQ7Ozs7Ozs7QUFPQUMsV0FBVUMsS0FBVixFQUFpQjtBQUNoQkEsVUFBUSwyQkFBZUEsS0FBZixFQUFzQixLQUFLRixJQUEzQixDQUFSOztBQUVBLFVBQVEsS0FBS0EsSUFBYjtBQUNDLFFBQUssYUFBTDtBQUNBLFFBQUssS0FBTDtBQUNBLFFBQUssUUFBTDtBQUNDLFFBQUksS0FBS0csR0FBTCxLQUFhLElBQWIsSUFBcUJELFFBQVEsS0FBS0MsR0FBdEMsRUFBMkM7QUFDMUMsV0FBTSxJQUFJQyxLQUFKLENBQVcsMENBQXlDLEtBQUtELEdBQUksRUFBN0QsQ0FBTjtBQUNBO0FBQ0QsUUFBSSxLQUFLRSxHQUFMLEtBQWEsSUFBYixJQUFxQkgsUUFBUSxLQUFLRyxHQUF0QyxFQUEyQztBQUMxQyxXQUFNLElBQUlELEtBQUosQ0FBVyx1Q0FBc0MsS0FBS0MsR0FBSSxFQUExRCxDQUFOO0FBQ0E7QUFDRDtBQVZGOztBQWFBLFNBQU9ILEtBQVA7QUFDQTtBQWxFNEI7a0JBQVRiLFEiLCJmaWxlIjoiYXJndW1lbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjaGVja1R5cGUsIHRyYW5zZm9ybVZhbHVlIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogRGVmaW5lcyBhIHBhcnNlZCBhcmd1bWVudC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXJndW1lbnQge1xuXHQvKipcblx0ICogQ3JlYXRlcyBhbiBhcmd1bWVudCBkZXNjcmlwdG9yLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gW3BhcmFtc10gLSBWYXJpb3VzIHBhcmFtZXRlcnMuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbcGFyYW1zLmRlc2NdIC0gVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBhcmd1bWVudCB1c2VkIGluIHRoZSBoZWxwIGRpc3BsYXkuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW3BhcmFtcy5oaWRkZW49ZmFsc2VdIC0gV2hlbiBgdHJ1ZWAsIHRoZSBhcmd1bWVudCBpcyBub3QgZGlzcGxheWVkIG9uIHRoZVxuXHQgKiBoZWxwIHNjcmVlbiBvciBhdXRvLXN1Z2dlc3QuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbcGFyYW1zLm5hbWVdIC0gVGhlIG5hbWUgb2YgdGhlIGFyZ3VtZW50LlxuXHQgKiBAcGFyYW0ge0Jvb2xlYW59IFtwYXJhbXMucmVnZXhdIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gdXNlZCB0byB2YWxpZGF0ZSB0aGUgdmFsdWUuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW3BhcmFtcy5yZXF1aXJlZF0gLSBNYXJrcyB0aGUgb3B0aW9uIHZhbHVlIGFzIHJlcXVpcmVkLlxuXHQgKiBAcGFyYW0ge1N0cmluZ3xBcnJheS48U3RyaW5nPn0gW3BhcmFtcy50eXBlXSAtIFRoZSBhcmd1bWVudCB0eXBlIHRvIGNvZXJjZSB0aGUgZGF0YSB0eXBlXG5cdCAqIGludG8uXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRjb25zdHJ1Y3RvcihwYXJhbXMpIHtcblx0XHQvKlxuXHRcdHsgbmFtZTogJ3BhdGgnLCByZXF1aXJlZDogdHJ1ZSwgcmVnZXg6IC9eXFwvLywgZGVzYzogJ3RoZSBwYXRoIHRvIHJlcXVlc3QnIH0sXG5cdFx0eyBuYW1lOiAnanNvbicsIHR5cGU6ICdqc29uJywgZGVzYzogJ2FuIG9wdGlvbiBKU09OIHBheWxvYWQgdG8gc2VuZCcgfVxuXHRcdCovXG5cblx0XHRpZiAoIXBhcmFtcykge1xuXHRcdFx0cGFyYW1zID0ge307XG5cdFx0fVxuXG5cdFx0aWYgKHR5cGVvZiBwYXJhbXMgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRwYXJhbXMgPSB7XG5cdFx0XHRcdG5hbWU6IHBhcmFtc1xuXHRcdFx0fTtcblx0XHR9IGVsc2UgaWYgKHR5cGVvZiBwYXJhbXMgIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkocGFyYW1zKSkge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgcGFyYW1zIHRvIGJlIGFuIG9iamVjdCcpO1xuXHRcdH1cblxuXHRcdE9iamVjdC5hc3NpZ24odGhpcywgcGFyYW1zKTtcblxuXHRcdC8vIFRPRE86IHBhcmFtcy5yZWdleFxuXG5cdFx0dGhpcy5oaWRkZW4gICA9ICEhcGFyYW1zLmhpZGRlbjtcblx0XHR0aGlzLnJlcXVpcmVkID0gISFwYXJhbXMucmVxdWlyZWQ7XG5cdFx0dGhpcy50eXBlICAgICA9IGNoZWNrVHlwZShwYXJhbXMudHlwZSwgJ3N0cmluZycpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRyYW5zZm9ybXMgdGhlIGdpdmVuIGFyZ3VtZW50IHZhbHVlIGJhc2VkIG9uIGl0cyB0eXBlLlxuXHQgKlxuXHQgKiBAcGFyYW0geyp9IHZhbHVlIC0gVGhlIHZhbHVlIHRvIHRyYW5zZm9ybS5cblx0ICogQHJldHVybnMgeyp9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHR0cmFuc2Zvcm0odmFsdWUpIHtcblx0XHR2YWx1ZSA9IHRyYW5zZm9ybVZhbHVlKHZhbHVlLCB0aGlzLnR5cGUpO1xuXG5cdFx0c3dpdGNoICh0aGlzLnR5cGUpIHtcblx0XHRcdGNhc2UgJ3Bvc2l0aXZlSW50Jzpcblx0XHRcdGNhc2UgJ2ludCc6XG5cdFx0XHRjYXNlICdudW1iZXInOlxuXHRcdFx0XHRpZiAodGhpcy5taW4gIT09IG51bGwgJiYgdmFsdWUgPCB0aGlzLm1pbikge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihgVmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJHt0aGlzLm1pbn1gKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAodGhpcy5tYXggIT09IG51bGwgJiYgdmFsdWUgPiB0aGlzLm1heCkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihgVmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJHt0aGlzLm1heH1gKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cblx0XHRyZXR1cm4gdmFsdWU7XG5cdH1cbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFyZ3VtZW50LmpzIl0sIm5hbWVzIjpbIm5hbWVSZWdFeHAiLCJBcmd1bWVudCIsImNvbnN0cnVjdG9yIiwibmFtZU9yUGFyYW1zIiwicGFyYW1zIiwibmFtZSIsIkFycmF5IiwiaXNBcnJheSIsIlR5cGVFcnJvciIsIm0iLCJtYXRjaCIsInJlcXVpcmVkIiwidW5kZWZpbmVkIiwidHJpbSIsIk9iamVjdCIsImFzc2lnbiIsImhpZGRlbiIsInR5cGUiLCJ0cmFuc2Zvcm0iLCJ2YWx1ZSIsIm1pbiIsIkVycm9yIiwibWF4Il0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFFQTs7OztBQUlBLE1BQU1BLGFBQWEsNkJBQW5COztBQUVBOzs7QUFHZSxNQUFNQyxRQUFOLENBQWU7QUFDN0I7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCQUMsYUFBWUMsWUFBWixFQUEwQjtBQUN6Qjs7Ozs7QUFLQSxNQUFJQyxTQUFTRCxZQUFiOztBQUVBLE1BQUksT0FBT0EsWUFBUCxLQUF3QixRQUE1QixFQUFzQztBQUNyQ0MsWUFBUztBQUNSQyxVQUFNRjtBQURFLElBQVQ7QUFJQSxHQUxELE1BS08sSUFBSSxDQUFDQSxZQUFMLEVBQW1CO0FBQ3pCQyxZQUFTLEVBQVQ7QUFFQSxHQUhNLE1BR0EsSUFBSSxPQUFPRCxZQUFQLEtBQXdCLFFBQXhCLElBQW9DRyxNQUFNQyxPQUFOLENBQWNKLFlBQWQsQ0FBeEMsRUFBcUU7QUFDM0UsU0FBTSxJQUFJSyxTQUFKLENBQWMsaUNBQWQsQ0FBTjtBQUNBOztBQUVELE1BQUksQ0FBQ0osT0FBT0MsSUFBUixJQUFnQixPQUFPRCxPQUFPQyxJQUFkLEtBQXVCLFFBQTNDLEVBQXFEO0FBQ3BELFNBQU1HLFVBQVUsaURBQVYsQ0FBTjtBQUNBOztBQUVELFFBQU1DLElBQUlMLE9BQU9DLElBQVAsQ0FBWUssS0FBWixDQUFrQlYsVUFBbEIsQ0FBVjtBQUNBLE1BQUlTLENBQUosRUFBTztBQUNOLE9BQUlMLE9BQU9PLFFBQVAsS0FBb0JDLFNBQXBCLElBQWlDSCxFQUFFLENBQUYsQ0FBckMsRUFBMkM7QUFDMUNMLFdBQU9PLFFBQVAsR0FBa0IsSUFBbEI7QUFDQTtBQUNEUCxVQUFPQyxJQUFQLEdBQWMsQ0FBQ0ksRUFBRSxDQUFGLEtBQVFBLEVBQUUsQ0FBRixDQUFULEVBQWVJLElBQWYsRUFBZDtBQUNBOztBQUVEQyxTQUFPQyxNQUFQLENBQWMsSUFBZCxFQUFvQlgsTUFBcEI7O0FBRUE7O0FBRUEsT0FBS1ksTUFBTCxHQUFnQixDQUFDLENBQUNaLE9BQU9ZLE1BQXpCO0FBQ0EsT0FBS0wsUUFBTCxHQUFnQixDQUFDLENBQUNQLE9BQU9PLFFBQXpCO0FBQ0EsT0FBS00sSUFBTCxHQUFnQixzQkFBVWIsT0FBT2EsSUFBakIsRUFBdUIsUUFBdkIsQ0FBaEI7QUFDQTs7QUFFRDs7Ozs7OztBQU9BQyxXQUFVQyxLQUFWLEVBQWlCO0FBQ2hCQSxVQUFRLDJCQUFlQSxLQUFmLEVBQXNCLEtBQUtGLElBQTNCLENBQVI7O0FBRUEsVUFBUSxLQUFLQSxJQUFiO0FBQ0MsUUFBSyxhQUFMO0FBQ0EsUUFBSyxLQUFMO0FBQ0EsUUFBSyxRQUFMO0FBQ0MsUUFBSSxLQUFLRyxHQUFMLEtBQWEsSUFBYixJQUFxQkQsUUFBUSxLQUFLQyxHQUF0QyxFQUEyQztBQUMxQyxXQUFNLElBQUlDLEtBQUosQ0FBVywwQ0FBeUMsS0FBS0QsR0FBSSxFQUE3RCxDQUFOO0FBQ0E7QUFDRCxRQUFJLEtBQUtFLEdBQUwsS0FBYSxJQUFiLElBQXFCSCxRQUFRLEtBQUtHLEdBQXRDLEVBQTJDO0FBQzFDLFdBQU0sSUFBSUQsS0FBSixDQUFXLHVDQUFzQyxLQUFLQyxHQUFJLEVBQTFELENBQU47QUFDQTtBQUNEO0FBVkY7O0FBYUEsU0FBT0gsS0FBUDtBQUNBO0FBcEY0QjtrQkFBVGxCLFEiLCJmaWxlIjoiYXJndW1lbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjaGVja1R5cGUsIHRyYW5zZm9ybVZhbHVlIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogQ2FwdHVyZXMgdGhlIGFyZ3VtZW50IG5hbWUgaWYgaXQgY29udGFpbnMgYDxgIGFuZCBgPmAgdG8gc2lnbmlmeSB0aGUgYXJndW1lbnQgaXMgcmVxdWlyZWQuXG4gKiBAdHlwZSB7UmVnRXhwfVxuICovXG5jb25zdCBuYW1lUmVnRXhwID0gL15cXHMqKD86PCguKyk+fFxcWyguKylcXF0pXFxzKiQvO1xuXG4vKipcbiAqIERlZmluZXMgYSBhcmd1bWVudC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXJndW1lbnQge1xuXHQvKipcblx0ICogQ3JlYXRlcyBhbiBhcmd1bWVudCBkZXNjcmlwdG9yLlxuXHQgKlxuXHQgKiBAcGFyYW0ge1N0cmluZ3xPYmplY3R9IFtuYW1lT3JQYXJhbXNdIC0gVmFyaW91cyBwYXJhbWV0ZXJzLiBJZiB2YWx1ZSBpcyBhIGBTdHJpbmdgLCB0aGVuIHNlZVxuXHQgKiBgcGFyYW1zLm5hbWVgIGJlbG93IGZvciB1c2FnZS5cblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gW3BhcmFtcy5jYWxsYmFja10gLSA/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/P1xuXHQgKiBAcGFyYW0ge1N0cmluZ30gW3BhcmFtcy5kZXNjXSAtIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgYXJndW1lbnQgdXNlZCBpbiB0aGUgaGVscCBvdXRwdXQuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW3BhcmFtcy5oaWRkZW49ZmFsc2VdIC0gV2hlbiBgdHJ1ZWAsIHRoZSBhcmd1bWVudCBpcyBub3QgZGlzcGxheWVkIG9uIHRoZVxuXHQgKiBoZWxwIHNjcmVlbiBvciBhdXRvLXN1Z2dlc3QuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbcGFyYW1zLm5hbWVdIC0gVGhlIG5hbWUgb2YgdGhlIGFyZ3VtZW50LiBJZiB0aGUgbmFtZSBpcyB3cmFwcGVkIGluIGFuZ2xlXG5cdCAqIGJyYWNrZXRzIChgPGAsIGA+YCksIHRoZW4gdGhlIGJyYWNrZXRzIGFyZSB0cmltbWVkIG9mZiBhbmQgdGhlIGFyZ3VtZW50IGlzIGZsYWdnZWQgYXNcblx0ICogcmVxdWlyZWQgKHVubGVzcyBgcGFyYW1zLnJlcXVpcmVkYCBpcyBleHBsaWNpdGx5IHNldCB0byBgZmFsc2VgKS4gSWYgdGhlIG5hbWUgaXMgd3JhcHBlZCBpblxuXHQgKiBzcXVhcmUgYnJhY2tldHMgKGBbYCwgYF1gKSwgdGhlbiB0aGUgYnJhY2tldHMgYXJlIHRyaW1tZWQgb2ZmLlxuXHQgKiBAcGFyYW0ge0Jvb2xlYW59IFtwYXJhbXMucmVnZXhdIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gdXNlZCB0byB2YWxpZGF0ZSB0aGUgdmFsdWUuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW3BhcmFtcy5yZXF1aXJlZD1mYWxzZV0gLSBNYXJrcyB0aGUgb3B0aW9uIHZhbHVlIGFzIHJlcXVpcmVkLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW3BhcmFtcy50eXBlXSAtIFRoZSBhcmd1bWVudCB0eXBlIHRvIGNvZXJjZSB0aGUgZGF0YSB0eXBlIGludG8uXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRjb25zdHJ1Y3RvcihuYW1lT3JQYXJhbXMpIHtcblx0XHQvKlxuXHRcdHsgbmFtZTogJ3BhdGgnLCByZXF1aXJlZDogdHJ1ZSwgcmVnZXg6IC9eXFwvLywgZGVzYzogJ3RoZSBwYXRoIHRvIHJlcXVlc3QnIH0sXG5cdFx0eyBuYW1lOiAnanNvbicsIHR5cGU6ICdqc29uJywgZGVzYzogJ2FuIG9wdGlvbiBKU09OIHBheWxvYWQgdG8gc2VuZCcgfVxuXHRcdCovXG5cblx0XHRsZXQgcGFyYW1zID0gbmFtZU9yUGFyYW1zO1xuXG5cdFx0aWYgKHR5cGVvZiBuYW1lT3JQYXJhbXMgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRwYXJhbXMgPSB7XG5cdFx0XHRcdG5hbWU6IG5hbWVPclBhcmFtc1xuXHRcdFx0fTtcblxuXHRcdH0gZWxzZSBpZiAoIW5hbWVPclBhcmFtcykge1xuXHRcdFx0cGFyYW1zID0ge307XG5cblx0XHR9IGVsc2UgaWYgKHR5cGVvZiBuYW1lT3JQYXJhbXMgIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkobmFtZU9yUGFyYW1zKSkge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgcGFyYW1zIHRvIGJlIGFuIG9iamVjdCcpO1xuXHRcdH1cblxuXHRcdGlmICghcGFyYW1zLm5hbWUgfHwgdHlwZW9mIHBhcmFtcy5uYW1lICE9PSAnc3RyaW5nJykge1xuXHRcdFx0dGhyb3cgVHlwZUVycm9yKCdFeHBlY3RlZCBhcmd1bWVudCBuYW1lIHRvIGJlIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuXHRcdH1cblxuXHRcdGNvbnN0IG0gPSBwYXJhbXMubmFtZS5tYXRjaChuYW1lUmVnRXhwKTtcblx0XHRpZiAobSkge1xuXHRcdFx0aWYgKHBhcmFtcy5yZXF1aXJlZCA9PT0gdW5kZWZpbmVkICYmIG1bMV0pIHtcblx0XHRcdFx0cGFyYW1zLnJlcXVpcmVkID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdHBhcmFtcy5uYW1lID0gKG1bMV0gfHwgbVsyXSkudHJpbSgpO1xuXHRcdH1cblxuXHRcdE9iamVjdC5hc3NpZ24odGhpcywgcGFyYW1zKTtcblxuXHRcdC8vIFRPRE86IHBhcmFtcy5yZWdleFxuXG5cdFx0dGhpcy5oaWRkZW4gICA9ICEhcGFyYW1zLmhpZGRlbjtcblx0XHR0aGlzLnJlcXVpcmVkID0gISFwYXJhbXMucmVxdWlyZWQ7XG5cdFx0dGhpcy50eXBlICAgICA9IGNoZWNrVHlwZShwYXJhbXMudHlwZSwgJ3N0cmluZycpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRyYW5zZm9ybXMgdGhlIGdpdmVuIGFyZ3VtZW50IHZhbHVlIGJhc2VkIG9uIGl0cyB0eXBlLlxuXHQgKlxuXHQgKiBAcGFyYW0geyp9IHZhbHVlIC0gVGhlIHZhbHVlIHRvIHRyYW5zZm9ybS5cblx0ICogQHJldHVybnMgeyp9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHR0cmFuc2Zvcm0odmFsdWUpIHtcblx0XHR2YWx1ZSA9IHRyYW5zZm9ybVZhbHVlKHZhbHVlLCB0aGlzLnR5cGUpO1xuXG5cdFx0c3dpdGNoICh0aGlzLnR5cGUpIHtcblx0XHRcdGNhc2UgJ3Bvc2l0aXZlSW50Jzpcblx0XHRcdGNhc2UgJ2ludCc6XG5cdFx0XHRjYXNlICdudW1iZXInOlxuXHRcdFx0XHRpZiAodGhpcy5taW4gIT09IG51bGwgJiYgdmFsdWUgPCB0aGlzLm1pbikge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihgVmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJHt0aGlzLm1pbn1gKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAodGhpcy5tYXggIT09IG51bGwgJiYgdmFsdWUgPiB0aGlzLm1heCkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihgVmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJHt0aGlzLm1heH1gKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cblx0XHRyZXR1cm4gdmFsdWU7XG5cdH1cbn1cbiJdfQ== |
118
dist/cli.js
@@ -7,6 +7,2 @@ 'use strict'; | ||
var _arguments = require('./arguments'); | ||
var _arguments2 = _interopRequireDefault(_arguments); | ||
var _command = require('./command'); | ||
@@ -20,19 +16,13 @@ | ||
var _help = require('./help'); | ||
var _debug2 = require('./debug'); | ||
var _help2 = _interopRequireDefault(_help); | ||
var _debug3 = _interopRequireDefault(_debug2); | ||
var _logger2 = require('./logger'); | ||
var _stream = require('stream'); | ||
var _logger3 = _interopRequireDefault(_logger2); | ||
var _snooplogg = require('snooplogg'); | ||
var _snooplogg2 = _interopRequireDefault(_snooplogg); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
var _logger = (0, _logger3.default)('cli-kit:cli'); | ||
var _debug = (0, _debug3.default)('cli-kit:cli'); | ||
const log = _logger.log; | ||
const log = _debug.log; | ||
@@ -43,3 +33,3 @@ /** | ||
class CLI { | ||
class CLI extends _context2.default { | ||
/** | ||
@@ -52,10 +42,15 @@ * Created a CLI instance. | ||
* @param {Object} [opts.commands] - A map of command names to command descriptors. | ||
* @param {Boolean} [opts.default='help'] - The default command to execute. | ||
* @param {Boolean} [opts.help=true] - When `true`, enabled the built-in help command. | ||
* @param {Number} [opts.helpExitCode=1] - The exit code to return when the help command is | ||
* @param {Boolean} [opts.defaultCommand] - The default command to execute. | ||
* @param {String} [params.desc] - The description of the CLI displayed in the help output. | ||
* @param {Boolean} [opts.help=false] - When `true`, enables the built-in help command. | ||
* @param {Number} [opts.helpExitCode] - The exit code to return when the help command is | ||
* finished. | ||
* @param {String} [opts.name] - The name of the program. | ||
* @param {Array<Object>|Object} [opts.options] - An array of options. | ||
* @param {Writable} [opts.out=process.stdout] - A stream to write output such as the help | ||
* screen. | ||
* @param {String} [opts.title='Global'] - The title for the global context. | ||
* @param {String} [opts.version] - The program version. | ||
* @param {Number} [opts.width] - The number of characters to wrap long descriptions. Defaults | ||
* to `process.stdout.columns` if exists, otherwise `100`. Must be at least `40`. | ||
* @access public | ||
@@ -70,35 +65,50 @@ */ | ||
opts.out || (opts.out = process.stdout); | ||
if (!(opts.out instanceof _stream.Writable)) { | ||
throw new TypeError('Expected output stream to be a writable stream'); | ||
} | ||
if (opts.helpExitCode !== undefined && typeof opts.helpExitCode !== 'number') { | ||
throw new TypeError('Expected help exit code to be a number'); | ||
} | ||
if (opts.width !== undefined && typeof opts.width !== 'number') { | ||
throw new TypeError('Expected width to be a number'); | ||
} | ||
opts.name || (opts.name = 'program'); | ||
opts.title || (opts.title = 'Global'); | ||
this.ctx = new _context2.default(opts); | ||
super(opts); | ||
// set the default command | ||
this.default = opts.default || 'help'; | ||
this.defaultCommand = opts.defaultCommand; | ||
// context methods | ||
this.argument = this.ctx.argument.bind(this.ctx); | ||
this.command = this.ctx.command.bind(this.ctx); | ||
this.option = this.ctx.option.bind(this.ctx); | ||
// hook emitter methods | ||
this.on = this.ctx.on.bind(this.ctx); | ||
this.once = this.ctx.once.bind(this.ctx); | ||
this.off = this.ctx.off.bind(this.ctx); | ||
// add the built-in help | ||
this.help = opts.help !== false; | ||
this.help = !!opts.help; | ||
if (this.help) { | ||
if (!this.ctx.commands.help) { | ||
this.command((0, _help2.default)(opts.helpExitCode)); | ||
if (this.defaultCommand === undefined) { | ||
this.defaultCommand = 'help'; | ||
} | ||
if (!this.ctx.lookup.long.help) { | ||
this.option('-h, --help'); | ||
} | ||
this.command('help', { | ||
hidden: true, | ||
action(_ref) { | ||
let contexts = _ref.contexts; | ||
// the first context is the help command, so just skip to the second context | ||
contexts[1].renderHelp(opts.out); | ||
if (opts.helpExitCode !== undefined) { | ||
process.exit(opts.helpExitCode); | ||
} | ||
} | ||
}); | ||
this.option('-h, --help', 'displays the help screen'); | ||
} | ||
if (opts.version && !this.ctx.lookup.long.version) { | ||
if (opts.version && !this.lookup.short.v && !this.lookup.long.version) { | ||
this.option('-v, --version', { | ||
callback() { | ||
console.log(opts.version); | ||
opts.out.write(`${opts.version}\n`); | ||
process.exit(0); | ||
@@ -114,22 +124,22 @@ }, | ||
* | ||
* @param {Array} [args] - An array of arguments to parse. If not specified, it defaults to the | ||
* `process.argv` starting with the 3rd argument. | ||
* @returns {Promise} | ||
* @param {Array.<String>} [unparsedArgs] - An array of arguments to parse. If not specified, it | ||
* defaults to the `process.argv` starting with the 3rd argument. | ||
* @returns {Promise.<Arguments>} | ||
* @access public | ||
*/ | ||
async exec(args) { | ||
if (args && !Array.isArray(args)) { | ||
async exec(unparsedArgs) { | ||
if (unparsedArgs && !Array.isArray(unparsedArgs)) { | ||
throw new TypeError('Expected args to be an array'); | ||
} | ||
const $args = await this.ctx.parse(args ? args.slice() : process.argv.slice(2)); | ||
const $args = await this.parse(unparsedArgs ? unparsedArgs.slice() : process.argv.slice(2)); | ||
let cmd = this.help && $args.argv.help ? 'help' : $args.contexts[0]; | ||
let cmd = $args.contexts[0]; | ||
// if there was no command found, then set the default command | ||
if (!(cmd instanceof _command2.default)) { | ||
cmd = this.ctx.commands[this.default]; | ||
if (cmd) { | ||
$args.contexts.unshift(cmd); | ||
} | ||
if (this.help && $args.argv.help) { | ||
cmd = this.commands.help; | ||
$args.contexts.unshift(cmd); | ||
} else if (!(cmd instanceof _command2.default) && this.commands[this.defaultCommand] instanceof _command2.default) { | ||
cmd = this.commands[this.defaultCommand]; | ||
$args.contexts.unshift(cmd); | ||
} | ||
@@ -139,3 +149,3 @@ | ||
if (cmd && typeof cmd.action === 'function') { | ||
return await cmd.action($args); | ||
return (await cmd.action($args)) || $args; | ||
} | ||
@@ -147,2 +157,2 @@ | ||
exports.default = CLI; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsaS5qcyJdLCJuYW1lcyI6WyJsb2ciLCJDTEkiLCJjb25zdHJ1Y3RvciIsIm9wdHMiLCJBcnJheSIsImlzQXJyYXkiLCJUeXBlRXJyb3IiLCJuYW1lIiwidGl0bGUiLCJjdHgiLCJkZWZhdWx0IiwiYXJndW1lbnQiLCJiaW5kIiwiY29tbWFuZCIsIm9wdGlvbiIsIm9uIiwib25jZSIsIm9mZiIsImhlbHAiLCJjb21tYW5kcyIsImhlbHBFeGl0Q29kZSIsImxvb2t1cCIsImxvbmciLCJ2ZXJzaW9uIiwiY2FsbGJhY2siLCJjb25zb2xlIiwicHJvY2VzcyIsImV4aXQiLCJkZXNjIiwiZXhlYyIsImFyZ3MiLCIkYXJncyIsInBhcnNlIiwic2xpY2UiLCJhcmd2IiwiY21kIiwiY29udGV4dHMiLCJ1bnNoaWZ0IiwiYWN0aW9uIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7OztjQUVnQixzQkFBTyxhQUFQLEM7O01BQVJBLEcsV0FBQUEsRzs7QUFFUjs7OztBQUdlLE1BQU1DLEdBQU4sQ0FBVTtBQUN4Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQkFDLGVBQXVCO0FBQUEsTUFBWEMsSUFBVyx1RUFBSixFQUFJOztBQUN0QixNQUFJLE9BQU9BLElBQVAsS0FBZ0IsUUFBaEIsSUFBNEJDLE1BQU1DLE9BQU4sQ0FBY0YsSUFBZCxDQUFoQyxFQUFxRDtBQUNwRCxTQUFNLElBQUlHLFNBQUosQ0FBYyw4Q0FBZCxDQUFOO0FBQ0E7O0FBRURILE9BQUtJLElBQUwsS0FBY0osS0FBS0ksSUFBTCxHQUFZLFNBQTFCO0FBQ0FKLE9BQUtLLEtBQUwsS0FBZUwsS0FBS0ssS0FBTCxHQUFhLFFBQTVCO0FBQ0EsT0FBS0MsR0FBTCxHQUFXLHNCQUFZTixJQUFaLENBQVg7O0FBRUE7QUFDQSxPQUFLTyxPQUFMLEdBQWdCUCxLQUFLTyxPQUFMLElBQWdCLE1BQWhDOztBQUVBO0FBQ0EsT0FBS0MsUUFBTCxHQUFnQixLQUFLRixHQUFMLENBQVNFLFFBQVQsQ0FBa0JDLElBQWxCLENBQXVCLEtBQUtILEdBQTVCLENBQWhCO0FBQ0EsT0FBS0ksT0FBTCxHQUFnQixLQUFLSixHQUFMLENBQVNJLE9BQVQsQ0FBaUJELElBQWpCLENBQXNCLEtBQUtILEdBQTNCLENBQWhCO0FBQ0EsT0FBS0ssTUFBTCxHQUFnQixLQUFLTCxHQUFMLENBQVNLLE1BQVQsQ0FBZ0JGLElBQWhCLENBQXFCLEtBQUtILEdBQTFCLENBQWhCOztBQUVBO0FBQ0EsT0FBS00sRUFBTCxHQUFnQixLQUFLTixHQUFMLENBQVNNLEVBQVQsQ0FBWUgsSUFBWixDQUFpQixLQUFLSCxHQUF0QixDQUFoQjtBQUNBLE9BQUtPLElBQUwsR0FBZ0IsS0FBS1AsR0FBTCxDQUFTTyxJQUFULENBQWNKLElBQWQsQ0FBbUIsS0FBS0gsR0FBeEIsQ0FBaEI7QUFDQSxPQUFLUSxHQUFMLEdBQWdCLEtBQUtSLEdBQUwsQ0FBU1EsR0FBVCxDQUFhTCxJQUFiLENBQWtCLEtBQUtILEdBQXZCLENBQWhCOztBQUVBO0FBQ0EsT0FBS1MsSUFBTCxHQUFZZixLQUFLZSxJQUFMLEtBQWMsS0FBMUI7QUFDQSxNQUFJLEtBQUtBLElBQVQsRUFBZTtBQUNkLE9BQUksQ0FBQyxLQUFLVCxHQUFMLENBQVNVLFFBQVQsQ0FBa0JELElBQXZCLEVBQTZCO0FBQzVCLFNBQUtMLE9BQUwsQ0FBYSxvQkFBS1YsS0FBS2lCLFlBQVYsQ0FBYjtBQUNBOztBQUVELE9BQUksQ0FBQyxLQUFLWCxHQUFMLENBQVNZLE1BQVQsQ0FBZ0JDLElBQWhCLENBQXFCSixJQUExQixFQUFnQztBQUMvQixTQUFLSixNQUFMLENBQVksWUFBWjtBQUNBO0FBQ0Q7O0FBRUQsTUFBSVgsS0FBS29CLE9BQUwsSUFBZ0IsQ0FBQyxLQUFLZCxHQUFMLENBQVNZLE1BQVQsQ0FBZ0JDLElBQWhCLENBQXFCQyxPQUExQyxFQUFtRDtBQUNsRCxRQUFLVCxNQUFMLENBQVksZUFBWixFQUE2QjtBQUM1QlUsZUFBVztBQUNWQyxhQUFRekIsR0FBUixDQUFZRyxLQUFLb0IsT0FBakI7QUFDQUcsYUFBUUMsSUFBUixDQUFhLENBQWI7QUFDQSxLQUoyQjtBQUs1QkMsVUFBTTtBQUxzQixJQUE3QjtBQU9BO0FBQ0Q7O0FBRUQ7Ozs7Ozs7O0FBUUEsT0FBTUMsSUFBTixDQUFXQyxJQUFYLEVBQWlCO0FBQ2hCLE1BQUlBLFFBQVEsQ0FBQzFCLE1BQU1DLE9BQU4sQ0FBY3lCLElBQWQsQ0FBYixFQUFrQztBQUNqQyxTQUFNLElBQUl4QixTQUFKLENBQWMsOEJBQWQsQ0FBTjtBQUNBOztBQUVELFFBQU15QixRQUFRLE1BQU0sS0FBS3RCLEdBQUwsQ0FBU3VCLEtBQVQsQ0FBZUYsT0FBT0EsS0FBS0csS0FBTCxFQUFQLEdBQXNCUCxRQUFRUSxJQUFSLENBQWFELEtBQWIsQ0FBbUIsQ0FBbkIsQ0FBckMsQ0FBcEI7O0FBRUEsTUFBSUUsTUFBTSxLQUFLakIsSUFBTCxJQUFhYSxNQUFNRyxJQUFOLENBQVdoQixJQUF4QixHQUErQixNQUEvQixHQUF3Q2EsTUFBTUssUUFBTixDQUFlLENBQWYsQ0FBbEQ7O0FBRUE7QUFDQSxNQUFJLEVBQUVELGdDQUFGLENBQUosRUFBK0I7QUFDOUJBLFNBQU0sS0FBSzFCLEdBQUwsQ0FBU1UsUUFBVCxDQUFrQixLQUFLVCxPQUF2QixDQUFOO0FBQ0EsT0FBSXlCLEdBQUosRUFBUztBQUNSSixVQUFNSyxRQUFOLENBQWVDLE9BQWYsQ0FBdUJGLEdBQXZCO0FBQ0E7QUFDRDs7QUFFRDtBQUNBLE1BQUlBLE9BQU8sT0FBT0EsSUFBSUcsTUFBWCxLQUFzQixVQUFqQyxFQUE2QztBQUM1QyxVQUFPLE1BQU1ILElBQUlHLE1BQUosQ0FBV1AsS0FBWCxDQUFiO0FBQ0E7O0FBRUQsU0FBT0EsS0FBUDtBQUNBO0FBOUZ1QjtrQkFBSjlCLEciLCJmaWxlIjoiY2xpLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEFyZ3VtZW50cyBmcm9tICcuL2FyZ3VtZW50cyc7XG5pbXBvcnQgQ29tbWFuZCBmcm9tICcuL2NvbW1hbmQnO1xuaW1wb3J0IENvbnRleHQgZnJvbSAnLi9jb250ZXh0JztcbmltcG9ydCBoZWxwIGZyb20gJy4vaGVscCc7XG5pbXBvcnQgbG9nZ2VyIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCBzbm9vcGxvZ2cgZnJvbSAnc25vb3Bsb2dnJztcblxuY29uc3QgeyBsb2cgfSA9IGxvZ2dlcignY2xpLWtpdDpjbGknKTtcblxuLyoqXG4gKiBEZWZpbmVzIGEgQ0xJIGNvbnRleHQgYW5kIGlzIHJlc3BvbnNpYmxlIGZvciBwYXJzaW5nIHRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDTEkge1xuXHQvKipcblx0ICogQ3JlYXRlZCBhIENMSSBpbnN0YW5jZS5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIFZhcmlvdXMgb3B0aW9ucy5cblx0ICogQHBhcmFtIHtBcnJheTxPYmplY3Q+fSBbb3B0cy5hcmdzXSAtIEFuIGFycmF5IG9mIGFyZ3VtZW50cy5cblx0ICogQHBhcmFtIHtCb29sZWFufSBbb3B0cy5jYW1lbENhc2U9dHJ1ZV0gLSBDYW1lbCBjYXNlIG9wdGlvbiBuYW1lcy5cblx0ICogQHBhcmFtIHtPYmplY3R9IFtvcHRzLmNvbW1hbmRzXSAtIEEgbWFwIG9mIGNvbW1hbmQgbmFtZXMgdG8gY29tbWFuZCBkZXNjcmlwdG9ycy5cblx0ICogQHBhcmFtIHtCb29sZWFufSBbb3B0cy5kZWZhdWx0PSdoZWxwJ10gLSBUaGUgZGVmYXVsdCBjb21tYW5kIHRvIGV4ZWN1dGUuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdHMuaGVscD10cnVlXSAtIFdoZW4gYHRydWVgLCBlbmFibGVkIHRoZSBidWlsdC1pbiBoZWxwIGNvbW1hbmQuXG5cdCAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0cy5oZWxwRXhpdENvZGU9MV0gLSBUaGUgZXhpdCBjb2RlIHRvIHJldHVybiB3aGVuIHRoZSBoZWxwIGNvbW1hbmQgaXNcblx0ICogZmluaXNoZWQuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5uYW1lXSAtIFRoZSBuYW1lIG9mIHRoZSBwcm9ncmFtLlxuXHQgKiBAcGFyYW0ge0FycmF5PE9iamVjdD58T2JqZWN0fSBbb3B0cy5vcHRpb25zXSAtIEFuIGFycmF5IG9mIG9wdGlvbnMuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy50aXRsZT0nR2xvYmFsJ10gLSBUaGUgdGl0bGUgZm9yIHRoZSBnbG9iYWwgY29udGV4dC5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnZlcnNpb25dIC0gVGhlIHByb2dyYW0gdmVyc2lvbi5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGNvbnN0cnVjdG9yKG9wdHMgPSB7fSkge1xuXHRcdGlmICh0eXBlb2Ygb3B0cyAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheShvcHRzKSkge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgYXJndW1lbnQgdG8gYmUgYW4gb2JqZWN0IG9yIENvbnRleHQnKTtcblx0XHR9XG5cblx0XHRvcHRzLm5hbWUgfHwgKG9wdHMubmFtZSA9ICdwcm9ncmFtJyk7XG5cdFx0b3B0cy50aXRsZSB8fCAob3B0cy50aXRsZSA9ICdHbG9iYWwnKTtcblx0XHR0aGlzLmN0eCA9IG5ldyBDb250ZXh0KG9wdHMpO1xuXG5cdFx0Ly8gc2V0IHRoZSBkZWZhdWx0IGNvbW1hbmRcblx0XHR0aGlzLmRlZmF1bHQgID0gb3B0cy5kZWZhdWx0IHx8ICdoZWxwJztcblxuXHRcdC8vIGNvbnRleHQgbWV0aG9kc1xuXHRcdHRoaXMuYXJndW1lbnQgPSB0aGlzLmN0eC5hcmd1bWVudC5iaW5kKHRoaXMuY3R4KTtcblx0XHR0aGlzLmNvbW1hbmQgID0gdGhpcy5jdHguY29tbWFuZC5iaW5kKHRoaXMuY3R4KTtcblx0XHR0aGlzLm9wdGlvbiAgID0gdGhpcy5jdHgub3B0aW9uLmJpbmQodGhpcy5jdHgpO1xuXG5cdFx0Ly8gaG9vayBlbWl0dGVyIG1ldGhvZHNcblx0XHR0aGlzLm9uICAgICAgID0gdGhpcy5jdHgub24uYmluZCh0aGlzLmN0eCk7XG5cdFx0dGhpcy5vbmNlICAgICA9IHRoaXMuY3R4Lm9uY2UuYmluZCh0aGlzLmN0eCk7XG5cdFx0dGhpcy5vZmYgICAgICA9IHRoaXMuY3R4Lm9mZi5iaW5kKHRoaXMuY3R4KTtcblxuXHRcdC8vIGFkZCB0aGUgYnVpbHQtaW4gaGVscFxuXHRcdHRoaXMuaGVscCA9IG9wdHMuaGVscCAhPT0gZmFsc2U7XG5cdFx0aWYgKHRoaXMuaGVscCkge1xuXHRcdFx0aWYgKCF0aGlzLmN0eC5jb21tYW5kcy5oZWxwKSB7XG5cdFx0XHRcdHRoaXMuY29tbWFuZChoZWxwKG9wdHMuaGVscEV4aXRDb2RlKSk7XG5cdFx0XHR9XG5cblx0XHRcdGlmICghdGhpcy5jdHgubG9va3VwLmxvbmcuaGVscCkge1xuXHRcdFx0XHR0aGlzLm9wdGlvbignLWgsIC0taGVscCcpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChvcHRzLnZlcnNpb24gJiYgIXRoaXMuY3R4Lmxvb2t1cC5sb25nLnZlcnNpb24pIHtcblx0XHRcdHRoaXMub3B0aW9uKCctdiwgLS12ZXJzaW9uJywge1xuXHRcdFx0XHRjYWxsYmFjaygpIHtcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhvcHRzLnZlcnNpb24pO1xuXHRcdFx0XHRcdHByb2Nlc3MuZXhpdCgwKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0ZGVzYzogJ291dHB1dHMgdGhlIGFwcGNkIHZlcnNpb24nXG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIHRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzIGFuZCBydW5zIHRoZSBjb21tYW5kLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5fSBbYXJnc10gLSBBbiBhcnJheSBvZiBhcmd1bWVudHMgdG8gcGFyc2UuIElmIG5vdCBzcGVjaWZpZWQsIGl0IGRlZmF1bHRzIHRvIHRoZVxuXHQgKiBgcHJvY2Vzcy5hcmd2YCBzdGFydGluZyB3aXRoIHRoZSAzcmQgYXJndW1lbnQuXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgZXhlYyhhcmdzKSB7XG5cdFx0aWYgKGFyZ3MgJiYgIUFycmF5LmlzQXJyYXkoYXJncykpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGFyZ3MgdG8gYmUgYW4gYXJyYXknKTtcblx0XHR9XG5cblx0XHRjb25zdCAkYXJncyA9IGF3YWl0IHRoaXMuY3R4LnBhcnNlKGFyZ3MgPyBhcmdzLnNsaWNlKCkgOiBwcm9jZXNzLmFyZ3Yuc2xpY2UoMikpO1xuXG5cdFx0bGV0IGNtZCA9IHRoaXMuaGVscCAmJiAkYXJncy5hcmd2LmhlbHAgPyAnaGVscCcgOiAkYXJncy5jb250ZXh0c1swXTtcblxuXHRcdC8vIGlmIHRoZXJlIHdhcyBubyBjb21tYW5kIGZvdW5kLCB0aGVuIHNldCB0aGUgZGVmYXVsdCBjb21tYW5kXG5cdFx0aWYgKCEoY21kIGluc3RhbmNlb2YgQ29tbWFuZCkpIHtcblx0XHRcdGNtZCA9IHRoaXMuY3R4LmNvbW1hbmRzW3RoaXMuZGVmYXVsdF07XG5cdFx0XHRpZiAoY21kKSB7XG5cdFx0XHRcdCRhcmdzLmNvbnRleHRzLnVuc2hpZnQoY21kKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBleGVjdXRlIHRoZSBjb21tYW5kXG5cdFx0aWYgKGNtZCAmJiB0eXBlb2YgY21kLmFjdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0cmV0dXJuIGF3YWl0IGNtZC5hY3Rpb24oJGFyZ3MpO1xuXHRcdH1cblxuXHRcdHJldHVybiAkYXJncztcblx0fVxufVxuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsaS5qcyJdLCJuYW1lcyI6WyJsb2ciLCJDTEkiLCJjb25zdHJ1Y3RvciIsIm9wdHMiLCJBcnJheSIsImlzQXJyYXkiLCJUeXBlRXJyb3IiLCJvdXQiLCJwcm9jZXNzIiwic3Rkb3V0IiwiaGVscEV4aXRDb2RlIiwidW5kZWZpbmVkIiwid2lkdGgiLCJuYW1lIiwidGl0bGUiLCJkZWZhdWx0Q29tbWFuZCIsImhlbHAiLCJjb21tYW5kIiwiaGlkZGVuIiwiYWN0aW9uIiwiY29udGV4dHMiLCJyZW5kZXJIZWxwIiwiZXhpdCIsIm9wdGlvbiIsInZlcnNpb24iLCJsb29rdXAiLCJzaG9ydCIsInYiLCJsb25nIiwiY2FsbGJhY2siLCJ3cml0ZSIsImRlc2MiLCJleGVjIiwidW5wYXJzZWRBcmdzIiwiJGFyZ3MiLCJwYXJzZSIsInNsaWNlIiwiYXJndiIsImNtZCIsImNvbW1hbmRzIiwidW5zaGlmdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7Ozs7QUFDQTs7OztBQUNBOzs7O0FBRUE7Ozs7YUFFZ0IscUJBQU0sYUFBTixDOztNQUFSQSxHLFVBQUFBLEc7O0FBRVI7Ozs7QUFHZSxNQUFNQyxHQUFOLDJCQUEwQjtBQUN4Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXNCQUMsZUFBdUI7QUFBQSxNQUFYQyxJQUFXLHVFQUFKLEVBQUk7O0FBQ3RCLE1BQUksT0FBT0EsSUFBUCxLQUFnQixRQUFoQixJQUE0QkMsTUFBTUMsT0FBTixDQUFjRixJQUFkLENBQWhDLEVBQXFEO0FBQ3BELFNBQU0sSUFBSUcsU0FBSixDQUFjLDhDQUFkLENBQU47QUFDQTs7QUFFREgsT0FBS0ksR0FBTCxLQUFhSixLQUFLSSxHQUFMLEdBQVdDLFFBQVFDLE1BQWhDO0FBQ0EsTUFBSSxFQUFFTixLQUFLSSxHQUFMLDRCQUFGLENBQUosRUFBcUM7QUFDcEMsU0FBTSxJQUFJRCxTQUFKLENBQWMsZ0RBQWQsQ0FBTjtBQUNBOztBQUVELE1BQUlILEtBQUtPLFlBQUwsS0FBc0JDLFNBQXRCLElB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TUFBSixDQUFXZSxLQUFYLENBQU4sS0FBMkJBLEtBQWxDO0FBQ0E7O0FBRUQsU0FBT0EsS0FBUDtBQUNBO0FBakh1QztrQkFBcEJqQyxHIiwiZmlsZSI6ImNsaS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb21tYW5kIGZyb20gJy4vY29tbWFuZCc7XG5pbXBvcnQgQ29udGV4dCBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IGRlYnVnIGZyb20gJy4vZGVidWcnO1xuXG5pbXBvcnQgeyBXcml0YWJsZSB9IGZyb20gJ3N0cmVhbSc7XG5cbmNvbnN0IHsgbG9nIH0gPSBkZWJ1ZygnY2xpLWtpdDpjbGknKTtcblxuLyoqXG4gKiBEZWZpbmVzIGEgQ0xJIGNvbnRleHQgYW5kIGlzIHJlc3BvbnNpYmxlIGZvciBwYXJzaW5nIHRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDTEkgZXh0ZW5kcyBDb250ZXh0IHtcblx0LyoqXG5cdCAqIENyZWF0ZWQgYSBDTEkgaW5zdGFuY2UuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gLSBWYXJpb3VzIG9wdGlvbnMuXG5cdCAqIEBwYXJhbSB7QXJyYXk8T2JqZWN0Pn0gW29wdHMuYXJnc10gLSBBbiBhcnJheSBvZiBhcmd1bWVudHMuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdHMuY2FtZWxDYXNlPXRydWVdIC0gQ2FtZWwgY2FzZSBvcHRpb24gbmFtZXMuXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0cy5jb21tYW5kc10gLSBBIG1hcCBvZiBjb21tYW5kIG5hbWVzIHRvIGNvbW1hbmQgZGVzY3JpcHRvcnMuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdHMuZGVmYXVsdENvbW1hbmRdIC0gVGhlIGRlZmF1bHQgY29tbWFuZCB0byBleGVjdXRlLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW3BhcmFtcy5kZXNjXSAtIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgQ0xJIGRpc3BsYXllZCBpbiB0aGUgaGVscCBvdXRwdXQuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdHMuaGVscD1mYWxzZV0gLSBXaGVuIGB0cnVlYCwgZW5hYmxlcyB0aGUgYnVpbHQtaW4gaGVscCBjb21tYW5kLlxuXHQgKiBAcGFyYW0ge051bWJlcn0gW29wdHMuaGVscEV4aXRDb2RlXSAtIFRoZSBleGl0IGNvZGUgdG8gcmV0dXJuIHdoZW4gdGhlIGhlbHAgY29tbWFuZCBpc1xuXHQgKiBmaW5pc2hlZC5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLm5hbWVdIC0gVGhlIG5hbWUgb2YgdGhlIHByb2dyYW0uXG5cdCAqIEBwYXJhbSB7QXJyYXk8T2JqZWN0PnxPYmplY3R9IFtvcHRzLm9wdGlvbnNdIC0gQW4gYXJyYXkgb2Ygb3B0aW9ucy5cblx0ICogQHBhcmFtIHtXcml0YWJsZX0gW29wdHMub3V0PXByb2Nlc3Muc3Rkb3V0XSAtIEEgc3RyZWFtIHRvIHdyaXRlIG91dHB1dCBzdWNoIGFzIHRoZSBoZWxwXG5cdCAqIHNjcmVlbi5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnRpdGxlPSdHbG9iYWwnXSAtIFRoZSB0aXRsZSBmb3IgdGhlIGdsb2JhbCBjb250ZXh0LlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMudmVyc2lvbl0gLSBUaGUgcHJvZ3JhbSB2ZXJzaW9uLlxuXHQgKiBAcGFyYW0ge051bWJlcn0gW29wdHMud2lkdGhdIC0gVGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRvIHdyYXAgbG9uZyBkZXNjcmlwdGlvbnMuIERlZmF1bHRzXG5cdCAqIHRvIGBwcm9jZXNzLnN0ZG91dC5jb2x1bW5zYCBpZiBleGlzdHMsIG90aGVyd2lzZSBgMTAwYC4gTXVzdCBiZSBhdCBsZWFzdCBgNDBgLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Y29uc3RydWN0b3Iob3B0cyA9IHt9KSB7XG5cdFx0aWYgKHR5cGVvZiBvcHRzICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KG9wdHMpKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBhcmd1bWVudCB0byBiZSBhbiBvYmplY3Qgb3IgQ29udGV4dCcpO1xuXHRcdH1cblxuXHRcdG9wdHMub3V0IHx8IChvcHRzLm91dCA9IHByb2Nlc3Muc3Rkb3V0KTtcblx0XHRpZiAoIShvcHRzLm91dCBpbnN0YW5jZW9mIFdyaXRhYmxlKSkge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgb3V0cHV0IHN0cmVhbSB0byBiZSBhIHdyaXRhYmxlIHN0cmVhbScpO1xuXHRcdH1cblxuXHRcdGlmIChvcHRzLmhlbHBFeGl0Q29kZSAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBvcHRzLmhlbHBFeGl0Q29kZSAhPT0gJ251bWJlcicpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGhlbHAgZXhpdCBjb2RlIHRvIGJlIGEgbnVtYmVyJyk7XG5cdFx0fVxuXG5cdFx0aWYgKG9wdHMud2lkdGggIT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb3B0cy53aWR0aCAhPT0gJ251bWJlcicpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIHdpZHRoIHRvIGJlIGEgbnVtYmVyJyk7XG5cdFx0fVxuXG5cdFx0b3B0cy5uYW1lIHx8IChvcHRzLm5hbWUgPSAncHJvZ3JhbScpO1xuXHRcdG9wdHMudGl0bGUgfHwgKG9wdHMudGl0bGUgPSAnR2xvYmFsJyk7XG5cblx0XHRzdXBlcihvcHRzKTtcblxuXHRcdC8vIHNldCB0aGUgZGVmYXVsdCBjb21tYW5kXG5cdFx0dGhpcy5kZWZhdWx0Q29tbWFuZCA9IG9wdHMuZGVmYXVsdENvbW1hbmQ7XG5cblx0XHQvLyBhZGQgdGhlIGJ1aWx0LWluIGhlbHBcblx0XHR0aGlzLmhlbHAgPSAhIW9wdHMuaGVscDtcblx0XHRpZiAodGhpcy5oZWxwKSB7XG5cdFx0XHRpZiAodGhpcy5kZWZhdWx0Q29tbWFuZCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdHRoaXMuZGVmYXVsdENvbW1hbmQgPSAnaGVscCc7XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuY29tbWFuZCgnaGVscCcsIHtcblx0XHRcdFx0aGlkZGVuOiB0cnVlLFxuXHRcdFx0XHRhY3Rpb24oeyBjb250ZXh0cyB9KSB7XG5cdFx0XHRcdFx0Ly8gdGhlIGZpcnN0IGNvbnRleHQgaXMgdGhlIGhlbHAgY29tbWFuZCwgc28ganVzdCBza2lwIHRvIHRoZSBzZWNvbmQgY29udGV4dFxuXHRcdFx0XHRcdGNvbnRleHRzWzFdLnJlbmRlckhlbHAob3B0cy5vdXQpO1xuXHRcdFx0XHRcdGlmIChvcHRzLmhlbHBFeGl0Q29kZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0XHRwcm9jZXNzLmV4aXQob3B0cy5oZWxwRXhpdENvZGUpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cblx0XHRcdHRoaXMub3B0aW9uKCctaCwgLS1oZWxwJywgJ2Rpc3BsYXlzIHRoZSBoZWxwIHNjcmVlbicpO1xuXHRcdH1cblxuXHRcdGlmIChvcHRzLnZlcnNpb24gJiYgIXRoaXMubG9va3VwLnNob3J0LnYgJiYgIXRoaXMubG9va3VwLmxvbmcudmVyc2lvbikge1xuXHRcdFx0dGhpcy5vcHRpb24oJy12LCAtLXZlcnNpb24nLCB7XG5cdFx0XHRcdGNhbGxiYWNrKCkge1xuXHRcdFx0XHRcdG9wdHMub3V0LndyaXRlKGAke29wdHMudmVyc2lvbn1cXG5gKTtcblx0XHRcdFx0XHRwcm9jZXNzLmV4aXQoMCk7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdGRlc2M6ICdvdXRwdXRzIHRoZSBhcHBjZCB2ZXJzaW9uJ1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlcyB0aGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBhbmQgcnVucyB0aGUgY29tbWFuZC5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0gW3VucGFyc2VkQXJnc10gLSBBbiBhcnJheSBvZiBhcmd1bWVudHMgdG8gcGFyc2UuIElmIG5vdCBzcGVjaWZpZWQsIGl0XG5cdCAqIGRlZmF1bHRzIHRvIHRoZSBgcHJvY2Vzcy5hcmd2YCBzdGFydGluZyB3aXRoIHRoZSAzcmQgYXJndW1lbnQuXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlLjxBcmd1bWVudHM+fVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgZXhlYyh1bnBhcnNlZEFyZ3MpIHtcblx0XHRpZiAodW5wYXJzZWRBcmdzICYmICFBcnJheS5pc0FycmF5KHVucGFyc2VkQXJncykpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGFyZ3MgdG8gYmUgYW4gYXJyYXknKTtcblx0XHR9XG5cblx0XHRjb25zdCAkYXJncyA9IGF3YWl0IHRoaXMucGFyc2UodW5wYXJzZWRBcmdzID8gdW5wYXJzZWRBcmdzLnNsaWNlKCkgOiBwcm9jZXNzLmFyZ3Yuc2xpY2UoMikpO1xuXG5cdFx0bGV0IGNtZCA9ICRhcmdzLmNvbnRleHRzWzBdO1xuXG5cdFx0aWYgKHRoaXMuaGVscCAmJiAkYXJncy5hcmd2LmhlbHApIHtcblx0XHRcdGNtZCA9IHRoaXMuY29tbWFuZHMuaGVscDtcblx0XHRcdCRhcmdzLmNvbnRleHRzLnVuc2hpZnQoY21kKTtcblxuXHRcdH0gZWxzZSBpZiAoIShjbWQgaW5zdGFuY2VvZiBDb21tYW5kKSAmJiAodGhpcy5jb21tYW5kc1t0aGlzLmRlZmF1bHRDb21tYW5kXSBpbnN0YW5jZW9mIENvbW1hbmQpKSB7XG5cdFx0XHRjbWQgPSB0aGlzLmNvbW1hbmRzW3RoaXMuZGVmYXVsdENvbW1hbmRdO1xuXHRcdFx0JGFyZ3MuY29udGV4dHMudW5zaGlmdChjbWQpO1xuXHRcdH1cblxuXHRcdC8vIGV4ZWN1dGUgdGhlIGNvbW1hbmRcblx0XHRpZiAoY21kICYmIHR5cGVvZiBjbWQuYWN0aW9uID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRyZXR1cm4gYXdhaXQgY21kLmFjdGlvbigkYXJncykgfHwgJGFyZ3M7XG5cdFx0fVxuXG5cdFx0cmV0dXJuICRhcmdzO1xuXHR9XG59XG4iXX0= |
@@ -26,7 +26,8 @@ 'use strict'; | ||
* @param {Object} [params] - Various params. | ||
* @param {Function} [params.action] - A function to call when the command is found. | ||
* @param {Array<String>} [params.aliases] - An array of command aliases. | ||
* @param {Array<Object>} [params.args] - An array of arguments. | ||
* @param {Array<String>} [params.aliases] - An array of command aliases. | ||
* @param {Boolean} [params.camelCase=true] - Camel case option names. | ||
* @param {Array<Object>} [params.commands] - An array of commands. | ||
* @param {String} [params.desc] - The description of the command used in the help display. | ||
* @param {String} [params.desc] - The description of the command displayed in the help output. | ||
* @param {Boolean} [params.hidden=false] - When `true`, the command will not be displayed on | ||
@@ -68,11 +69,11 @@ * the help screen or auto-suggest. | ||
params.title || (params.title = name); | ||
super(params); | ||
this.name = name; | ||
this.action = params.action; | ||
this.aliases = aliases; | ||
this.name = name; | ||
this.title = params.title || name; | ||
} | ||
} | ||
exports.default = Command; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbW1hbmQuanMiXSwibmFtZXMiOlsiQ29tbWFuZCIsImNvbnN0cnVjdG9yIiwibmFtZSIsInBhcmFtcyIsIlR5cGVFcnJvciIsIkFycmF5IiwiaXNBcnJheSIsImFjdGlvbiIsImFsaWFzZXMiLCJhbGlhcyIsInRpdGxlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7OztBQUNBOzs7Ozs7QUFFQTs7O0FBR2UsTUFBTUEsT0FBTiwyQkFBOEI7QUFDNUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBaUJBQyxhQUFZQyxJQUFaLEVBQStCO0FBQUEsTUFBYkMsTUFBYSx1RUFBSixFQUFJOztBQUM5QixNQUFJLENBQUNELElBQUQsSUFBUyxPQUFPQSxJQUFQLEtBQWdCLFFBQTdCLEVBQXVDO0FBQ3RDLFNBQU0sSUFBSUUsU0FBSixDQUFjLDhCQUFkLENBQU47QUFDQTs7QUFFRCxNQUFJLE9BQU9ELE1BQVAsS0FBa0IsUUFBbEIsSUFBOEJFLE1BQU1DLE9BQU4sQ0FBY0gsTUFBZCxDQUFsQyxFQUF5RDtBQUN4RCxTQUFNLElBQUlDLFNBQUosQ0FBYyw4Q0FBZCxDQUFOO0FBQ0E7O0FBRUQsTUFBSUQsT0FBT0ksTUFBUCxJQUFpQixPQUFPSixPQUFPSSxNQUFkLEtBQXlCLFVBQTlDLEVBQTBEO0FBQ3pELFNBQU0sSUFBSUgsU0FBSixDQUFjLGtDQUFkLENBQU47QUFDQTs7QUFFRDtBQUNBLFFBQU1JLFVBQVUsRUFBaEI7QUFDQSxNQUFJTCxPQUFPSyxPQUFYLEVBQW9CO0FBQ25CLE9BQUksQ0FBQ0gsTUFBTUMsT0FBTixDQUFjSCxPQUFPSyxPQUFyQixDQUFMLEVBQW9DO0FBQ25DLFVBQU0sSUFBSUosU0FBSixDQUFjLDRDQUFkLENBQU47QUFDQTtBQUNELFFBQUssTUFBTUssS0FBWCxJQUFvQk4sT0FBT0ssT0FBM0IsRUFBb0M7QUFDbkMsUUFBSSxDQUFDQyxLQUFELElBQVUsT0FBT0EsS0FBUCxLQUFpQixRQUEvQixFQUF5QztBQUN4QyxXQUFNLElBQUlMLFNBQUosQ0FBYyw0Q0FBZCxDQUFOO0FBQ0E7QUFDREksWUFBUUMsS0FBUixJQUFpQixDQUFqQjtBQUNBO0FBQ0Q7O0FBRUROLFNBQU9PLEtBQVAsS0FBaUJQLE9BQU9PLEtBQVAsR0FBZVIsSUFBaEM7QUFDQSxRQUFNQyxNQUFOOztBQUVBLE9BQUtELElBQUwsR0FBWUEsSUFBWjtBQUNBLE9BQUtLLE1BQUwsR0FBY0osT0FBT0ksTUFBckI7QUFDQSxPQUFLQyxPQUFMLEdBQWVBLE9BQWY7QUFDQTtBQW5EMkM7a0JBQXhCUixPIiwiZmlsZSI6ImNvbW1hbmQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29udGV4dCBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IE9wdGlvbiBmcm9tICcuL29wdGlvbic7XG5cbi8qKlxuICogRGVmaW5lcyBhIGNvbW1hbmQgYW5kIGl0cyBvcHRpb25zIGFuZCBhcmd1bWVudHMuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbW1hbmQgZXh0ZW5kcyBDb250ZXh0IHtcblx0LyoqXG5cdCAqIENvbnN0cnVjdHMgYSBjb21tYW5kIGluc3RhbmNlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gbmFtZSAtIFRoZSBjb21tYW5kIG5hbWUuXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbcGFyYW1zXSAtIFZhcmlvdXMgcGFyYW1zLlxuXHQgKiBAcGFyYW0ge0FycmF5PE9iamVjdD59IFtwYXJhbXMuYXJnc10gLSBBbiBhcnJheSBvZiBhcmd1bWVudHMuXG5cdCAqIEBwYXJhbSB7QXJyYXk8U3RyaW5nPn0gW3BhcmFtcy5hbGlhc2VzXSAtIEFuIGFycmF5IG9mIGNvbW1hbmQgYWxpYXNlcy5cblx0ICogQHBhcmFtIHtCb29sZWFufSBbcGFyYW1zLmNhbWVsQ2FzZT10cnVlXSAtIENhbWVsIGNhc2Ugb3B0aW9uIG5hbWVzLlxuXHQgKiBAcGFyYW0ge0FycmF5PE9iamVjdD59IFtwYXJhbXMuY29tbWFuZHNdIC0gQW4gYXJyYXkgb2YgY29tbWFuZHMuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbcGFyYW1zLmRlc2NdIC0gVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBjb21tYW5kIHVzZWQgaW4gdGhlIGhlbHAgZGlzcGxheS5cblx0ICogQHBhcmFtIHtCb29sZWFufSBbcGFyYW1zLmhpZGRlbj1mYWxzZV0gLSBXaGVuIGB0cnVlYCwgdGhlIGNvbW1hbmQgd2lsbCBub3QgYmUgZGlzcGxheWVkIG9uXG5cdCAqIHRoZSBoZWxwIHNjcmVlbiBvciBhdXRvLXN1Z2dlc3QuXG5cdCAqIEBwYXJhbSB7QXJyYXk8T2JqZWN0Pn0gW3BhcmFtcy5vcHRpb25zXSAtIEFuIGFycmF5IG9mIG9wdGlvbnMgZGVmaW5pdGlvbiBvYmplY3RzLlxuXHQgKiBAcGFyYW0ge0NvbnRleHR9IFtwYXJhbXMucGFyZW50XSAtIFBhcmVudCBjb250ZXh0LlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW3BhcmFtcy50aXRsZV0gLSBDb250ZXh0IHRpdGxlLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Y29uc3RydWN0b3IobmFtZSwgcGFyYW1zID0ge30pIHtcblx0XHRpZiAoIW5hbWUgfHwgdHlwZW9mIG5hbWUgIT09ICdzdHJpbmcnKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBuYW1lIHRvIGJlIGEgc3RyaW5nJyk7XG5cdFx0fVxuXG5cdFx0aWYgKHR5cGVvZiBwYXJhbXMgIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkocGFyYW1zKSkge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgYXJndW1lbnQgdG8gYmUgYW4gb2JqZWN0IG9yIENvbnRleHQnKTtcblx0XHR9XG5cblx0XHRpZiAocGFyYW1zLmFjdGlvbiAmJiB0eXBlb2YgcGFyYW1zLmFjdGlvbiAhPT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgYWN0aW9uIHRvIGJlIGEgZnVuY3Rpb24nKTtcblx0XHR9XG5cblx0XHQvLyBwcm9jZXNzIHRoZSBhbGlhc2VzXG5cdFx0Y29uc3QgYWxpYXNlcyA9IHt9O1xuXHRcdGlmIChwYXJhbXMuYWxpYXNlcykge1xuXHRcdFx0aWYgKCFBcnJheS5pc0FycmF5KHBhcmFtcy5hbGlhc2VzKSkge1xuXHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBhbGlhc2VzIHRvIGJlIGFuIGFycmF5IG9mIHN0cmluZ3MnKTtcblx0XHRcdH1cblx0XHRcdGZvciAoY29uc3QgYWxpYXMgb2YgcGFyYW1zLmFsaWFzZXMpIHtcblx0XHRcdFx0aWYgKCFhbGlhcyB8fCB0eXBlb2YgYWxpYXMgIT09ICdzdHJpbmcnKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgYWxpYXNlcyB0byBiZSBhbiBhcnJheSBvZiBzdHJpbmdzJyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YWxpYXNlc1thbGlhc10gPSAxO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHBhcmFtcy50aXRsZSB8fCAocGFyYW1zLnRpdGxlID0gbmFtZSk7XG5cdFx0c3VwZXIocGFyYW1zKTtcblxuXHRcdHRoaXMubmFtZSA9IG5hbWU7XG5cdFx0dGhpcy5hY3Rpb24gPSBwYXJhbXMuYWN0aW9uO1xuXHRcdHRoaXMuYWxpYXNlcyA9IGFsaWFzZXM7XG5cdH1cbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbW1hbmQuanMiXSwibmFtZXMiOlsiQ29tbWFuZCIsImNvbnN0cnVjdG9yIiwibmFtZSIsInBhcmFtcyIsIlR5cGVFcnJvciIsIkFycmF5IiwiaXNBcnJheSIsImFjdGlvbiIsImFsaWFzZXMiLCJhbGlhcyIsInRpdGxlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7OztBQUNBOzs7Ozs7QUFFQTs7O0FBR2UsTUFBTUEsT0FBTiwyQkFBOEI7QUFDNUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCQUMsYUFBWUMsSUFBWixFQUErQjtBQUFBLE1BQWJDLE1BQWEsdUVBQUosRUFBSTs7QUFDOUIsTUFBSSxDQUFDRCxJQUFELElBQVMsT0FBT0EsSUFBUCxLQUFnQixRQUE3QixFQUF1QztBQUN0QyxTQUFNLElBQUlFLFNBQUosQ0FBYyw4QkFBZCxDQUFOO0FBQ0E7O0FBRUQsTUFBSSxPQUFPRCxNQUFQLEtBQWtCLFFBQWxCLElBQThCRSxNQUFNQyxPQUFOLENBQWNILE1BQWQsQ0FBbEMsRUFBeUQ7QUFDeEQsU0FBTSxJQUFJQyxTQUFKLENBQWMsOENBQWQsQ0FBTjtBQUNBOztBQUVELE1BQUlELE9BQU9JLE1BQVAsSUFBaUIsT0FBT0osT0FBT0ksTUFBZCxLQUF5QixVQUE5QyxFQUEwRDtBQUN6RCxTQUFNLElBQUlILFNBQUosQ0FBYyxrQ0FBZCxDQUFOO0FBQ0E7O0FBRUQ7QUFDQSxRQUFNSSxVQUFVLEVBQWhCO0FBQ0EsTUFBSUwsT0FBT0ssT0FBWCxFQUFvQjtBQUNuQixPQUFJLENBQUNILE1BQU1DLE9BQU4sQ0FBY0gsT0FBT0ssT0FBckIsQ0FBTCxFQUFvQztBQUNuQyxVQUFNLElBQUlKLFNBQUosQ0FBYyw0Q0FBZCxDQUFOO0FBQ0E7QUFDRCxRQUFLLE1BQU1LLEtBQVgsSUFBb0JOLE9BQU9LLE9BQTNCLEVBQW9DO0FBQ25DLFFBQUksQ0FBQ0MsS0FBRCxJQUFVLE9BQU9BLEtBQVAsS0FBaUIsUUFBL0IsRUFBeUM7QUFDeEMsV0FBTSxJQUFJTCxTQUFKLENBQWMsNENBQWQsQ0FBTjtBQUNBO0FBQ0RJLFlBQVFDLEtBQVIsSUFBaUIsQ0FBakI7QUFDQTtBQUNEOztBQUVELFFBQU1OLE1BQU47O0FBRUEsT0FBS0ksTUFBTCxHQUFlSixPQUFPSSxNQUF0QjtBQUNBLE9BQUtDLE9BQUwsR0FBZUEsT0FBZjtBQUNBLE9BQUtOLElBQUwsR0FBZUEsSUFBZjtBQUNBLE9BQUtRLEtBQUwsR0FBZVAsT0FBT08sS0FBUCxJQUFnQlIsSUFBL0I7QUFDQTtBQXBEMkM7a0JBQXhCRixPIiwiZmlsZSI6ImNvbW1hbmQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29udGV4dCBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IE9wdGlvbiBmcm9tICcuL29wdGlvbic7XG5cbi8qKlxuICogRGVmaW5lcyBhIGNvbW1hbmQgYW5kIGl0cyBvcHRpb25zIGFuZCBhcmd1bWVudHMuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbW1hbmQgZXh0ZW5kcyBDb250ZXh0IHtcblx0LyoqXG5cdCAqIENvbnN0cnVjdHMgYSBjb21tYW5kIGluc3RhbmNlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gbmFtZSAtIFRoZSBjb21tYW5kIG5hbWUuXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbcGFyYW1zXSAtIFZhcmlvdXMgcGFyYW1zLlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcGFyYW1zLmFjdGlvbl0gLSBBIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgY29tbWFuZCBpcyBmb3VuZC5cblx0ICogQHBhcmFtIHtBcnJheTxTdHJpbmc+fSBbcGFyYW1zLmFsaWFzZXNdIC0gQW4gYXJyYXkgb2YgY29tbWFuZCBhbGlhc2VzLlxuXHQgKiBAcGFyYW0ge0FycmF5PE9iamVjdD59IFtwYXJhbXMuYXJnc10gLSBBbiBhcnJheSBvZiBhcmd1bWVudHMuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW3BhcmFtcy5jYW1lbENhc2U9dHJ1ZV0gLSBDYW1lbCBjYXNlIG9wdGlvbiBuYW1lcy5cblx0ICogQHBhcmFtIHtBcnJheTxPYmplY3Q+fSBbcGFyYW1zLmNvbW1hbmRzXSAtIEFuIGFycmF5IG9mIGNvbW1hbmRzLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW3BhcmFtcy5kZXNjXSAtIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgY29tbWFuZCBkaXNwbGF5ZWQgaW4gdGhlIGhlbHAgb3V0cHV0LlxuXHQgKiBAcGFyYW0ge0Jvb2xlYW59IFtwYXJhbXMuaGlkZGVuPWZhbHNlXSAtIFdoZW4gYHRydWVgLCB0aGUgY29tbWFuZCB3aWxsIG5vdCBiZSBkaXNwbGF5ZWQgb25cblx0ICogdGhlIGhlbHAgc2NyZWVuIG9yIGF1dG8tc3VnZ2VzdC5cblx0ICogQHBhcmFtIHtBcnJheTxPYmplY3Q+fSBbcGFyYW1zLm9wdGlvbnNdIC0gQW4gYXJyYXkgb2Ygb3B0aW9ucyBkZWZpbml0aW9uIG9iamVjdHMuXG5cdCAqIEBwYXJhbSB7Q29udGV4dH0gW3BhcmFtcy5wYXJlbnRdIC0gUGFyZW50IGNvbnRleHQuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbcGFyYW1zLnRpdGxlXSAtIENvbnRleHQgdGl0bGUuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRjb25zdHJ1Y3RvcihuYW1lLCBwYXJhbXMgPSB7fSkge1xuXHRcdGlmICghbmFtZSB8fCB0eXBlb2YgbmFtZSAhPT0gJ3N0cmluZycpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIG5hbWUgdG8gYmUgYSBzdHJpbmcnKTtcblx0XHR9XG5cblx0XHRpZiAodHlwZW9mIHBhcmFtcyAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheShwYXJhbXMpKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBhcmd1bWVudCB0byBiZSBhbiBvYmplY3Qgb3IgQ29udGV4dCcpO1xuXHRcdH1cblxuXHRcdGlmIChwYXJhbXMuYWN0aW9uICYmIHR5cGVvZiBwYXJhbXMuYWN0aW9uICE9PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBhY3Rpb24gdG8gYmUgYSBmdW5jdGlvbicpO1xuXHRcdH1cblxuXHRcdC8vIHByb2Nlc3MgdGhlIGFsaWFzZXNcblx0XHRjb25zdCBhbGlhc2VzID0ge307XG5cdFx0aWYgKHBhcmFtcy5hbGlhc2VzKSB7XG5cdFx0XHRpZiAoIUFycmF5LmlzQXJyYXkocGFyYW1zLmFsaWFzZXMpKSB7XG5cdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGFsaWFzZXMgdG8gYmUgYW4gYXJyYXkgb2Ygc3RyaW5ncycpO1xuXHRcdFx0fVxuXHRcdFx0Zm9yIChjb25zdCBhbGlhcyBvZiBwYXJhbXMuYWxpYXNlcykge1xuXHRcdFx0XHRpZiAoIWFsaWFzIHx8IHR5cGVvZiBhbGlhcyAhPT0gJ3N0cmluZycpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBhbGlhc2VzIHRvIGJlIGFuIGFycmF5IG9mIHN0cmluZ3MnKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRhbGlhc2VzW2FsaWFzXSA9IDE7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0c3VwZXIocGFyYW1zKTtcblxuXHRcdHRoaXMuYWN0aW9uICA9IHBhcmFtcy5hY3Rpb247XG5cdFx0dGhpcy5hbGlhc2VzID0gYWxpYXNlcztcblx0XHR0aGlzLm5hbWUgICAgPSBuYW1lO1xuXHRcdHRoaXMudGl0bGUgICA9IHBhcmFtcy50aXRsZSB8fCBuYW1lO1xuXHR9XG59XG4iXX0= |
@@ -22,2 +22,20 @@ 'use strict'; | ||
var _command = require('./command'); | ||
Object.defineProperty(exports, 'Command', { | ||
enumerable: true, | ||
get: function () { | ||
return _command.Command; | ||
} | ||
}); | ||
var _option = require('./option'); | ||
Object.defineProperty(exports, 'Option', { | ||
enumerable: true, | ||
get: function () { | ||
return _option.Option; | ||
} | ||
}); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
@@ -29,2 +47,2 @@ | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbImRlZmF1bHQiLCJFcnJvciIsInByZXBhcmVTdGFja1RyYWNlIiwicmVxdWlyZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7c0NBS1NBLE87Ozs7OztzQ0FBU0EsTzs7Ozs7O0FBTGxCO0FBQ0EsSUFBSSxDQUFDQyxNQUFNQyxpQkFBWCxFQUE4QjtBQUM3QkMsU0FBUSw2QkFBUjtBQUNBIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5pZiAoIUVycm9yLnByZXBhcmVTdGFja1RyYWNlKSB7XG5cdHJlcXVpcmUoJ3NvdXJjZS1tYXAtc3VwcG9ydC9yZWdpc3RlcicpO1xufVxuXG5leHBvcnQgeyBkZWZhdWx0LCBkZWZhdWx0IGFzIENMSSB9IGZyb20gJy4vY2xpJztcbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbImRlZmF1bHQiLCJDb21tYW5kIiwiT3B0aW9uIiwiRXJyb3IiLCJwcmVwYXJlU3RhY2tUcmFjZSIsInJlcXVpcmUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O3NDQU1DQSxPOzs7Ozs7c0NBQ0FBLE87Ozs7Ozs7OztrQkFHUUMsTzs7Ozs7Ozs7O2lCQUNBQyxNOzs7Ozs7QUFYVDtBQUNBLElBQUksQ0FBQ0MsTUFBTUMsaUJBQVgsRUFBOEI7QUFDN0JDLFNBQVEsNkJBQVI7QUFDQSIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuaWYgKCFFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSkge1xuXHRyZXF1aXJlKCdzb3VyY2UtbWFwLXN1cHBvcnQvcmVnaXN0ZXInKTtcbn1cblxuZXhwb3J0IHtcblx0ZGVmYXVsdCxcblx0ZGVmYXVsdCBhcyBDTElcbn0gZnJvbSAnLi9jbGknO1xuXG5leHBvcnQgeyBDb21tYW5kIH0gZnJvbSAnLi9jb21tYW5kJztcbmV4cG9ydCB7IE9wdGlvbiB9IGZyb20gJy4vb3B0aW9uJztcbiJdfQ== |
@@ -14,2 +14,3 @@ 'use strict'; | ||
const aliasRegExp = /^(?:-(.)|-{2}(.+))$/; | ||
const numberRegExp = /^\d+(\.\d*)?$/; | ||
@@ -25,5 +26,8 @@ /** | ||
* @param {Object} [params] - Additional parameters. | ||
* @param {Object|Array<String>} [params.aliases] - An array of option aliases or an object with | ||
* @param {Object|Array<String>|String} [params.aliases] - An array of aliases or an object with | ||
* `visible` and `hidden` arrays of aliases. | ||
* @param {Function} [params.callback] - A function to call when the option has been parsed. | ||
* @param {Boolean} [params.camelCase=true] - If option has a name or can derive a name from the | ||
* long option format, then it the name be camel cased. | ||
* @param {Boolean} [params.count] - ???????????????????????????????????????????????????? force type to boolean OR make "count" a type | ||
* @param {*} [params.default] - ??????? | ||
@@ -47,4 +51,4 @@ * @param {String} [params.desc] - The description of the option used in the help display. | ||
constructor(format, params) { | ||
if (typeof format !== 'string') { | ||
throw new TypeError('Expected format to be a string'); | ||
if (!format || typeof format !== 'string') { | ||
throw new TypeError('Expected option format to be a non-empty string'); | ||
} | ||
@@ -105,3 +109,3 @@ format = format.trim(); | ||
} else { | ||
throw new TypeError('Expected aliases to be an array of strings or an object with visible/hidden array of strings'); | ||
initAliases([params.aliases]); | ||
} | ||
@@ -129,7 +133,8 @@ } | ||
const value = hint.match(valueRegExp); | ||
if (!value) { | ||
throw new TypeError(`Invalid option format "${format}"`); | ||
if (value) { | ||
this.required = value[1] === '<'; | ||
this.hint = value[2].trim(); | ||
} else { | ||
this.hint = hint; | ||
} | ||
this.required = value[1] === '<'; | ||
this.hint = value[2].trim(); | ||
} | ||
@@ -139,3 +144,3 @@ | ||
this.camelCase = params.camelCase !== false; | ||
this.camelCase = params.name || this.name ? params.camelCase !== false : false; | ||
this.count = !!params.count; | ||
@@ -150,3 +155,3 @@ this.hidden = !!params.hidden; | ||
this.required = this.required === undefined ? !!params.required : this.required; | ||
this.type = (0, _types.checkType)(params.type, hint || 'bool'); | ||
this.type = (0, _types.checkType)(params.type, this.hint || 'bool'); | ||
@@ -172,2 +177,3 @@ if (this.type !== 'bool') { | ||
* @returns {*} | ||
* @access public | ||
*/ | ||
@@ -195,2 +201,11 @@ transform(value, negated) { | ||
break; | ||
default: | ||
// check if value could be a number | ||
if (numberRegExp.test(value)) { | ||
const n = parseFloat(value); | ||
if (!isNaN(n)) { | ||
return n; | ||
} | ||
} | ||
} | ||
@@ -202,2 +217,2 @@ | ||
exports.default = Option; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9wdGlvbi5qcyJdLCJuYW1lcyI6WyJmb3JtYXRSZWdFeHAiLCJ2YWx1ZVJlZ0V4cCIsIm5lZ2F0ZVJlZ0V4cCIsImFsaWFzU2VwUmVnRXhwIiwiYWxpYXNSZWdFeHAiLCJPcHRpb24iLCJjb25zdHJ1Y3RvciIsImZvcm1hdCIsInBhcmFtcyIsIlR5cGVFcnJvciIsInRyaW0iLCJBcnJheSIsImlzQXJyYXkiLCJtIiwibWF0Y2giLCJoaW50IiwiYWxpYXNlcyIsImxvbmciLCJzaG9ydCIsImluaXRBbGlhc2VzIiwiaXRlbXMiLCJ2aXNpYmlsaXR5IiwiYWxpYXMiLCJhIiwic3BsaXQiLCJ2aXNpYmxlIiwiaGlkZGVuIiwiT2JqZWN0IiwiYXNzaWduIiwibmVnYXRlIiwibmFtZSIsInZhbHVlIiwicmVxdWlyZWQiLCJjYW1lbENhc2UiLCJjb3VudCIsIm1heCIsIm1pbiIsIm11bHRpcGxlIiwib3JkZXIiLCJ1bmRlZmluZWQiLCJ0eXBlIiwiRXJyb3IiLCJkZWZhdWx0IiwidHJhbnNmb3JtIiwibmVnYXRlZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0FBRUEsTUFBTUEsZUFBZSx1REFBckI7QUFDQSxNQUFNQyxjQUFjLG9DQUFwQjtBQUNBLE1BQU1DLGVBQWUsV0FBckI7QUFDQSxNQUFNQyxpQkFBaUIsUUFBdkI7QUFDQSxNQUFNQyxjQUFjLHFCQUFwQjs7QUFFQTs7O0FBR2UsTUFBTUMsTUFBTixDQUFhO0FBQzNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBeUJBQyxhQUFZQyxNQUFaLEVBQW9CQyxNQUFwQixFQUE0QjtBQUMzQixNQUFJLE9BQU9ELE1BQVAsS0FBa0IsUUFBdEIsRUFBZ0M7QUFDL0IsU0FBTSxJQUFJRSxTQUFKLENBQWMsZ0NBQWQsQ0FBTjtBQUNBO0FBQ0RGLFdBQVNBLE9BQU9HLElBQVAsRUFBVDs7QUFFQSxNQUFJLENBQUNGLE1BQUwsRUFBYTtBQUNaQSxZQUFTLEVBQVQ7QUFDQTtBQUNELE1BQUksT0FBT0EsTUFBUCxLQUFr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ZWNrVHlwZSwgdHJhbnNmb3JtVmFsdWUgfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgZm9ybWF0UmVnRXhwID0gL14oPzotKFteLV0pKD86WyAsfF0rKT8pPyg/Oi0tKFteXFxzXSspKT8oPzpcXHMrPyguKykpPyQvO1xuY29uc3QgdmFsdWVSZWdFeHAgPSAvXihcXFsoPz0uK1xcXSQpfDwoPz0uKz4kKSkoLispW1xcXT5dJC87XG5jb25zdCBuZWdhdGVSZWdFeHAgPSAvXm5vLSguKykkLztcbmNvbnN0IGFsaWFzU2VwUmVnRXhwID0gL1sgLHxdKy87XG5jb25zdCBhbGlhc1JlZ0V4cCA9IC9eKD86LSguKXwtezJ9KC4rKSkkLztcblxuLyoqXG4gKiBEZWZpbmVzIGFuIG9wdGlvbiBhbmQgaXQncyBwYXJhbWV0ZXJzLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBPcHRpb24ge1xuXHQvKipcblx0ICogQ3JlYXRlcyBhbiBvcHRpb24gZGVzY3JpcHRvci5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd9IGZvcm1hdCAtIFRoZSBvcHRpb24gZm9ybWF0IGNvbnRhaW5pbmcgdGhlIGdlbmVyYWwgaW5mby5cblx0ICogQHBhcmFtIHtPYmplY3R9IFtwYXJhbXNdIC0gQWRkaXRpb25hbCBwYXJhbWV0ZXJzLlxuXHQgKiBAcGFyYW0ge09iamVjdHxBcnJheTxTdHJpbmc+fSBbcGFyYW1zLmFsaWFzZXNdIC0gQW4gYXJyYXkgb2Ygb3B0aW9uIGFsaWFzZXMgb3IgYW4gb2JqZWN0IHdpdGhcblx0ICogYHZpc2libGVgIGFuZCBgaGlkZGVuYCBhcnJheXMgb2YgYWxpYXNlcy5cblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gW3BhcmFtcy5jYWxsYmFja10gLSBBIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgb3B0aW9uIGhhcyBiZWVuIHBhcnNlZC5cblx0ICogQHBhcmFtIHsqfSBbcGFyYW1zLmRlZmF1bHRdIC0gPz8/Pz8/P1xuXHQgKiBAcGFyYW0ge1N0cmluZ30gW3BhcmFtcy5kZXNjXSAtIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgb3B0aW9uIHVzZWQgaW4gdGhlIGhlbHAgZGlzcGxheS5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtwYXJhbS5lbnZdIC0gVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWUgdG8gZ2V0IGEgdmFsdWUgZnJvbS4gSWYgdGhlXG5cdCAqIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHNldCwgaXQgb3ZlcnJpZGVzIHRoZSB2YWx1ZSBwYXJzZWQgZnJvbSB0aGUgYXJndW1lbnRzLlxuXHQgKiBAcGFyYW0ge0Jvb2xlYW59IFtwYXJhbXMuaGlkZGVuPWZhbHNlXSAtIFdoZW4gYHRydWVgLCB0aGUgb3B0aW9uIGlzIG5vdCBkaXNwbGF5ZWQgb24gdGhlIGhlbHBcblx0ICogc2NyZWVuIG9yIGF1dG8tc3VnZ2VzdC5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtwYXJhbXMuaGludF0gLSBUaGUgaGludCBsYWJlbCBpZiB0aGUgb3B0aW9uIGV4cGVjdHMgYSB2YWx1ZS5cblx0ICogQHBhcmFtIHtOdW1iZXJ9IFtwYXJhbXMubWluXSAtIFdoZW4gYHR5cGVgIGlzIGBpbnRgLCBgbnVtYmVyYCwgb3IgYHBvc2l0aXZlSW50YCwgdGhlbiBjaGVja3Ncblx0ICogdGhhdCB0aGUgb3B0aW9uJ3MgdmFsdWUgaXMgYXQgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBzcGVjaWZpZWQgdmFsdWUuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW3BhcmFtcy5tdWx0aXBsZV0gLSA/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/XG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbcGFyYW1zLm5hbWVdIC0gVGhlIG5hbWUgb2YgdGhlIG9wdGlvbi5cblx0ICogQHBhcmFtIHtCb29sZWFufSBbcGFyYW1zLm5lZ2F0ZV0gLSBXaGVuIGB0cnVlYCwgPz8/Pz8/Pz8/P1xuXHQgKiBAcGFyYW0ge0Jvb2xlYW59IFtwYXJhbXMucmVxdWlyZWRdIC0gTWFya3MgdGhlIG9wdGlvbiB2YWx1ZSBhcyByZXF1aXJlZC5cblx0ICogQHBhcmFtIHtTdHJpbmd8QXJyYXkuPFN0cmluZz59IFtwYXJhbXMudHlwZV0gLSBUaGUgb3B0aW9uIHR5cGUgdG8gY29lcmNlIHRoZSBkYXRhIHR5cGUgaW50by5cblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gW3BhcmFtcy52YWxpZGF0ZV0gLSBBIGZ1bmN0aW9uIHRvIGNhbGwgdG8gdmFsaWRhdGUgdGhlIG9wdGlvbiB2YWx1ZS5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGNvbnN0cnVjdG9yKGZvcm1hdCwgcGFyYW1zKSB7XG5cdFx0aWYgKHR5cGVvZiBmb3JtYXQgIT09ICdzdHJpbmcnKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBmb3JtYXQgdG8gYmUgYSBzdHJpbmcnKTtcblx0XHR9XG5cdFx0Zm9ybWF0ID0gZm9ybWF0LnRyaW0oKTtcblxuXHRcdGlmICghcGFyYW1zKSB7XG5cdFx0XHRwYXJhbXMgPSB7fTtcblx0XHR9XG5cdFx0aWYgKHR5cGVvZiBwYXJhbXMgIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkocGFyYW1zKSkge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgcGFyYW1zIHRvIGJlIGFuIG9iamVjdCcpO1xuXHRcdH1cblxuXHRcdC8vIGZpcnN0IHRyeSB0byBzZWUgaWYgd2UgaGF2ZSBhIHZhbGlkIG9wdGlvbiBmb3JtYXRcblx0XHRjb25zdCBtID0gZm9ybWF0Lm1hdGNoKGZvcm1hdFJlZ0V4cCk7XG5cdFx0aWYgKCFtIHx8ICghbVsxXSAmJiAhbVsyXSkpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoYEludmFsaWQgb3B0aW9uIGZvcm1hdCBcIiR7Zm9ybWF0fVwiYCk7XG5cdFx0fVxuXHRcdGNvbnN0IGhpbnQgPSBtWzNdO1xuXG5cdFx0Ly8gcHJvY2VzcyB0aGUgYWxpYXNlc1xuXHRcdGNvbnN0IGFsaWFzZXMgPSB7XG5cdFx0XHRsb25nOiB7fSxcblx0XHRcdHNob3J0OiB7fVxuXHRcdH07XG5cblx0XHRpZiAocGFyYW1zLmFsaWFzZXMpIHtcblx0XHRcdGNvbnN0IGluaXRBbGlhc2VzID0gKGl0ZW1zLCB2aXNpYmlsaXR5ID0gJ2hpZGRlbicpID0+IHtcblx0XHRcdFx0aWYgKEFycmF5LmlzQXJyYXkoaXRlbXMpKSB7XG5cdFx0XHRcdFx0Zm9yIChjb25zdCBhbGlhcyBvZiBpdGVtcykge1xuXHRcdFx0XHRcdFx0aWYgKCFhbGlhcyB8fCB0eXBlb2YgYWxpYXMgIT09ICdzdHJpbmcnKSB7XG5cdFx0XHRcdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGFsaWFzZXMgdG8gYmUgYW4gYXJyYXkgb2Ygc3RyaW5ncyBvciBhbiBvYmplY3Qgd2l0aCB2aXNpYmxlL2hpZGRlbiBhcnJheSBvZiBzdHJpbmdzJyk7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdGZvciAoY29uc3QgYSBvZiBhbGlhcy5zcGxpdChhbGlhc1NlcFJlZ0V4cCkpIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgbSA9IGEubWF0Y2goYWxpYXNSZWdFeHApO1xuXHRcdFx0XHRcdFx0XHRpZiAoIW0pIHtcblx0XHRcdFx0XHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKGBJbnZhbGlkIGFsaWFzIGZvcm1hdCBcIiR7YWxpYXN9XCJgKTtcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdGlmIChtWzFdKSB7XG5cdFx0XHRcdFx0XHRcdFx0YWxpYXNlcy5zaG9ydFttWzFdXSA9IHZpc2liaWxpdHk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAobVsyXSkge1xuXHRcdFx0XHRcdFx0XHRcdGFsaWFzZXMubG9uZ1ttWzJdXSA9IHZpc2liaWxpdHk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cblx0XHRcdGlmIChBcnJheS5pc0FycmF5KHBhcmFtcy5hbGlhc2VzKSkge1xuXHRcdFx0XHRpbml0QWxpYXNlcyhwYXJhbXMuYWxpYXNlcyk7XG5cdFx0XHR9IGVsc2UgaWYgKHR5cGVvZiBwYXJhbXMuYWxpYXNlcyA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0aW5pdEFsaWFzZXMocGFyYW1zLmFsaWFzZXMudmlzaWJsZSwgJ3Zpc2libGUnKTtcblx0XHRcdFx0aW5pdEFsaWFzZXMocGFyYW1zLmFsaWFzZXMuaGlkZGVuKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGFsaWFzZXMgdG8gYmUgYW4gYXJyYXkgb2Ygc3RyaW5ncyBvciBhbiBvYmplY3Qgd2l0aCB2aXNpYmxlL2hpZGRlbiBhcnJheSBvZiBzdHJpbmdzJyk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0T2JqZWN0LmFzc2lnbih0aGlzLCBwYXJhbXMpO1xuXG5cdFx0Ly8gaW5pdGlhbGl6ZSB0aGUgcGFyYW0gdmFsdWVzXG5cdFx0dGhpcy5hbGlhc2VzICA9IGFsaWFzZXM7XG5cdFx0dGhpcy5sb25nICAgICA9IG51bGw7XG5cdFx0dGhpcy5uZWdhdGUgICA9IGZhbHNlO1xuXHRcdHRoaXMuc2hvcnQgICAgPSBtWzFdIHx8IG51bGw7XG5cblx0XHQvLyBjaGVjayBpZiB3ZSBoYXZlIGEgbG9uZyBvcHRpb24gYW5kIG5hbWVcblx0XHRpZiAobVsyXSkge1xuXHRcdFx0Y29uc3QgbmVnYXRlID0gbVsyXS5tYXRjaChuZWdhdGVSZWdFeHApO1xuXHRcdFx0dGhpcy5uZWdhdGUgPSAhIW5lZ2F0ZTtcblx0XHRcdHRoaXMubmFtZSA9IG5lZ2F0ZSA/IG5lZ2F0ZVsxXSA6IG1bMl07XG5cdFx0XHR0aGlzLmxvbmcgPSB0aGlzLm5hbWU7XG5cdFx0fVxuXG5cdFx0Ly8gY2hlY2sgaWYgd2UgaGF2ZSBhIGhpbnRcblx0XHRpZiAoaGludCkge1xuXHRcdFx0Y29uc3QgdmFsdWUgPSBoaW50Lm1hdGNoKHZhbHVlUmVnRXhwKTtcblx0XHRcdGlmICghdmFsdWUpIHtcblx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcihgSW52YWxpZCBvcHRpb24gZm9ybWF0IFwiJHtmb3JtYXR9XCJgKTtcblx0XHRcdH1cblx0XHRcdHRoaXMucmVxdWlyZWQgPSB2YWx1ZVsxXSA9PT0gJzwnO1xuXHRcdFx0dGhpcy5oaW50ID0gdmFsdWVbMl0udHJpbSgpO1xuXHRcdH1cblxuXHRcdC8vIFRPRE86IHBhcmFtcy5yZWdleFxuXG5cdFx0dGhpcy5jYW1lbENhc2UgPSBwYXJhbXMuY2FtZWxDYXNlICE9PSBmYWxzZTtcblx0XHR0aGlzLmNvdW50ICAgICA9ICEhcGFyYW1zLmNvdW50O1xuXHRcdHRoaXMuaGlkZGVuICAgID0gISFwYXJhbXMuaGlkZGVuO1xuXHRcdHRoaXMuaGludCAgICAgID0gcGFyYW1zLmhpbnQgfHwgdGhpcy5oaW50O1xuXHRcdHRoaXMubWF4ICAgICAgID0gcGFyYW1zLm1heCB8fCBudWxsO1xuXHRcdHRoaXMubWluICAgICAgID0gcGFyYW1zLm1pbiB8fCBudWxsO1xuXHRcdHRoaXMubXVsdGlwbGUgID0gISFwYXJhbXMubXVsdGlwbGU7XG5cdFx0dGhpcy5uYW1lICAgICAgPSBwYXJhbXMubmFtZSB8fCB0aGlzLm5hbWUgfHwgKHRoaXMubG9uZyA/IGAtLSR7dGhpcy5sb25nfWAgOiB0aGlzLnNob3J0ID8gYC0ke3RoaXMuc2hvcnR9YCA6IG51bGwpO1xuXHRcdHRoaXMub3JkZXIgICAgID0gcGFyYW1zLm9yZGVyIHx8IG51bGw7XG5cdFx0dGhpcy5yZXF1aXJlZCAgPSB0aGlzLnJlcXVpcmVkID09PSB1bmRlZmluZWQgPyAhIXBhcmFtcy5yZXF1aXJlZCA6IHRoaXMucmVxdWlyZWQ7XG5cdFx0dGhpcy50eXBlICAgICAgPSBjaGVja1R5cGUocGFyYW1zLnR5cGUsIGhpbnQgfHwgJ2Jvb2wnKTtcblxuXHRcdGlmICh0aGlzLnR5cGUgIT09ICdib29sJykge1xuXHRcdFx0aWYgKHRoaXMubmVnYXRlKSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcignTmVnYXRlIHJlcXVpcmVzIG9wdGlvbiB0byBiZSBhIGJvb2wnKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHRoaXMuY291bnQpIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKCdDb3VudCByZXF1aXJlcyBvcHRpb24gdG8gYmUgYSBib29sJyk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0dGhpcy5kZWZhdWx0ICAgPSBwYXJhbXMuZGVmYXVsdCB8fCAodGhpcy50eXBlID09PSAnYm9vbCcgJiYgdGhpcy5uZWdhdGUgPyB0cnVlIDogdW5kZWZpbmVkKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUcmFuc2Zvcm1zIHRoZSBnaXZlbiBvcHRpb24gdmFsdWUgYmFzZWQgb24gaXRzIHR5cGUuXG5cdCAqXG5cdCAqIEBwYXJhbSB7Kn0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gdHJhbnNmb3JtLlxuXHQgKiBAcGFyYW0ge0Jvb2xlYW59IFtuZWdhdGVkXSAtIFNldCB0byBgdHJ1ZWAgaWYgdGhlIHBhcnNlZCBhcmd1bWVudCBzdGFydGVkIHdpdGggYG5vLWAuXG5cdCAqIEByZXR1cm5zIHsqfVxuXHQgKi9cblx0dHJhbnNmb3JtKHZhbHVlLCBuZWdhdGVkKSB7XG5cdFx0dmFsdWUgPSB0cmFuc2Zvcm1WYWx1ZSh2YWx1ZSwgdGhpcy50eXBlKTtcblxuXHRcdHN3aXRjaCAodGhpcy50eXBlKSB7XG5cdFx0XHRjYXNlICdib29sJzpcblx0XHRcdFx0Ly8gZm9yIGJvb2xzLCB3ZSBuZWVkIHRvIG5lZ2F0ZSwgYnV0IG9ubHkgaWYgdGhlIG9wdGlvbiBuYW1lIHNwZWNpZmllZCBuZWdhdGVkIHZlcnNpb25cblx0XHRcdFx0aWYgKG5lZ2F0ZWQpIHtcblx0XHRcdFx0XHR2YWx1ZSA9ICF2YWx1ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAncG9zaXRpdmVJbnQnOlxuXHRcdFx0Y2FzZSAnaW50Jzpcblx0XHRcdGNhc2UgJ251bWJlcic6XG5cdFx0XHRcdGlmICh0aGlzLm1pbiAhPT0gbnVsbCAmJiB2YWx1ZSA8IHRoaXMubWluKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGBWYWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAke3RoaXMubWlufWApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICh0aGlzLm1heCAhPT0gbnVsbCAmJiB2YWx1ZSA+IHRoaXMubWF4KSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGBWYWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAke3RoaXMubWF4fWApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblxuXHRcdHJldHVybiB2YWx1ZTtcblx0fVxufVxuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9wdGlvbi5qcyJdLCJuYW1lcyI6WyJmb3JtYXRSZWdFeHAiLCJ2YWx1ZVJlZ0V4cCIsIm5lZ2F0ZVJlZ0V4cCIsImFsaWFzU2VwUmVnRXhwIiwiYWxpYXNSZWdFeHAiLCJudW1iZXJSZWdFeHAiLCJPcHRpb24iLCJjb25zdHJ1Y3RvciIsImZvcm1hdCIsInBhcmFtcyIsIlR5cGVFcnJvciIsInRyaW0iLCJBcnJheSIsImlzQXJyYXkiLCJtIiwibWF0Y2giLCJoaW50IiwiYWxpYXNlcyIsImxvbmciLCJzaG9ydCIsImluaXRBbGlhc2VzIiwiaXRlbXMiLCJ2aXNpYmlsaXR5IiwiYWxpYXMiLCJhIiwic3BsaXQiLCJ2aXNpYmxlIiwiaGlkZGVuIiwiT2JqZWN0IiwiYXNzaWduIiwibmVnYXRlIiwibmFtZSIsInZhbHVlIiwicmVxdWlyZWQiLCJjYW1lbENhc2UiLCJjb3VudCIsIm1heCIsIm1pbiIsIm11bHRpcGxlIiwib3JkZXIiLCJ1bmRlZmluZWQiLCJ0eXBlIiwiRXJyb3IiLCJkZWZhdWx0IiwidHJhbnNmb3JtIiwibmVnYXRlZCIsInRlc3QiLCJuIiwicGFyc2VGbG9hdCIsImlzTmFOIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFFQSxNQUFNQSxlQUFlLHVEQUFyQjtBQUNBLE1BQU1DLGNBQWMsb0NBQXBCO0FBQ0EsTUFBTUMsZUFBZSxXQUFyQjtBQUNBLE1BQU1DLGlCQUFpQixRQUF2QjtBQUNBLE1BQU1DLGNBQWMscUJBQXBCO0FBQ0EsTUFBTUMsZUFBZSxlQUFyQjs7QUFFQTs7O0FBR2UsTUFBTUMsTUFBTixDQUFhO0FBQzNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNEJBQyxhQUFZQyxNQUFaLEVBQW9CQyxNQUFwQixFQUE0QjtBQUMzQixNQUFJLENBQUNELE1BQUQsSUFBVyxPQUFPQSxNQUFQLEtBQWtCLFFBQWpDLEVBQTJDO0FBQzFDLFNBQU0sSUFBSUUsU0FBSixDQUFjLGlEQUFkLENBQU47QUFDQTtBQUNERixXQUFTQSxP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S0FBS04sR0FBSSxFQUExRCxDQUFOO0FBQ0E7QUFDRDs7QUFFRDtBQUNDO0FBQ0EsUUFBSS9CLGFBQWF5QyxJQUFiLENBQWtCZCxLQUFsQixDQUFKLEVBQThCO0FBQzdCLFdBQU1lLElBQUlDLFdBQVdoQixLQUFYLENBQVY7QUFDQSxTQUFJLENBQUNpQixNQUFNRixDQUFOLENBQUwsRUFBZTtBQUNkLGFBQU9BLENBQVA7QUFDQTtBQUNEO0FBMUJIOztBQTZCQSxTQUFPZixLQUFQO0FBQ0E7QUF4TDBCO2tCQUFQMUIsTSIsImZpbGUiOiJvcHRpb24uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjaGVja1R5cGUsIHRyYW5zZm9ybVZhbHVlIH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IGZvcm1hdFJlZ0V4cCA9IC9eKD86LShbXi1dKSg/OlsgLHxdKyk/KT8oPzotLShbXlxcc10rKSk/KD86XFxzKz8oLispKT8kLztcbmNvbnN0IHZhbHVlUmVnRXhwID0gL14oXFxbKD89LitcXF0kKXw8KD89Lis+JCkpKC4rKVtcXF0+XSQvO1xuY29uc3QgbmVnYXRlUmVnRXhwID0gL15uby0oLispJC87XG5jb25zdCBhbGlhc1NlcFJlZ0V4cCA9IC9bICx8XSsvO1xuY29uc3QgYWxpYXNSZWdFeHAgPSAvXig/Oi0oLil8LXsyfSguKykpJC87XG5jb25zdCBudW1iZXJSZWdFeHAgPSAvXlxcZCsoXFwuXFxkKik/JC87XG5cbi8qKlxuICogRGVmaW5lcyBhbiBvcHRpb24gYW5kIGl0J3MgcGFyYW1ldGVycy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgT3B0aW9uIHtcblx0LyoqXG5cdCAqIENyZWF0ZXMgYW4gb3B0aW9uIGRlc2NyaXB0b3IuXG5cdCAqXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBmb3JtYXQgLSBUaGUgb3B0aW9uIGZvcm1hdCBjb250YWluaW5nIHRoZSBnZW5lcmFsIGluZm8uXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbcGFyYW1zXSAtIEFkZGl0aW9uYWwgcGFyYW1ldGVycy5cblx0ICogQHBhcmFtIHtPYmplY3R8QXJyYXk8U3RyaW5nPnxTdHJpbmd9IFtwYXJhbXMuYWxpYXNlc10gLSBBbiBhcnJheSBvZiBhbGlhc2VzIG9yIGFuIG9iamVjdCB3aXRoXG5cdCAqIGB2aXNpYmxlYCBhbmQgYGhpZGRlbmAgYXJyYXlzIG9mIGFsaWFzZXMuXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IFtwYXJhbXMuY2FsbGJhY2tdIC0gQSBmdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIG9wdGlvbiBoYXMgYmVlbiBwYXJzZWQuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW3BhcmFtcy5jYW1lbENhc2U9dHJ1ZV0gLSBJZiBvcHRpb24gaGFzIGEgbmFtZSBvciBjYW4gZGVyaXZlIGEgbmFtZSBmcm9tIHRoZVxuXHQgKiBsb25nIG9wdGlvbiBmb3JtYXQsIHRoZW4gaXQgdGhlIG5hbWUgYmUgY2FtZWwgY2FzZWQuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW3BhcmFtcy5jb3VudF0gLSA/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/IGZvcmNlIHR5cGUgdG8gYm9vbGVhbiBPUiBtYWtlIFwiY291bnRcIiBhIHR5cGVcblx0ICogQHBhcmFtIHsqfSBbcGFyYW1zLmRlZmF1bHRdIC0gPz8/Pz8/P1xuXHQgKiBAcGFyYW0ge1N0cmluZ30gW3BhcmFtcy5kZXNjXSAtIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgb3B0aW9uIHVzZWQgaW4gdGhlIGhlbHAgZGlzcGxheS5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtwYXJhbS5lbnZdIC0gVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWUgdG8gZ2V0IGEgdmFsdWUgZnJvbS4gSWYgdGhlXG5cdCAqIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHNldCwgaXQgb3ZlcnJpZGVzIHRoZSB2YWx1ZSBwYXJzZWQgZnJvbSB0aGUgYXJndW1lbnRzLlxuXHQgKiBAcGFyYW0ge0Jvb2xlYW59IFtwYXJhbXMuaGlkZGVuPWZhbHNlXSAtIFdoZW4gYHRydWVgLCB0aGUgb3B0aW9uIGlzIG5vdCBkaXNwbGF5ZWQgb24gdGhlIGhlbHBcblx0ICogc2NyZWVuIG9yIGF1dG8tc3VnZ2VzdC5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtwYXJhbXMuaGludF0gLSBUaGUgaGludCBsYWJlbCBpZiB0aGUgb3B0aW9uIGV4cGVjdHMgYSB2YWx1ZS5cblx0ICogQHBhcmFtIHtOdW1iZXJ9IFtwYXJhbXMubWluXSAtIFdoZW4gYHR5cGVgIGlzIGBpbnRgLCBgbnVtYmVyYCwgb3IgYHBvc2l0aXZlSW50YCwgdGhlbiBjaGVja3Ncblx0ICogdGhhdCB0aGUgb3B0aW9uJ3MgdmFsdWUgaXMgYXQgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBzcGVjaWZpZWQgdmFsdWUuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW3BhcmFtcy5tdWx0aXBsZV0gLSA/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/XG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbcGFyYW1zLm5hbWVdIC0gVGhlIG5hbWUgb2YgdGhlIG9wdGlvbi5cblx0ICogQHBhcmFtIHtCb29sZWFufSBbcGFyYW1zLm5lZ2F0ZV0gLSBXaGVuIGB0cnVlYCwgPz8/Pz8/Pz8/P1xuXHQgKiBAcGFyYW0ge0Jvb2xlYW59IFtwYXJhbXMucmVxdWlyZWRdIC0gTWFya3MgdGhlIG9wdGlvbiB2YWx1ZSBhcyByZXF1aXJlZC5cblx0ICogQHBhcmFtIHtTdHJpbmd8QXJyYXkuPFN0cmluZz59IFtwYXJhbXMudHlwZV0gLSBUaGUgb3B0aW9uIHR5cGUgdG8gY29lcmNlIHRoZSBkYXRhIHR5cGUgaW50by5cblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gW3BhcmFtcy52YWxpZGF0ZV0gLSBBIGZ1bmN0aW9uIHRvIGNhbGwgdG8gdmFsaWRhdGUgdGhlIG9wdGlvbiB2YWx1ZS5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGNvbnN0cnVjdG9yKGZvcm1hdCwgcGFyYW1zKSB7XG5cdFx0aWYgKCFmb3JtYXQgfHwgdHlwZW9mIGZvcm1hdCAhPT0gJ3N0cmluZycpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIG9wdGlvbiBmb3JtYXQgdG8gYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG5cdFx0fVxuXHRcdGZvcm1hdCA9IGZvcm1hdC50cmltKCk7XG5cblx0XHRpZiAoIXBhcmFtcykge1xuXHRcdFx0cGFyYW1zID0ge307XG5cdFx0fVxuXHRcdGlmICh0eXBlb2YgcGFyYW1zICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KHBhcmFtcykpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIHBhcmFtcyB0byBiZSBhbiBvYmplY3QnKTtcblx0XHR9XG5cblx0XHQvLyBmaXJzdCB0cnkgdG8gc2VlIGlmIHdlIGhhdmUgYSB2YWxpZCBvcHRpb24gZm9ybWF0XG5cdFx0Y29uc3QgbSA9IGZvcm1hdC5tYXRjaChmb3JtYXRSZWdFeHApO1xuXHRcdGlmICghbSB8fCAoIW1bMV0gJiYgIW1bMl0pKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKGBJbnZhbGlkIG9wdGlvbiBmb3JtYXQgXCIke2Zvcm1hdH1cImApO1xuXHRcdH1cblx0XHRjb25zdCBoaW50ID0gbVszXTtcblxuXHRcdC8vIHByb2Nlc3MgdGhlIGFsaWFzZXNcblx0XHRjb25zdCBhbGlhc2VzID0ge1xuXHRcdFx0bG9uZzoge30sXG5cdFx0XHRzaG9ydDoge31cblx0XHR9O1xuXG5cdFx0aWYgKHBhcmFtcy5hbGlhc2VzKSB7XG5cdFx0XHRjb25zdCBpbml0QWxpYXNlcyA9IChpdGVtcywgdmlzaWJpbGl0eSA9ICdoaWRkZW4nKSA9PiB7XG5cdFx0XHRcdGlmIChBcnJheS5pc0FycmF5KGl0ZW1zKSkge1xuXHRcdFx0XHRcdGZvciAoY29uc3QgYWxpYXMgb2YgaXRlbXMpIHtcblx0XHRcdFx0XHRcdGlmICghYWxpYXMgfHwgdHlwZW9mIGFsaWFzICE9PSAnc3RyaW5nJykge1xuXHRcdFx0XHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBhbGlhc2VzIHRvIGJlIGFuIGFycmF5IG9mIHN0cmluZ3Mgb3IgYW4gb2JqZWN0IHdpdGggdmlzaWJsZS9oaWRkZW4gYXJyYXkgb2Ygc3RyaW5ncycpO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRmb3IgKGNvbnN0IGEgb2YgYWxpYXMuc3BsaXQoYWxpYXNTZXBSZWdFeHApKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IG0gPSBhLm1hdGNoKGFsaWFzUmVnRXhwKTtcblx0XHRcdFx0XHRcdFx0aWYgKCFtKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcihgSW52YWxpZCBhbGlhcyBmb3JtYXQgXCIke2FsaWFzfVwiYCk7XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRpZiAobVsxXSkge1xuXHRcdFx0XHRcdFx0XHRcdGFsaWFzZXMuc2hvcnRbbVsxXV0gPSB2aXNpYmlsaXR5O1xuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKG1bMl0pIHtcblx0XHRcdFx0XHRcdFx0XHRhbGlhc2VzLmxvbmdbbVsyXV0gPSB2aXNpYmlsaXR5O1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXG5cdFx0XHRpZiAoQXJyYXkuaXNBcnJheShwYXJhbXMuYWxpYXNlcykpIHtcblx0XHRcdFx0aW5pdEFsaWFzZXMocGFyYW1zLmFsaWFzZXMpO1xuXHRcdFx0fSBlbHNlIGlmICh0eXBlb2YgcGFyYW1zLmFsaWFzZXMgPT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdGluaXRBbGlhc2VzKHBhcmFtcy5hbGlhc2VzLnZpc2libGUsICd2aXNpYmxlJyk7XG5cdFx0XHRcdGluaXRBbGlhc2VzKHBhcmFtcy5hbGlhc2VzLmhpZGRlbik7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRpbml0QWxpYXNlcyhbIHBhcmFtcy5hbGlhc2VzIF0pO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdE9iamVjdC5hc3NpZ24odGhpcywgcGFyYW1zKTtcblxuXHRcdC8vIGluaXRpYWxpemUgdGhlIHBhcmFtIHZhbHVlc1xuXHRcdHRoaXMuYWxpYXNlcyAgPSBhbGlhc2VzO1xuXHRcdHRoaXMubG9uZyAgICAgPSBudWxsO1xuXHRcdHRoaXMubmVnYXRlICAgPSBmYWxzZTtcblx0XHR0aGlzLnNob3J0ICAgID0gbVsxXSB8fCBudWxsO1xuXG5cdFx0Ly8gY2hlY2sgaWYgd2UgaGF2ZSBhIGxvbmcgb3B0aW9uIGFuZCBuYW1lXG5cdFx0aWYgKG1bMl0pIHtcblx0XHRcdGNvbnN0IG5lZ2F0ZSA9IG1bMl0ubWF0Y2gobmVnYXRlUmVnRXhwKTtcblx0XHRcdHRoaXMubmVnYXRlID0gISFuZWdhdGU7XG5cdFx0XHR0aGlzLm5hbWUgPSBuZWdhdGUgPyBuZWdhdGVbMV0gOiBtWzJdO1xuXHRcdFx0dGhpcy5sb25nID0gdGhpcy5uYW1lO1xuXHRcdH1cblxuXHRcdC8vIGNoZWNrIGlmIHdlIGhhdmUgYSBoaW50XG5cdFx0aWYgKGhpbnQpIHtcblx0XHRcdGNvbnN0IHZhbHVlID0gaGludC5tYXRjaCh2YWx1ZVJlZ0V4cCk7XG5cdFx0XHRpZiAodmFsdWUpIHtcblx0XHRcdFx0dGhpcy5yZXF1aXJlZCA9IHZhbHVlWzFdID09PSAnPCc7XG5cdFx0XHRcdHRoaXMuaGludCA9IHZhbHVlWzJdLnRyaW0oKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMuaGludCA9IGhpbnQ7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gVE9ETzogcGFyYW1zLnJlZ2V4XG5cblx0XHR0aGlzLmNhbWVsQ2FzZSA9IHBhcmFtcy5uYW1lIHx8IHRoaXMubmFtZSA/IHBhcmFtcy5jYW1lbENhc2UgIT09IGZhbHNlIDogZmFsc2U7XG5cdFx0dGhpcy5jb3VudCAgICAgPSAhIXBhcmFtcy5jb3VudDtcblx0XHR0aGlzLmhpZGRlbiAgICA9ICEhcGFyYW1zLmhpZGRlbjtcblx0XHR0aGlzLmhpbnQgICAgICA9IHBhcmFtcy5oaW50IHx8IHRoaXMuaGludDtcblx0XHR0aGlzLm1heCAgICAgICA9IHBhcmFtcy5tYXggfHwgbnVsbDtcblx0XHR0aGlzLm1pbiAgICAgICA9IHBhcmFtcy5taW4gfHwgbnVsbDtcblx0XHR0aGlzLm11bHRpcGxlICA9ICEhcGFyYW1zLm11bHRpcGxlO1xuXHRcdHRoaXMubmFtZSAgICAgID0gcGFyYW1zLm5hbWUgfHwgdGhpcy5uYW1lIHx8ICh0aGlzLmxvbmcgPyBgLS0ke3RoaXMubG9uZ31gIDogdGhpcy5zaG9ydCA/IGAtJHt0aGlzLnNob3J0fWAgOiBudWxsKTtcblx0XHR0aGlzLm9yZGVyICAgICA9IHBhcmFtcy5vcmRlciB8fCBudWxsO1xuXHRcdHRoaXMucmVxdWlyZWQgID0gdGhpcy5yZXF1aXJlZCA9PT0gdW5kZWZpbmVkID8gISFwYXJhbXMucmVxdWlyZWQgOiB0aGlzLnJlcXVpcmVkO1xuXHRcdHRoaXMudHlwZSAgICAgID0gY2hlY2tUeXBlKHBhcmFtcy50eXBlLCB0aGlzLmhpbnQgfHwgJ2Jvb2wnKTtcblxuXHRcdGlmICh0aGlzLnR5cGUgIT09ICdib29sJykge1xuXHRcdFx0aWYgKHRoaXMubmVnYXRlKSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcignTmVnYXRlIHJlcXVpcmVzIG9wdGlvbiB0byBiZSBhIGJvb2wnKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHRoaXMuY291bnQpIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKCdDb3VudCByZXF1aXJlcyBvcHRpb24gdG8gYmUgYSBib29sJyk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0dGhpcy5kZWZhdWx0ICAgPSBwYXJhbXMuZGVmYXVsdCB8fCAodGhpcy50eXBlID09PSAnYm9vbCcgJiYgdGhpcy5uZWdhdGUgPyB0cnVlIDogdW5kZWZpbmVkKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUcmFuc2Zvcm1zIHRoZSBnaXZlbiBvcHRpb24gdmFsdWUgYmFzZWQgb24gaXRzIHR5cGUuXG5cdCAqXG5cdCAqIEBwYXJhbSB7Kn0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gdHJhbnNmb3JtLlxuXHQgKiBAcGFyYW0ge0Jvb2xlYW59IFtuZWdhdGVkXSAtIFNldCB0byBgdHJ1ZWAgaWYgdGhlIHBhcnNlZCBhcmd1bWVudCBzdGFydGVkIHdpdGggYG5vLWAuXG5cdCAqIEByZXR1cm5zIHsqfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0dHJhbnNmb3JtKHZhbHVlLCBuZWdhdGVkKSB7XG5cdFx0dmFsdWUgPSB0cmFuc2Zvcm1WYWx1ZSh2YWx1ZSwgdGhpcy50eXBlKTtcblxuXHRcdHN3aXRjaCAodGhpcy50eXBlKSB7XG5cdFx0XHRjYXNlICdib29sJzpcblx0XHRcdFx0Ly8gZm9yIGJvb2xzLCB3ZSBuZWVkIHRvIG5lZ2F0ZSwgYnV0IG9ubHkgaWYgdGhlIG9wdGlvbiBuYW1lIHNwZWNpZmllZCBuZWdhdGVkIHZlcnNpb25cblx0XHRcdFx0aWYgKG5lZ2F0ZWQpIHtcblx0XHRcdFx0XHR2YWx1ZSA9ICF2YWx1ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAncG9zaXRpdmVJbnQnOlxuXHRcdFx0Y2FzZSAnaW50Jzpcblx0XHRcdGNhc2UgJ251bWJlcic6XG5cdFx0XHRcdGlmICh0aGlzLm1pbiAhPT0gbnVsbCAmJiB2YWx1ZSA8IHRoaXMubWluKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGBWYWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAke3RoaXMubWlufWApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICh0aGlzLm1heCAhPT0gbnVsbCAmJiB2YWx1ZSA+IHRoaXMubWF4KSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGBWYWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAke3RoaXMubWF4fWApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHQvLyBjaGVjayBpZiB2YWx1ZSBjb3VsZCBiZSBhIG51bWJlclxuXHRcdFx0XHRpZiAobnVtYmVyUmVnRXhwLnRlc3QodmFsdWUpKSB7XG5cdFx0XHRcdFx0Y29uc3QgbiA9IHBhcnNlRmxvYXQodmFsdWUpO1xuXHRcdFx0XHRcdGlmICghaXNOYU4obikpIHtcblx0XHRcdFx0XHRcdHJldHVybiBuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB2YWx1ZTtcblx0fVxufVxuIl19 |
@@ -8,3 +8,3 @@ 'use strict'; | ||
exports.transformValue = transformValue; | ||
exports.addType = addType; | ||
exports.registerType = registerType; | ||
const dateRegExp = /^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?Z?)?$/i; | ||
@@ -53,3 +53,3 @@ const intRegExp = /^[0-9-]+$/; | ||
function transformValue(value, type) { | ||
if (typeof types[type].transform === 'function') { | ||
if (types[type] && typeof types[type].transform === 'function') { | ||
value = types[type].transform(value); | ||
@@ -60,3 +60,16 @@ } | ||
/** | ||
* Defines a option/argument data type and its transform function. | ||
*/ | ||
class Type { | ||
/** | ||
* Creates the data type instance. | ||
* | ||
* @param {Object} opts - Various options. | ||
* @param {String} opts.name - The name of the data type. | ||
* @param {Function} [opts.transform] - A function that transforms the parsed option/argument | ||
* string value to the correct data type. By default, no transform is applied and values will | ||
* remain as strings. | ||
* @access public | ||
*/ | ||
constructor(opts) { | ||
@@ -80,4 +93,9 @@ if (!opts || typeof opts !== 'object' || Array.isArray(opts)) { | ||
exports.Type = Type; | ||
function addType(opts) { | ||
exports.Type = Type; /** | ||
* Registers a type. | ||
* | ||
* @param {Type|Object} opts - A `Type` instance or params for constructing a new `Type` instance. | ||
*/ | ||
function registerType(opts) { | ||
if (!(opts instanceof Type)) { | ||
@@ -89,5 +107,5 @@ opts = new Type(opts); | ||
addType({ | ||
registerType({ | ||
name: 'bool', | ||
transform: value => { | ||
transform(value) { | ||
return value && value !== 'false'; | ||
@@ -97,5 +115,5 @@ } | ||
addType({ | ||
registerType({ | ||
name: 'date', | ||
transform: value => { | ||
transform(value) { | ||
let date; | ||
@@ -120,5 +138,5 @@ | ||
addType({ | ||
registerType({ | ||
name: 'file', | ||
transform: value => { | ||
transform(value) { | ||
if (!value) { | ||
@@ -131,5 +149,5 @@ throw new Error('Invalid file'); | ||
addType({ | ||
registerType({ | ||
name: 'int', | ||
transform: value => { | ||
transform(value) { | ||
let num; | ||
@@ -143,5 +161,5 @@ if (!intRegExp.test(value) || isNaN(num = Number(value))) { | ||
addType({ | ||
registerType({ | ||
name: 'json', | ||
transform: value => { | ||
transform(value) { | ||
try { | ||
@@ -155,5 +173,5 @@ return JSON.parse(value); | ||
addType({ | ||
registerType({ | ||
name: 'number', | ||
transform: value => { | ||
transform(value) { | ||
let num = Number(value); | ||
@@ -167,5 +185,5 @@ if (isNaN(num)) { | ||
addType({ | ||
registerType({ | ||
name: 'positiveInt', | ||
transform: value => { | ||
transform(value) { | ||
let num; | ||
@@ -179,10 +197,9 @@ if (!intRegExp.test(value) || isNaN(num = Number(value)) || num < 0) { | ||
addType({ | ||
name: 'string', | ||
transform: value => value | ||
registerType({ | ||
name: 'string' | ||
}); | ||
addType({ | ||
registerType({ | ||
name: 'yesno', | ||
transform: value => { | ||
transform(value) { | ||
if (yesRegExp.test(value)) { | ||
@@ -197,2 +214,2 @@ return true; | ||
}); | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInR5cGVzLmpzIl0sIm5hbWVzIjpbImNoZWNrVHlwZSIsInRyYW5zZm9ybVZhbHVlIiwiYWRkVHlwZSIsImRhdGVSZWdFeHAiLCJpbnRSZWdFeHAiLCJ5ZXNSZWdFeHAiLCJub1JlZ0V4cCIsInR5cGVzIiwidHlwZSIsImRlZmF1bHRWYWx1ZSIsIkVycm9yIiwidmFsdWUiLCJ0cmFuc2Zvcm0iLCJUeXBlIiwiY29uc3RydWN0b3IiLCJvcHRzIiwiQXJyYXkiLCJpc0FycmF5IiwiVHlwZUVycm9yIiwibmFtZSIsImRhdGUiLCJ0ZXN0IiwibnVtIiwiTnVtYmVyIiwiaXNOYU4iLCJEYXRlIiwidG9TdHJpbmciLCJKU09OIiwicGFyc2UiLCJlIiwibWVzc2FnZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7UUF1QmdCQSxTLEdBQUFBLFM7UUFtQkFDLGMsR0FBQUEsYztRQTBCQUMsTyxHQUFBQSxPO0FBcEVoQixNQUFNQyxhQUFhLHFEQUFuQjtBQUNBLE1BQU1DLFlBQVksV0FBbEI7QUFDQSxNQUFNQyxZQUFZLFVBQWxCO0FBQ0EsTUFBTUMsV0FBVyxPQUFqQjs7QUFFQTs7Ozs7OztBQU9PLE1BQU1DLHdCQUFRLEVBQWQ7O0FBRVA7Ozs7Ozs7OztBQVNPLFNBQVNQLFNBQVQsQ0FBbUJRLElBQW5CLEVBQXlCQyxZQUF6QixFQUF1QztBQUM3QyxLQUFJRCxRQUFRLENBQUNELE1BQU1DLElBQU4sQ0FBYixFQUEwQjtBQUN6QixRQUFNLElBQUlFLEtBQUosQ0FBVyxxQkFBb0JGLElBQUssR0FBcEMsQ0FBTjtBQUNBOztBQUVELEtBQUksQ0FBQ0EsSUFBRCxJQUFTQyxZQUFiLEVBQTJCO0FBQzFCLFNBQU9BLFlBQVA7QUFDQTs7QUFFRCxRQUFPRCxJQUFQO0FBQ0E7O0FBRUQ7Ozs7Ozs7QUFPTyxTQUFTUCxjQUFULENBQXdCVSxLQUF4QixFQUErQkgsSUFBL0IsRUFBcUM7QUFDM0MsS0FBSSxPQUFPRCxNQUFNQyxJQUFOLEVBQVlJLFNBQW5CLEtBQWlDLFVBQXJDLEVBQWlEO0FBQ2hERCxVQUFRSixNQUFNQyxJQUFOLEVBQVlJLFNBQVosQ0FBc0JELEtBQXRCLENBQVI7QUFDQTtBQUNELFFBQU9BLEtBQVA7QUFDQTs7QUFFTSxNQUFNRSxJQUFOLENBQVc7QUFDakJDLGFBQVlDLElBQVosRUFBa0I7QUFDakIsTUFBSSxDQUFDQSxJQUFELElBQVMsT0FBT0EsSUFBUCxLQUFnQixRQUF6QixJQUFxQ0MsTUFBTUMsT0FBTixDQUFjRixJQUFkLENBQXpDLEVBQThEO0FBQzdELFNBQU0sSUFBSUcsU0FBSixDQUFjLCtCQUFkLENBQU47QUFDQTs7QUFFRCxNQUFJLENBQUNILEtBQUtJLElBQVYsRUFBZ0I7QUFDZixTQUFNLElBQUlULEtBQUosQ0FBVSxtQkFBVixDQUFOO0FBQ0E7O0FBRUQsTUFBSUssS0FBS0gsU0FBTCxJQUFrQixPQUFPRyxLQUFLSCxTQUFaLEtBQTBCLFVBQWhELEVBQTREO0FBQzNELFNBQU0sSUFBSU0sU0FBSixDQUFjLHFDQUFkLENBQU47QUFDQTs7QUFFRCxPQUFLQyxJQUFMLEdBQVlKLEtBQUtJLElBQWpCO0FBQ0EsT0FBS1AsU0FBTCxHQUFpQkcsS0FBS0gsU0FBdEI7QUFDQTtBQWhCZ0I7O1FBQUxDLEksR0FBQUEsSTtBQW1CTixTQUFTWCxPQUFULENBQWlCYSxJQUFqQixFQUF1QjtBQUM3QixLQUFJLEVBQUVBLGdCQUFnQkYsSUFBbEIsQ0FBSixFQUE2QjtBQUM1QkUsU0FBTyxJQUFJRixJQUFKLENBQVNFLElBQVQsQ0FBUDtBQUNBO0FBQ0RSLE9BQU1RLEtBQUtJLElBQVgsSUFBbUJKLElBQW5CO0FBQ0E7O0FBRURiLFFBQVE7QUFDUGlCLE9BQU0sTUFEQztBQUVQUCxZQUFXRCxTQUFTO0FBQ25CLFNBQU9BLFNBQVNBLFVBQVUsT0FBMUI7QUFDQTtBQUpNLENBQVI7O0FBT0FULFFBQVE7QUFDUGlCLE9BQU0sTUFEQztBQUVQUCxZQUFXRCxTQUFTO0FBQ25CLE1BQUlTLElBQUo7O0FBRUEsTUFBSWhCLFVBQVVpQixJQUFWLENBQWVWLEtBQWYsQ0FBSixFQUEyQjtBQUMxQixTQUFNVyxNQUFNQyxPQUFPWixLQUFQLENBQVo7QUFDQSxPQUFJLENBQUNhLE1BQU1GLEdBQU4sQ0FBRCxJQUFlQSxNQUFNLENBQXpCLEVBQTRCO0FBQzNCRixXQUFPLElBQUlLLElBQUosQ0FBU0gsTUFBTSxJQUFmLENBQVA7QUFDQTtBQUNELEdBTEQsTUFLTyxJQUFJbkIsV0FBV2tCLElBQVgsQ0FBZ0JWLEtBQWhCLENBQUosRUFBNEI7QUFDbENTLFVBQU8sSUFBSUssSUFBSixDQUFTZCxLQUFULENBQVA7QUFDQTs7QUFFRCxNQUFJLENBQUNTLElBQUQsSUFBU0EsS0FBS00sUUFBTCxPQUFvQixjQUFqQyxFQUFpRDtBQUNoRCxTQUFNLElBQUloQixLQUFKLENBQVUsY0FBVixDQUFOO0FBQ0E7O0FBRUQsU0FBT1UsSUFBUDtBQUNBO0FBbkJNLENBQVI7O0FBc0JBbEIsUUFBUTtBQUNQaUIsT0FBTSxNQURDO0FBRVBQLFlBQVdELFNBQVM7QUFDbkIsTUFBSSxDQUFDQSxLQUFMLEVBQVk7QUFDWCxTQUFNLElBQUlELEtBQUosQ0FBVSxjQUFWLENBQU47QUFDQTtBQUNELFNBQU9DLEtBQVA7QUFDQTtBQVBNLENBQVI7O0FBVUFULFFBQVE7QUFDUGlCLE9BQU0sS0FEQztBQUVQUCxZQUFXRCxTQUFTO0FBQ25CLE1BQUlXLEdBQUo7QUFDQSxNQUFJLENBQUNsQixVQUFVaUIsSUFBVixDQUFlVixLQUFmLENBQUQsSUFBMEJhLE1BQU1GLE1BQU1DLE9BQU9aLEtBQVAsQ0FBWixDQUE5QixFQUEwRDtBQUN6RCxTQUFNLElBQUlELEtBQUosQ0FBVSx5QkFBVixDQUFOO0FBQ0E7QUFDRCxTQUFPWSxHQUFQO0FBQ0E7QUFSTSxDQUFSOztBQVdBcEIsUUFBUTtBQUNQaUIsT0FBTSxNQURDO0FBRVBQLFlBQVdELFNBQVM7QUFDbkIsTUFBSTtBQUNILFVBQU9nQixLQUFLQyxLQUFMLENBQVdqQixLQUFYLENBQVA7QUFDQSxHQUZELENBRUUsT0FBT2tCLENBQVAsRUFBVTtBQUNYLFNBQU0sSUFBSW5CLEtBQUosQ0FBVyxpQkFBZ0JtQixFQUFFQyxPQUFRLEVBQXJDLENBQU47QUFDQTtBQUNEO0FBUk0sQ0FBUjs7QUFXQTVCLFFBQVE7QUFDUGlCLE9BQU0sUUFEQztBQUVQUCxZQUFXRCxTQUFTO0FBQ25CLE1BQUlXLE1BQU1DLE9BQU9aLEtBQVAsQ0FBVjtBQUNBLE1BQUlhLE1BQU1GLEdBQU4sQ0FBSixFQUFnQjtBQUNmLFNBQU0sSUFBSVosS0FBSixDQUFVLHlCQUFWLENBQU47QUFDQTtBQUNELFNBQU9ZLEdBQVA7QUFDQTtBQVJNLENBQVI7O0FBV0FwQixRQUFRO0FBQ1BpQixPQUFNLGFBREM7QUFFUFAsWUFBV0QsU0FBUztBQUNuQixNQUFJVyxHQUFKO0FBQ0EsTUFBSSxDQUFDbEIsVUFBVWlCLElBQVYsQ0FBZVYsS0FBZixDQUFELElBQTBCYSxNQUFNRixNQUFNQyxPQUFPWixLQUFQLENBQVosQ0FBMUIsSUFBd0RXLE1BQU0sQ0FBbEUsRUFBcUU7QUFDcEUsU0FBTSxJQUFJWixLQUFKLENBQVUsaUNBQVYsQ0FBTjtBQUNBO0FBQ0QsU0FBT1ksR0FBUDtBQUNBO0FBUk0sQ0FBUjs7QUFXQXBCLFFBQVE7QUFDUGlCLE9BQU0sUUFEQztBQUVQUCxZQUFXRCxTQUFTQTtBQUZiLENBQVI7O0FBS0FULFFBQVE7QUFDUGlCLE9BQU0sT0FEQztBQUVQUCxZQUFXRCxTQUFTO0FBQ25CLE1BQUlOLFVBQVVnQixJQUFWLENBQWVWLEtBQWYsQ0FBSixFQUEyQjtBQUMxQixVQUFPLElBQVA7QUFDQTtBQUNELE1BQUlMLFNBQVNlLElBQVQsQ0FBY1YsS0FBZCxDQUFKLEVBQTBCO0FBQ3pCLFVBQU8sS0FBUDtBQUNBO0FBQ0QsUUFBTSxJQUFJRCxLQUFKLENBQVUsNkJBQVYsQ0FBTjtBQUNBO0FBVk0sQ0FBUiIsImZpbGUiOiJ0eXBlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGRhdGVSZWdFeHAgPSAvXlxcZHs0fS1cXGR7Mn0tXFxkezJ9KFRcXGR7Mn06XFxkezJ9OlxcZHsyfShcXC5cXGQrKT9aPyk/JC9pO1xuY29uc3QgaW50UmVnRXhwID0gL15bMC05LV0rJC87XG5jb25zdCB5ZXNSZWdFeHAgPSAvXnkoZXMpPyQvO1xuY29uc3Qgbm9SZWdFeHAgPSAvXm5vPyQvO1xuXG4vKipcbiAqIE9wdGlvbnMvYXJncyBoYXZlIGEgdHlwZS4gR2VuZXJhbGx5IHRoZXkgYXJlIGVpdGhlciBhIGBib29sYCAoZmxhZykgb3JcbiAqIGBzdHJpbmdgIChvcHRpb24vYXJnKS4gSG93ZXZlciwgZm9yIG5vbi1ib29sIG9wdGlvbnMsIHlvdSBjYW4gc3BlY2lmeSBhIHR5cGVcbiAqIHRoYXQgd2lsbCB2YWxpZGF0ZSBhbmQgZm9ybWF0IHRoZSB2YWx1ZS5cbiAqXG4gKiBCZWxvdyBpcyB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgdHlwZXMgYW5kIHRoZWlyIHRyYW5zZm9ybWVycy5cbiAqL1xuZXhwb3J0IGNvbnN0IHR5cGVzID0ge307XG5cbi8qKlxuICogRW5zdXJlcyB0aGF0IHRoZSBzcGVjaWZpZWQgbGlzdCBvZiB0eXBlcyBpcyBpbmRlZWQgYW4gYXJyYXkgYW5kIGVhY2ggdmFsdWUgaXMgYSBzdXBwb3J0ZWQgdHlwZSxcbiAqIHRoZW4gcmV0dXJucyB0aGUgY2xlYW5lZCB1cCBsaXN0IG9mIHR5cGVzIG9yIGEgZGVmYXVsdCB2YWx1ZSBpZiBubyB0eXBlcyB3ZXJlIGZvdW5kLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlIC0gQSBsaXN0IG9mIHR5cGVzIHRvIHZhbGlkYXRlLlxuICogQHBhcmFtIHtTdHJpbmd9IFtkZWZhdWx0VmFsdWVdIC0gQW4gb3B0aW9uYWwgbGlzdCBvZiB0eXBlcyB0byBkZWZhdWx0IHRvIGlmIG5vXG4gKiB0eXBlcyB3ZXJlIG9yaWdpbmFsbHkgc3BlY2lmaWVkLlxuICogQHJldHVybnMge1N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrVHlwZSh0eXBlLCBkZWZhdWx0VmFsdWUpIHtcblx0aWYgKHR5cGUgJiYgIXR5cGVzW3R5cGVdKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCB0eXBlIFwiJHt0eXBlfVwiYCk7XG5cdH1cblxuXHRpZiAoIXR5cGUgJiYgZGVmYXVsdFZhbHVlKSB7XG5cdFx0cmV0dXJuIGRlZmF1bHRWYWx1ZTtcblx0fVxuXG5cdHJldHVybiB0eXBlO1xufVxuXG4vKipcbiAqIFRyYW5zZm9ybXMgYSB2YWx1ZSB0byB0aGUgZmlyc3Qgc3VjY2Vzc2Z1bGx5IHRyYW5zZm9ybWVkIGRhdGEgdHlwZS5cbiAqXG4gKiBAcGFyYW0geyp9IHZhbHVlIC0gVGhlIHZhbHVlIHRvIHRyYW5zZm9ybS5cbiAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlIC0gQSBsaXN0IG9mIGRhdGEgdHlwZXMgdG8gdHJ5IHRvIGNvZXJjZSB0aGUgdmFsdWUgaW50by5cbiAqIEByZXR1cm5zIHsqfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtVmFsdWUodmFsdWUsIHR5cGUpIHtcblx0aWYgKHR5cGVvZiB0eXBlc1t0eXBlXS50cmFuc2Zvcm0gPT09ICdmdW5jdGlvbicpIHtcblx0XHR2YWx1ZSA9IHR5cGVzW3R5cGVdLnRyYW5zZm9ybSh2YWx1ZSk7XG5cdH1cblx0cmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgY2xhc3MgVHlwZSB7XG5cdGNvbnN0cnVjdG9yKG9wdHMpIHtcblx0XHRpZiAoIW9wdHMgfHwgdHlwZW9mIG9wdHMgIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkob3B0cykpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIG9wdHMgdG8gYmUgYW4gb2JqZWN0Jyk7XG5cdFx0fVxuXG5cdFx0aWYgKCFvcHRzLm5hbWUpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignTWlzc2luZyB0eXBlIG5hbWUnKTtcblx0XHR9XG5cblx0XHRpZiAob3B0cy50cmFuc2Zvcm0gJiYgdHlwZW9mIG9wdHMudHJhbnNmb3JtICE9PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCB0cmFuc2Zvcm0gdG8gYmUgYSBmdW5jdGlvbicpO1xuXHRcdH1cblxuXHRcdHRoaXMubmFtZSA9IG9wdHMubmFtZTtcblx0XHR0aGlzLnRyYW5zZm9ybSA9IG9wdHMudHJhbnNmb3JtO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRUeXBlKG9wdHMpIHtcblx0aWYgKCEob3B0cyBpbnN0YW5jZW9mIFR5cGUpKSB7XG5cdFx0b3B0cyA9IG5ldyBUeXBlKG9wdHMpO1xuXHR9XG5cdHR5cGVzW29wdHMubmFtZV0gPSBvcHRzO1xufVxuXG5hZGRUeXBlKHtcblx0bmFtZTogJ2Jvb2wnLFxuXHR0cmFuc2Zvcm06IHZhbHVlID0+IHtcblx0XHRyZXR1cm4gdmFsdWUgJiYgdmFsdWUgIT09ICdmYWxzZSc7XG5cdH1cbn0pO1xuXG5hZGRUeXBlKHtcblx0bmFtZTogJ2RhdGUnLFxuXHR0cmFuc2Zvcm06IHZhbHVlID0+IHtcblx0XHRsZXQgZGF0ZTtcblxuXHRcdGlmIChpbnRSZWdFeHAudGVzdCh2YWx1ZSkpIHtcblx0XHRcdGNvbnN0IG51bSA9IE51bWJlcih2YWx1ZSk7XG5cdFx0XHRpZiAoIWlzTmFOKG51bSkgJiYgbnVtID4gMCkge1xuXHRcdFx0XHRkYXRlID0gbmV3IERhdGUobnVtICogMTAwMCk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChkYXRlUmVnRXhwLnRlc3QodmFsdWUpKSB7XG5cdFx0XHRkYXRlID0gbmV3IERhdGUodmFsdWUpO1xuXHRcdH1cblxuXHRcdGlmICghZGF0ZSB8fCBkYXRlLnRvU3RyaW5nKCkgPT09ICdJbnZhbGlkIGRhdGUnKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZGF0ZScpO1xuXHRcdH1cblxuXHRcdHJldHVybiBkYXRlO1xuXHR9XG59KTtcblxuYWRkVHlwZSh7XG5cdG5hbWU6ICdmaWxlJyxcblx0dHJhbnNmb3JtOiB2YWx1ZSA9PiB7XG5cdFx0aWYgKCF2YWx1ZSkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGZpbGUnKTtcblx0XHR9XG5cdFx0cmV0dXJuIHZhbHVlO1xuXHR9XG59KTtcblxuYWRkVHlwZSh7XG5cdG5hbWU6ICdpbnQnLFxuXHR0cmFuc2Zvcm06IHZhbHVlID0+IHtcblx0XHRsZXQgbnVtO1xuXHRcdGlmICghaW50UmVnRXhwLnRlc3QodmFsdWUpIHx8IGlzTmFOKG51bSA9IE51bWJlcih2YWx1ZSkpKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ1ZhbHVlIGlzIG5vdCBhbiBpbnRlZ2VyJyk7XG5cdFx0fVxuXHRcdHJldHVybiBudW07XG5cdH1cbn0pO1xuXG5hZGRUeXBlKHtcblx0bmFtZTogJ2pzb24nLFxuXHR0cmFuc2Zvcm06IHZhbHVlID0+IHtcblx0XHR0cnkge1xuXHRcdFx0cmV0dXJuIEpTT04ucGFyc2UodmFsdWUpO1xuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBqc29uOiAke2UubWVzc2FnZX1gKTtcblx0XHR9XG5cdH1cbn0pO1xuXG5hZGRUeXBlKHtcblx0bmFtZTogJ251bWJlcicsXG5cdHRyYW5zZm9ybTogdmFsdWUgPT4ge1xuXHRcdGxldCBudW0gPSBOdW1iZXIodmFsdWUpO1xuXHRcdGlmIChpc05hTihudW0pKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ1ZhbHVlIGlzIG5vdCBhbiBpbnRlZ2VyJyk7XG5cdFx0fVxuXHRcdHJldHVybiBudW07XG5cdH1cbn0pO1xuXG5hZGRUeXBlKHtcblx0bmFtZTogJ3Bvc2l0aXZlSW50Jyxcblx0dHJhbnNmb3JtOiB2YWx1ZSA9PiB7XG5cdFx0bGV0IG51bTtcblx0XHRpZiAoIWludFJlZ0V4cC50ZXN0KHZhbHVlKSB8fCBpc05hTihudW0gPSBOdW1iZXIodmFsdWUpKSB8fCBudW0gPCAwKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ1ZhbHVlIGlzIG5vdCBhIHBvc2l0aXZlIGludGVnZXInKTtcblx0XHR9XG5cdFx0cmV0dXJuIG51bTtcblx0fVxufSk7XG5cbmFkZFR5cGUoe1xuXHRuYW1lOiAnc3RyaW5nJyxcblx0dHJhbnNmb3JtOiB2YWx1ZSA9PiB2YWx1ZVxufSk7XG5cbmFkZFR5cGUoe1xuXHRuYW1lOiAneWVzbm8nLFxuXHR0cmFuc2Zvcm06IHZhbHVlID0+IHtcblx0XHRpZiAoeWVzUmVnRXhwLnRlc3QodmFsdWUpKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0aWYgKG5vUmVnRXhwLnRlc3QodmFsdWUpKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdHRocm93IG5ldyBFcnJvcignVmFsdWUgbXVzdCBiZSBcInllc1wiIG9yIFwibm9cIicpO1xuXHR9XG59KTtcbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInR5cGVzLmpzIl0sIm5hbWVzIjpbImNoZWNrVHlwZSIsInRyYW5zZm9ybVZhbHVlIiwicmVnaXN0ZXJUeXBlIiwiZGF0ZVJlZ0V4cCIsImludFJlZ0V4cCIsInllc1JlZ0V4cCIsIm5vUmVnRXhwIiwidHlwZXMiLCJ0eXBlIiwiZGVmYXVsdFZhbHVlIiwiRXJyb3IiLCJ2YWx1ZSIsInRyYW5zZm9ybSIsIlR5cGUiLCJjb25zdHJ1Y3RvciIsIm9wdHMiLCJBcnJheSIsImlzQXJyYXkiLCJUeXBlRXJyb3IiLCJuYW1lIiwiZGF0ZSIsInRlc3QiLCJudW0iLCJOdW1iZXIiLCJpc05hTiIsIkRhdGUiLCJ0b1N0cmluZyIsIkpTT04iLCJwYXJzZSIsImUiLCJtZXNzYWdlIl0sIm1hcHBpbmdzIjoiOzs7OztRQXVCZ0JBLFMsR0FBQUEsUztRQW1CQUMsYyxHQUFBQSxjO1FBNENBQyxZLEdBQUFBLFk7QUF0RmhCLE1BQU1DLGFBQWEscURBQW5CO0FBQ0EsTUFBTUMsWUFBWSxXQUFsQjtBQUNBLE1BQU1DLFlBQVksVUFBbEI7QUFDQSxNQUFNQyxXQUFXLE9BQWpCOztBQUVBOzs7Ozs7O0FBT08sTUFBTUMsd0JBQVEsRUFBZDs7QUFFUDs7Ozs7Ozs7O0FBU08sU0FBU1AsU0FBVCxDQUFtQlEsSUFBbkIsRUFBeUJDLFlBQXpCLEVBQXVDO0FBQzdDLEtBQUlELFFBQVEsQ0FBQ0QsTUFBTUMsSUFBTixDQUFiLEVBQTBCO0FBQ3pCLFFBQU0sSUFBSUUsS0FBSixDQUFXLHFCQUFvQkYsSUFBSyxHQUFwQyxDQUFOO0FBQ0E7O0FBRUQsS0FBSSxDQUFDQSxJQUFELElBQVNDLFlBQWIsRUFBMkI7QUFDMUIsU0FBT0EsWUFBUDtBQUNBOztBQUVELFFBQU9ELElBQVA7QUFDQTs7QUFFRDs7Ozs7OztBQU9PLFNBQVNQLGNBQVQsQ0FBd0JVLEtBQXhCLEVBQStCSCxJQUEvQixFQUFxQztBQUMzQyxLQUFJRCxNQUFNQyxJQUFOLEtBQWUsT0FBT0QsTUFBTUMsSUFBTixFQUFZSSxTQUFu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b25zdCBkYXRlUmVnRXhwID0gL15cXGR7NH0tXFxkezJ9LVxcZHsyfShUXFxkezJ9OlxcZHsyfTpcXGR7Mn0oXFwuXFxkKyk/Wj8pPyQvaTtcbmNvbnN0IGludFJlZ0V4cCA9IC9eWzAtOS1dKyQvO1xuY29uc3QgeWVzUmVnRXhwID0gL155KGVzKT8kLztcbmNvbnN0IG5vUmVnRXhwID0gL15ubz8kLztcblxuLyoqXG4gKiBPcHRpb25zL2FyZ3MgaGF2ZSBhIHR5cGUuIEdlbmVyYWxseSB0aGV5IGFyZSBlaXRoZXIgYSBgYm9vbGAgKGZsYWcpIG9yXG4gKiBgc3RyaW5nYCAob3B0aW9uL2FyZykuIEhvd2V2ZXIsIGZvciBub24tYm9vbCBvcHRpb25zLCB5b3UgY2FuIHNwZWNpZnkgYSB0eXBlXG4gKiB0aGF0IHdpbGwgdmFsaWRhdGUgYW5kIGZvcm1hdCB0aGUgdmFsdWUuXG4gKlxuICogQmVsb3cgaXMgdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIHR5cGVzIGFuZCB0aGVpciB0cmFuc2Zvcm1lcnMuXG4gKi9cbmV4cG9ydCBjb25zdCB0eXBlcyA9IHt9O1xuXG4vKipcbiAqIEVuc3VyZXMgdGhhdCB0aGUgc3BlY2lmaWVkIGxpc3Qgb2YgdHlwZXMgaXMgaW5kZWVkIGFuIGFycmF5IGFuZCBlYWNoIHZhbHVlIGlzIGEgc3VwcG9ydGVkIHR5cGUsXG4gKiB0aGVuIHJldHVybnMgdGhlIGNsZWFuZWQgdXAgbGlzdCBvZiB0eXBlcyBvciBhIGRlZmF1bHQgdmFsdWUgaWYgbm8gdHlwZXMgd2VyZSBmb3VuZC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdHlwZSAtIEEgbGlzdCBvZiB0eXBlcyB0byB2YWxpZGF0ZS5cbiAqIEBwYXJhbSB7U3RyaW5nfSBbZGVmYXVsdFZhbHVlXSAtIEFuIG9wdGlvbmFsIGxpc3Qgb2YgdHlwZXMgdG8gZGVmYXVsdCB0byBpZiBub1xuICogdHlwZXMgd2VyZSBvcmlnaW5hbGx5IHNwZWNpZmllZC5cbiAqIEByZXR1cm5zIHtTdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGVja1R5cGUodHlwZSwgZGVmYXVsdFZhbHVlKSB7XG5cdGlmICh0eXBlICYmICF0eXBlc1t0eXBlXSkge1xuXHRcdHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgdHlwZSBcIiR7dHlwZX1cImApO1xuXHR9XG5cblx0aWYgKCF0eXBlICYmIGRlZmF1bHRWYWx1ZSkge1xuXHRcdHJldHVybiBkZWZhdWx0VmFsdWU7XG5cdH1cblxuXHRyZXR1cm4gdHlwZTtcbn1cblxuLyoqXG4gKiBUcmFuc2Zvcm1zIGEgdmFsdWUgdG8gdGhlIGZpcnN0IHN1Y2Nlc3NmdWxseSB0cmFuc2Zvcm1lZCBkYXRhIHR5cGUuXG4gKlxuICogQHBhcmFtIHsqfSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byB0cmFuc2Zvcm0uXG4gKiBAcGFyYW0ge1N0cmluZ30gdHlwZSAtIEEgbGlzdCBvZiBkYXRhIHR5cGVzIHRvIHRyeSB0byBjb2VyY2UgdGhlIHZhbHVlIGludG8uXG4gKiBAcmV0dXJucyB7Kn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybVZhbHVlKHZhbHVlLCB0eXBlKSB7XG5cdGlmICh0eXBlc1t0eXBlXSAmJiB0eXBlb2YgdHlwZXNbdHlwZV0udHJhbnNmb3JtID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0dmFsdWUgPSB0eXBlc1t0eXBlXS50cmFuc2Zvcm0odmFsdWUpO1xuXHR9XG5cdHJldHVybiB2YWx1ZTtcbn1cblxuLyoqXG4gKiBEZWZpbmVzIGEgb3B0aW9uL2FyZ3VtZW50IGRhdGEgdHlwZSBhbmQgaXRzIHRyYW5zZm9ybSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFR5cGUge1xuXHQvKipcblx0ICogQ3JlYXRlcyB0aGUgZGF0YSB0eXBlIGluc3RhbmNlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIFZhcmlvdXMgb3B0aW9ucy5cblx0ICogQHBhcmFtIHtTdHJpbmd9IG9wdHMubmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBkYXRhIHR5cGUuXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IFtvcHRzLnRyYW5zZm9ybV0gLSBBIGZ1bmN0aW9uIHRoYXQgdHJhbnNmb3JtcyB0aGUgcGFyc2VkIG9wdGlvbi9hcmd1bWVudFxuXHQgKiBzdHJpbmcgdmFsdWUgdG8gdGhlIGNvcnJlY3QgZGF0YSB0eXBlLiBCeSBkZWZhdWx0LCBubyB0cmFuc2Zvcm0gaXMgYXBwbGllZCBhbmQgdmFsdWVzIHdpbGxcblx0ICogcmVtYWluIGFzIHN0cmluZ3MuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRjb25zdHJ1Y3RvcihvcHRzKSB7XG5cdFx0aWYgKCFvcHRzIHx8IHR5cGVvZiBvcHRzICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KG9wdHMpKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBvcHRzIHRvIGJlIGFuIG9iamVjdCcpO1xuXHRcdH1cblxuXHRcdGlmICghb3B0cy5uYW1lKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgdHlwZSBuYW1lJyk7XG5cdFx0fVxuXG5cdFx0aWYgKG9wdHMudHJhbnNmb3JtICYmIHR5cGVvZiBvcHRzLnRyYW5zZm9ybSAhPT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgdHJhbnNmb3JtIHRvIGJlIGEgZnVuY3Rpb24nKTtcblx0XHR9XG5cblx0XHR0aGlzLm5hbWUgPSBvcHRzLm5hbWU7XG5cdFx0dGhpcy50cmFuc2Zvcm0gPSBvcHRzLnRyYW5zZm9ybTtcblx0fVxufVxuXG4vKipcbiAqIFJlZ2lzdGVycyBhIHR5cGUuXG4gKlxuICogQHBhcmFtIHtUeXBlfE9iamVjdH0gb3B0cyAtIEEgYFR5cGVgIGluc3RhbmNlIG9yIHBhcmFtcyBmb3IgY29uc3RydWN0aW5nIGEgbmV3IGBUeXBlYCBpbnN0YW5jZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyVHlwZShvcHRzKSB7XG5cdGlmICghKG9wdHMgaW5zdGFuY2VvZiBUeXBlKSkge1xuXHRcdG9wdHMgPSBuZXcgVHlwZShvcHRzKTtcblx0fVxuXHR0eXBlc1tvcHRzLm5hbWVdID0gb3B0cztcbn1cblxucmVnaXN0ZXJUeXBlKHtcblx0bmFtZTogJ2Jvb2wnLFxuXHR0cmFuc2Zvcm0odmFsdWUpIHtcblx0XHRyZXR1cm4gdmFsdWUgJiYgdmFsdWUgIT09ICdmYWxzZSc7XG5cdH1cbn0pO1xuXG5yZWdpc3RlclR5cGUoe1xuXHRuYW1lOiAnZGF0ZScsXG5cdHRyYW5zZm9ybSh2YWx1ZSkge1xuXHRcdGxldCBkYXRlO1xuXG5cdFx0aWYgKGludFJlZ0V4cC50ZXN0KHZhbHVlKSkge1xuXHRcdFx0Y29uc3QgbnVtID0gTnVtYmVyKHZhbHVlKTtcblx0XHRcdGlmICghaXNOYU4obnVtKSAmJiBudW0gPiAwKSB7XG5cdFx0XHRcdGRhdGUgPSBuZXcgRGF0ZShudW0gKiAxMDAwKTtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKGRhdGVSZWdFeHAudGVzdCh2YWx1ZSkpIHtcblx0XHRcdGRhdGUgPSBuZXcgRGF0ZSh2YWx1ZSk7XG5cdFx0fVxuXG5cdFx0aWYgKCFkYXRlIHx8IGRhdGUudG9TdHJpbmcoKSA9PT0gJ0ludmFsaWQgZGF0ZScpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignSW52YWxpZCBkYXRlJyk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGRhdGU7XG5cdH1cbn0pO1xuXG5yZWdpc3RlclR5cGUoe1xuXHRuYW1lOiAnZmlsZScsXG5cdHRyYW5zZm9ybSh2YWx1ZSkge1xuXHRcdGlmICghdmFsdWUpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignSW52YWxpZCBmaWxlJyk7XG5cdFx0fVxuXHRcdHJldHVybiB2YWx1ZTtcblx0fVxufSk7XG5cbnJlZ2lzdGVyVHlwZSh7XG5cdG5hbWU6ICdpbnQnLFxuXHR0cmFuc2Zvcm0odmFsdWUpIHtcblx0XHRsZXQgbnVtO1xuXHRcdGlmICghaW50UmVnRXhwLnRlc3QodmFsdWUpIHx8IGlzTmFOKG51bSA9IE51bWJlcih2YWx1ZSkpKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ1ZhbHVlIGlzIG5vdCBhbiBpbnRlZ2VyJyk7XG5cdFx0fVxuXHRcdHJldHVybiBudW07XG5cdH1cbn0pO1xuXG5yZWdpc3RlclR5cGUoe1xuXHRuYW1lOiAnanNvbicsXG5cdHRyYW5zZm9ybSh2YWx1ZSkge1xuXHRcdHRyeSB7XG5cdFx0XHRyZXR1cm4gSlNPTi5wYXJzZSh2YWx1ZSk7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGpzb246ICR7ZS5tZXNzYWdlfWApO1xuXHRcdH1cblx0fVxufSk7XG5cbnJlZ2lzdGVyVHlwZSh7XG5cdG5hbWU6ICdudW1iZXInLFxuXHR0cmFuc2Zvcm0odmFsdWUpIHtcblx0XHRsZXQgbnVtID0gTnVtYmVyKHZhbHVlKTtcblx0XHRpZiAoaXNOYU4obnVtKSkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdWYWx1ZSBpcyBub3QgYW4gaW50ZWdlcicpO1xuXHRcdH1cblx0XHRyZXR1cm4gbnVtO1xuXHR9XG59KTtcblxucmVnaXN0ZXJUeXBlKHtcblx0bmFtZTogJ3Bvc2l0aXZlSW50Jyxcblx0dHJhbnNmb3JtKHZhbHVlKSB7XG5cdFx0bGV0IG51bTtcblx0XHRpZiAoIWludFJlZ0V4cC50ZXN0KHZhbHVlKSB8fCBpc05hTihudW0gPSBOdW1iZXIodmFsdWUpKSB8fCBudW0gPCAwKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ1ZhbHVlIGlzIG5vdCBhIHBvc2l0aXZlIGludGVnZXInKTtcblx0XHR9XG5cdFx0cmV0dXJuIG51bTtcblx0fVxufSk7XG5cbnJlZ2lzdGVyVHlwZSh7XG5cdG5hbWU6ICdzdHJpbmcnXG59KTtcblxucmVnaXN0ZXJUeXBlKHtcblx0bmFtZTogJ3llc25vJyxcblx0dHJhbnNmb3JtKHZhbHVlKSB7XG5cdFx0aWYgKHllc1JlZ0V4cC50ZXN0KHZhbHVlKSkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdGlmIChub1JlZ0V4cC50ZXN0KHZhbHVlKSkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHR0aHJvdyBuZXcgRXJyb3IoJ1ZhbHVlIG11c3QgYmUgXCJ5ZXNcIiBvciBcIm5vXCInKTtcblx0fVxufSk7XG4iXX0= |
{ | ||
"name": "cli-kit", | ||
"version": "0.0.9", | ||
"version": "0.0.10", | ||
"description": "Everything you need to create awesome command line interfaces", | ||
@@ -43,8 +43,9 @@ "main": "./dist/index.js", | ||
"hook-emitter": "^2.1.0", | ||
"snooplogg": "^1.9.1", | ||
"source-map-support": "^0.5.0" | ||
"lodash.camelcase": "^4.3.0", | ||
"snooplogg": "^1.9.2", | ||
"source-map-support": "^0.5.3" | ||
}, | ||
"devDependencies": { | ||
"babel-core": "^6.26.0", | ||
"babel-eslint": "^8.0.2", | ||
"babel-eslint": "^8.2.1", | ||
"babel-plugin-istanbul": "^4.1.5", | ||
@@ -66,11 +67,11 @@ "babel-plugin-transform-class-properties": "^6.24.1", | ||
"gulp": "^3.9.1", | ||
"gulp-babel": "^7.0.0", | ||
"gulp-debug": "^3.1.0", | ||
"gulp-eslint": "^4.0.0", | ||
"gulp-babel": "^7.0.1", | ||
"gulp-debug": "^3.2.0", | ||
"gulp-eslint": "^4.0.2", | ||
"gulp-load-plugins": "^1.5.0", | ||
"gulp-plumber": "^1.1.0", | ||
"gulp-plumber": "^1.2.0", | ||
"gulp-util": "^3.0.8", | ||
"mocha": "^4.0.1", | ||
"nyc": "^11.3.0", | ||
"sinon": "^4.1.2", | ||
"mocha": "^5.0.0", | ||
"nyc": "^11.4.1", | ||
"sinon": "^4.3.0", | ||
"sinon-chai": "^2.14.0" | ||
@@ -77,0 +78,0 @@ }, |
262
README.md
@@ -1,3 +0,2 @@ | ||
> Note: cli-kit is not ready for use. Parts of it work, but is missing many | ||
> essential features. Please check back later. | ||
> Note: cli-kit is under development. | ||
@@ -19,3 +18,3 @@ # cli-kit | ||
* Command line parsing | ||
* Support for multi-tier commands | ||
* Support for command hierarchies | ||
* Auto-generated help | ||
@@ -25,10 +24,259 @@ | ||
npm i --save cli-kit | ||
yarn add cli-kit --save | ||
## Examples | ||
or | ||
```javascript | ||
// example goes here | ||
npm i cli-kit --save | ||
## Usage | ||
```js | ||
import CLI from 'cli-kit'; | ||
new CLI({ | ||
options: { | ||
'-f, --force': 'use the force', | ||
'--timeout [value]': { | ||
desc: 'the timeout duration', | ||
type: 'int' | ||
} | ||
} | ||
}) | ||
.exec() | ||
.then(({ argv, _ }) => { | ||
console.log('options:', argv); | ||
console.log('args:', _); | ||
}) | ||
.catch(console.error); | ||
``` | ||
## Architecture | ||
In cli-kit, commands and options are grouped into "contexts". The main CLI instance defines the | ||
"global context". Each command defines a new context. Each context can have its own commands, | ||
options, and arguments. What you end up with is a hierarchy of contexts. | ||
When cli-kit parses the command line arguments, it will check each argument against the global | ||
context to see if the argument can be identified as a known command, option, or argument. If it | ||
finds a command, it adds the command's context to a stack and re-parses any unidentified arguments. | ||
This allows you to create deep and dynamic hierarchies of commands, options, and arguments. | ||
## API | ||
### class `CLI` | ||
A `CLI` intance defines a global context for which you add commands, options, and arguments. | ||
Extends `Context` > [`HookEmitter`](https://www.npmjs.com/package/hook-emitter). | ||
#### `constuctor(opts)` | ||
* `opts` : `Object` (optional) | ||
Various options to initialize the `CLI` instance. | ||
##### Example | ||
```js | ||
const cli = new CLI({ | ||
// An array of argument definitions. They are parsed in the order they are defined. | ||
args: [ | ||
// An argument can be as simple as its name. Wrapping the name with `<` and `>` signifies | ||
// that the argument is required. | ||
'<arg1>', | ||
// To define an optional arguemnt, you can use `[` and `]`. | ||
'[arg2]', | ||
// Or simply omit the brackets | ||
'arg3', | ||
// For more options, you can specify an argument descriptor | ||
{ | ||
// The argument name. Follows the same rules as above. | ||
name: 'arg4', | ||
// The argument's description to show in the help output. | ||
desc: undefined, | ||
// When `true`, hides the argument from usage string in the help output. | ||
hidden: false, | ||
// Overrides the brackets and forces the argument to be required or optional. | ||
required: false, | ||
// There are several built-in types. See the "types" section below for more info. | ||
type: 'string' | ||
} | ||
], | ||
// Global flag to camel case property names derived from multi-word options/arguments. | ||
// Defaults to true, can be overwritten by the option/argument. | ||
camelCase: true, | ||
// An object of command names to command descriptors. | ||
commands: { | ||
'some-command': { | ||
// The action to perform when the command is parsed. | ||
action({ argv, _ }) { | ||
console.log('options:', argv); | ||
console.log('args:', _); | ||
}, | ||
// An array of alternate command names. | ||
aliases: [ 'another-command' ], | ||
// Command specific args. See `args` section above. | ||
args: [], | ||
// When `true`, camel case all option and argument names in the `argv` result. | ||
camelCase: true, | ||
// An object of subcommand names to subcommand descriptors. | ||
commands: {}, | ||
// The command description. | ||
desc: undefined, | ||
// When `true`, hides the command from the help output. | ||
hidden: false, | ||
// An object of option formats to option descriptors. See the `options` section below. | ||
options: {}, | ||
// The command name to display in the help output. Defaults to the command name. | ||
title: undefined | ||
} | ||
}, | ||
// The default command `exec()` should run if no command was found during parsing. | ||
// If `help` is `true` and no default command is specified, it will default to displaying the | ||
// help screen. | ||
defaultCommand: undefined, | ||
// The CLI description to print on the help screen between the usage and commands/options/args. | ||
desc: undefined, | ||
// Adds the `-h, --help` to the global flags and enables the auto-generated help screen. | ||
// Defaults to `true`. | ||
help: true, | ||
// The exit code to return when the help screen is displayed. This is useful if you want to | ||
// force the program to exit if `--help` is specified and the user is chaining commands together | ||
// or after displaying the help screen and prevent further execution in the CLI's promise chain. | ||
helpExitCode: undefined, | ||
// The name of the program used by the help screen to display the command's usage. | ||
// Defaults to "program". | ||
name: 'program', | ||
// An object of option formats to option descriptors or an array of sorted group names and | ||
// objects of option formats to option descriptors. | ||
options: { | ||
// | ||
}, | ||
// The title for the top-level (or "Global") context. This title is displayed on the help screen | ||
// when displaying the list of options. | ||
title: 'Global', | ||
// When set, it will automatically wire up the `-v, --version` option. Upon calling with your | ||
// program with `--version`, it will display the version and exit with a success (zero) exit | ||
// code. | ||
version: null | ||
}); | ||
``` | ||
#### `exec(args)` | ||
Parses the command line args and executes a command, if found. | ||
* `args` : `Array<String>` (optional) | ||
An array of arguments. Each argument is expected to be a string. | ||
Defaults to `process.argv.slice(2)`. | ||
Returns a `Promise` that resolves an `Arguments` object. This object will contain the parsed options | ||
in `argv` and arguments in `_`. | ||
##### Example | ||
```js | ||
cli.exec() | ||
.then(({ argv, _ }) => { | ||
console.log('options:', argv); | ||
console.log('args:', _); | ||
}); | ||
``` | ||
### class `Context` | ||
Base class for `CLI` and `Command` classes. | ||
Extends [`HookEmitter`](https://www.npmjs.com/package/hook-emitter). | ||
#### `argument(arg)` | ||
Adds an argument to a `CLI` or `Command`. | ||
* `arg` : `Argument`, `Object`, or `String`. | ||
An argument descriptor. Either an `Argument` instance or an `Object` to pass into a `Argument` | ||
constructor. | ||
An argument requires a `name`. | ||
Returns a reference to the `CLI` or `Command`. | ||
##### Example | ||
```js | ||
// define a non-required argument "foo" | ||
cli.argument('foo'); | ||
// define a non-required argument "wiz" | ||
cli.argument('[wiz]'); | ||
// define a required argument "pow" | ||
cli.argument('<pow>'); | ||
cli.argument({ | ||
name: 'bar', | ||
type: 'int' | ||
}); | ||
cli.argument(new Argument('baz')); | ||
``` | ||
#### `command(cmd, opts)` | ||
Adds a command to a `CLI` or `Command`. | ||
> TODO | ||
#### `option(optOrFormat, group, params)` | ||
Adds an option or group of options to a `CLI` or `Command`. | ||
> TODO | ||
## cli-kit vs other libraries | ||
> NOTE: Following data is incomplete and further research is required. | ||
| | cli-kit | commander.js | yargs | dashdash | Caporal.js | n-args | meow | nomnom | optimist | minimist | inquirer | promptly | fields | | ||
| --------------------------------------------- | ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | ------ | | ||
| Actively maintained <br> (within last year) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :warning: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :x: | :x: | :white_check_mark: | :white_check_mark: | :x: | | ||
| Parses command line arguments | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :x: | :x: | | ||
| "command" support | :white_check_mark: | :white_check_mark: | :white_check_mark: | | ||
| "options" support | :white_check_mark: | :white_check_mark: | :white_check_mark: | | ||
| "flags" support | :white_check_mark: | :white_check_mark: | :white_check_mark: | | ||
| "argument" support | :white_check_mark: | :white_check_mark: | :white_check_mark: | | ||
| Value data type coercion | :white_check_mark: | :white_check_mark: | Numbers only | | ||
| Custom option/argument validation | Coming soon! | :white_check_mark: | | ||
| Prompting support | Coming soon! | :x: | | ||
| Built-in prompt types | Coming soon! | :x: | | ||
## License | ||
@@ -35,0 +283,0 @@ |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
AI-detected possible typosquat
Supply chain riskAI has identified this package as a potential typosquat of a more popular package. This suggests that the package may be intentionally mimicking another package's name, description, or other metadata.
Found 1 instance in 1 package
314351
1284
298
4
13
1
+ Addedlodash.camelcase@^4.3.0
+ Addedlodash.camelcase@4.3.0(transitive)
Updatedsnooplogg@^1.9.2
Updatedsource-map-support@^0.5.3