yargs-factory.js 75 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497
  1. var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
  2. if (kind === "m") throw new TypeError("Private method is not writable");
  3. if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
  4. if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
  5. return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
  6. };
  7. var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
  8. if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
  9. if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
  10. return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
  11. };
  12. var _YargsInstance_command, _YargsInstance_cwd, _YargsInstance_context, _YargsInstance_completion, _YargsInstance_completionCommand, _YargsInstance_defaultShowHiddenOpt, _YargsInstance_exitError, _YargsInstance_detectLocale, _YargsInstance_emittedWarnings, _YargsInstance_exitProcess, _YargsInstance_frozens, _YargsInstance_globalMiddleware, _YargsInstance_groups, _YargsInstance_hasOutput, _YargsInstance_helpOpt, _YargsInstance_isGlobalContext, _YargsInstance_logger, _YargsInstance_output, _YargsInstance_options, _YargsInstance_parentRequire, _YargsInstance_parserConfig, _YargsInstance_parseFn, _YargsInstance_parseContext, _YargsInstance_pkgs, _YargsInstance_preservedGroups, _YargsInstance_processArgs, _YargsInstance_recommendCommands, _YargsInstance_shim, _YargsInstance_strict, _YargsInstance_strictCommands, _YargsInstance_strictOptions, _YargsInstance_usage, _YargsInstance_versionOpt, _YargsInstance_validation;
  13. import { command as Command, } from './command.js';
  14. import { assertNotStrictEqual, assertSingleKey, objectKeys, } from './typings/common-types.js';
  15. import { YError } from './yerror.js';
  16. import { usage as Usage } from './usage.js';
  17. import { argsert } from './argsert.js';
  18. import { completion as Completion, } from './completion.js';
  19. import { validation as Validation, } from './validation.js';
  20. import { objFilter } from './utils/obj-filter.js';
  21. import { applyExtends } from './utils/apply-extends.js';
  22. import { applyMiddleware, GlobalMiddleware, } from './middleware.js';
  23. import { isPromise } from './utils/is-promise.js';
  24. import { maybeAsyncResult } from './utils/maybe-async-result.js';
  25. import setBlocking from './utils/set-blocking.js';
  26. export function YargsFactory(_shim) {
  27. return (processArgs = [], cwd = _shim.process.cwd(), parentRequire) => {
  28. const yargs = new YargsInstance(processArgs, cwd, parentRequire, _shim);
  29. Object.defineProperty(yargs, 'argv', {
  30. get: () => {
  31. return yargs.parse();
  32. },
  33. enumerable: true,
  34. });
  35. yargs.help();
  36. yargs.version();
  37. return yargs;
  38. };
  39. }
  40. const kCopyDoubleDash = Symbol('copyDoubleDash');
  41. const kCreateLogger = Symbol('copyDoubleDash');
  42. const kDeleteFromParserHintObject = Symbol('deleteFromParserHintObject');
  43. const kEmitWarning = Symbol('emitWarning');
  44. const kFreeze = Symbol('freeze');
  45. const kGetDollarZero = Symbol('getDollarZero');
  46. const kGetParserConfiguration = Symbol('getParserConfiguration');
  47. const kGuessLocale = Symbol('guessLocale');
  48. const kGuessVersion = Symbol('guessVersion');
  49. const kParsePositionalNumbers = Symbol('parsePositionalNumbers');
  50. const kPkgUp = Symbol('pkgUp');
  51. const kPopulateParserHintArray = Symbol('populateParserHintArray');
  52. const kPopulateParserHintSingleValueDictionary = Symbol('populateParserHintSingleValueDictionary');
  53. const kPopulateParserHintArrayDictionary = Symbol('populateParserHintArrayDictionary');
  54. const kPopulateParserHintDictionary = Symbol('populateParserHintDictionary');
  55. const kSanitizeKey = Symbol('sanitizeKey');
  56. const kSetKey = Symbol('setKey');
  57. const kUnfreeze = Symbol('unfreeze');
  58. const kValidateAsync = Symbol('validateAsync');
  59. const kGetCommandInstance = Symbol('getCommandInstance');
  60. const kGetContext = Symbol('getContext');
  61. const kGetHasOutput = Symbol('getHasOutput');
  62. const kGetLoggerInstance = Symbol('getLoggerInstance');
  63. const kGetParseContext = Symbol('getParseContext');
  64. const kGetUsageInstance = Symbol('getUsageInstance');
  65. const kGetValidationInstance = Symbol('getValidationInstance');
  66. const kHasParseCallback = Symbol('hasParseCallback');
  67. const kIsGlobalContext = Symbol('isGlobalContext');
  68. const kPostProcess = Symbol('postProcess');
  69. const kRebase = Symbol('rebase');
  70. const kReset = Symbol('reset');
  71. const kRunYargsParserAndExecuteCommands = Symbol('runYargsParserAndExecuteCommands');
  72. const kRunValidation = Symbol('runValidation');
  73. const kSetHasOutput = Symbol('setHasOutput');
  74. const kTrackManuallySetKeys = Symbol('kTrackManuallySetKeys');
  75. export class YargsInstance {
  76. constructor(processArgs = [], cwd, parentRequire, shim) {
  77. this.customScriptName = false;
  78. this.parsed = false;
  79. _YargsInstance_command.set(this, void 0);
  80. _YargsInstance_cwd.set(this, void 0);
  81. _YargsInstance_context.set(this, { commands: [], fullCommands: [] });
  82. _YargsInstance_completion.set(this, null);
  83. _YargsInstance_completionCommand.set(this, null);
  84. _YargsInstance_defaultShowHiddenOpt.set(this, 'show-hidden');
  85. _YargsInstance_exitError.set(this, null);
  86. _YargsInstance_detectLocale.set(this, true);
  87. _YargsInstance_emittedWarnings.set(this, {});
  88. _YargsInstance_exitProcess.set(this, true);
  89. _YargsInstance_frozens.set(this, []);
  90. _YargsInstance_globalMiddleware.set(this, void 0);
  91. _YargsInstance_groups.set(this, {});
  92. _YargsInstance_hasOutput.set(this, false);
  93. _YargsInstance_helpOpt.set(this, null);
  94. _YargsInstance_isGlobalContext.set(this, true);
  95. _YargsInstance_logger.set(this, void 0);
  96. _YargsInstance_output.set(this, '');
  97. _YargsInstance_options.set(this, void 0);
  98. _YargsInstance_parentRequire.set(this, void 0);
  99. _YargsInstance_parserConfig.set(this, {});
  100. _YargsInstance_parseFn.set(this, null);
  101. _YargsInstance_parseContext.set(this, null);
  102. _YargsInstance_pkgs.set(this, {});
  103. _YargsInstance_preservedGroups.set(this, {});
  104. _YargsInstance_processArgs.set(this, void 0);
  105. _YargsInstance_recommendCommands.set(this, false);
  106. _YargsInstance_shim.set(this, void 0);
  107. _YargsInstance_strict.set(this, false);
  108. _YargsInstance_strictCommands.set(this, false);
  109. _YargsInstance_strictOptions.set(this, false);
  110. _YargsInstance_usage.set(this, void 0);
  111. _YargsInstance_versionOpt.set(this, null);
  112. _YargsInstance_validation.set(this, void 0);
  113. __classPrivateFieldSet(this, _YargsInstance_shim, shim, "f");
  114. __classPrivateFieldSet(this, _YargsInstance_processArgs, processArgs, "f");
  115. __classPrivateFieldSet(this, _YargsInstance_cwd, cwd, "f");
  116. __classPrivateFieldSet(this, _YargsInstance_parentRequire, parentRequire, "f");
  117. __classPrivateFieldSet(this, _YargsInstance_globalMiddleware, new GlobalMiddleware(this), "f");
  118. this.$0 = this[kGetDollarZero]();
  119. this[kReset]();
  120. __classPrivateFieldSet(this, _YargsInstance_command, __classPrivateFieldGet(this, _YargsInstance_command, "f"), "f");
  121. __classPrivateFieldSet(this, _YargsInstance_usage, __classPrivateFieldGet(this, _YargsInstance_usage, "f"), "f");
  122. __classPrivateFieldSet(this, _YargsInstance_validation, __classPrivateFieldGet(this, _YargsInstance_validation, "f"), "f");
  123. __classPrivateFieldSet(this, _YargsInstance_options, __classPrivateFieldGet(this, _YargsInstance_options, "f"), "f");
  124. __classPrivateFieldGet(this, _YargsInstance_options, "f").showHiddenOpt = __classPrivateFieldGet(this, _YargsInstance_defaultShowHiddenOpt, "f");
  125. __classPrivateFieldSet(this, _YargsInstance_logger, this[kCreateLogger](), "f");
  126. }
  127. addHelpOpt(opt, msg) {
  128. const defaultHelpOpt = 'help';
  129. argsert('[string|boolean] [string]', [opt, msg], arguments.length);
  130. if (__classPrivateFieldGet(this, _YargsInstance_helpOpt, "f")) {
  131. this[kDeleteFromParserHintObject](__classPrivateFieldGet(this, _YargsInstance_helpOpt, "f"));
  132. __classPrivateFieldSet(this, _YargsInstance_helpOpt, null, "f");
  133. }
  134. if (opt === false && msg === undefined)
  135. return this;
  136. __classPrivateFieldSet(this, _YargsInstance_helpOpt, typeof opt === 'string' ? opt : defaultHelpOpt, "f");
  137. this.boolean(__classPrivateFieldGet(this, _YargsInstance_helpOpt, "f"));
  138. this.describe(__classPrivateFieldGet(this, _YargsInstance_helpOpt, "f"), msg || __classPrivateFieldGet(this, _YargsInstance_usage, "f").deferY18nLookup('Show help'));
  139. return this;
  140. }
  141. help(opt, msg) {
  142. return this.addHelpOpt(opt, msg);
  143. }
  144. addShowHiddenOpt(opt, msg) {
  145. argsert('[string|boolean] [string]', [opt, msg], arguments.length);
  146. if (opt === false && msg === undefined)
  147. return this;
  148. const showHiddenOpt = typeof opt === 'string' ? opt : __classPrivateFieldGet(this, _YargsInstance_defaultShowHiddenOpt, "f");
  149. this.boolean(showHiddenOpt);
  150. this.describe(showHiddenOpt, msg || __classPrivateFieldGet(this, _YargsInstance_usage, "f").deferY18nLookup('Show hidden options'));
  151. __classPrivateFieldGet(this, _YargsInstance_options, "f").showHiddenOpt = showHiddenOpt;
  152. return this;
  153. }
  154. showHidden(opt, msg) {
  155. return this.addShowHiddenOpt(opt, msg);
  156. }
  157. alias(key, value) {
  158. argsert('<object|string|array> [string|array]', [key, value], arguments.length);
  159. this[kPopulateParserHintArrayDictionary](this.alias.bind(this), 'alias', key, value);
  160. return this;
  161. }
  162. array(keys) {
  163. argsert('<array|string>', [keys], arguments.length);
  164. this[kPopulateParserHintArray]('array', keys);
  165. this[kTrackManuallySetKeys](keys);
  166. return this;
  167. }
  168. boolean(keys) {
  169. argsert('<array|string>', [keys], arguments.length);
  170. this[kPopulateParserHintArray]('boolean', keys);
  171. this[kTrackManuallySetKeys](keys);
  172. return this;
  173. }
  174. check(f, global) {
  175. argsert('<function> [boolean]', [f, global], arguments.length);
  176. this.middleware((argv, _yargs) => {
  177. return maybeAsyncResult(() => {
  178. return f(argv, _yargs.getOptions());
  179. }, (result) => {
  180. if (!result) {
  181. __classPrivateFieldGet(this, _YargsInstance_usage, "f").fail(__classPrivateFieldGet(this, _YargsInstance_shim, "f").y18n.__('Argument check failed: %s', f.toString()));
  182. }
  183. else if (typeof result === 'string' || result instanceof Error) {
  184. __classPrivateFieldGet(this, _YargsInstance_usage, "f").fail(result.toString(), result);
  185. }
  186. return argv;
  187. }, (err) => {
  188. __classPrivateFieldGet(this, _YargsInstance_usage, "f").fail(err.message ? err.message : err.toString(), err);
  189. return argv;
  190. });
  191. }, false, global);
  192. return this;
  193. }
  194. choices(key, value) {
  195. argsert('<object|string|array> [string|array]', [key, value], arguments.length);
  196. this[kPopulateParserHintArrayDictionary](this.choices.bind(this), 'choices', key, value);
  197. return this;
  198. }
  199. coerce(keys, value) {
  200. argsert('<object|string|array> [function]', [keys, value], arguments.length);
  201. if (Array.isArray(keys)) {
  202. if (!value) {
  203. throw new YError('coerce callback must be provided');
  204. }
  205. for (const key of keys) {
  206. this.coerce(key, value);
  207. }
  208. return this;
  209. }
  210. else if (typeof keys === 'object') {
  211. for (const key of Object.keys(keys)) {
  212. this.coerce(key, keys[key]);
  213. }
  214. return this;
  215. }
  216. if (!value) {
  217. throw new YError('coerce callback must be provided');
  218. }
  219. __classPrivateFieldGet(this, _YargsInstance_options, "f").key[keys] = true;
  220. __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").addCoerceMiddleware((argv, yargs) => {
  221. let aliases;
  222. const shouldCoerce = Object.hasOwnProperty.call(argv, keys);
  223. if (!shouldCoerce) {
  224. return argv;
  225. }
  226. return maybeAsyncResult(() => {
  227. aliases = yargs.getAliases();
  228. return value(argv[keys]);
  229. }, (result) => {
  230. argv[keys] = result;
  231. const stripAliased = yargs
  232. .getInternalMethods()
  233. .getParserConfiguration()['strip-aliased'];
  234. if (aliases[keys] && stripAliased !== true) {
  235. for (const alias of aliases[keys]) {
  236. argv[alias] = result;
  237. }
  238. }
  239. return argv;
  240. }, (err) => {
  241. throw new YError(err.message);
  242. });
  243. }, keys);
  244. return this;
  245. }
  246. conflicts(key1, key2) {
  247. argsert('<string|object> [string|array]', [key1, key2], arguments.length);
  248. __classPrivateFieldGet(this, _YargsInstance_validation, "f").conflicts(key1, key2);
  249. return this;
  250. }
  251. config(key = 'config', msg, parseFn) {
  252. argsert('[object|string] [string|function] [function]', [key, msg, parseFn], arguments.length);
  253. if (typeof key === 'object' && !Array.isArray(key)) {
  254. key = applyExtends(key, __classPrivateFieldGet(this, _YargsInstance_cwd, "f"), this[kGetParserConfiguration]()['deep-merge-config'] || false, __classPrivateFieldGet(this, _YargsInstance_shim, "f"));
  255. __classPrivateFieldGet(this, _YargsInstance_options, "f").configObjects = (__classPrivateFieldGet(this, _YargsInstance_options, "f").configObjects || []).concat(key);
  256. return this;
  257. }
  258. if (typeof msg === 'function') {
  259. parseFn = msg;
  260. msg = undefined;
  261. }
  262. this.describe(key, msg || __classPrivateFieldGet(this, _YargsInstance_usage, "f").deferY18nLookup('Path to JSON config file'));
  263. (Array.isArray(key) ? key : [key]).forEach(k => {
  264. __classPrivateFieldGet(this, _YargsInstance_options, "f").config[k] = parseFn || true;
  265. });
  266. return this;
  267. }
  268. completion(cmd, desc, fn) {
  269. argsert('[string] [string|boolean|function] [function]', [cmd, desc, fn], arguments.length);
  270. if (typeof desc === 'function') {
  271. fn = desc;
  272. desc = undefined;
  273. }
  274. __classPrivateFieldSet(this, _YargsInstance_completionCommand, cmd || __classPrivateFieldGet(this, _YargsInstance_completionCommand, "f") || 'completion', "f");
  275. if (!desc && desc !== false) {
  276. desc = 'generate completion script';
  277. }
  278. this.command(__classPrivateFieldGet(this, _YargsInstance_completionCommand, "f"), desc);
  279. if (fn)
  280. __classPrivateFieldGet(this, _YargsInstance_completion, "f").registerFunction(fn);
  281. return this;
  282. }
  283. command(cmd, description, builder, handler, middlewares, deprecated) {
  284. argsert('<string|array|object> [string|boolean] [function|object] [function] [array] [boolean|string]', [cmd, description, builder, handler, middlewares, deprecated], arguments.length);
  285. __classPrivateFieldGet(this, _YargsInstance_command, "f").addHandler(cmd, description, builder, handler, middlewares, deprecated);
  286. return this;
  287. }
  288. commands(cmd, description, builder, handler, middlewares, deprecated) {
  289. return this.command(cmd, description, builder, handler, middlewares, deprecated);
  290. }
  291. commandDir(dir, opts) {
  292. argsert('<string> [object]', [dir, opts], arguments.length);
  293. const req = __classPrivateFieldGet(this, _YargsInstance_parentRequire, "f") || __classPrivateFieldGet(this, _YargsInstance_shim, "f").require;
  294. __classPrivateFieldGet(this, _YargsInstance_command, "f").addDirectory(dir, req, __classPrivateFieldGet(this, _YargsInstance_shim, "f").getCallerFile(), opts);
  295. return this;
  296. }
  297. count(keys) {
  298. argsert('<array|string>', [keys], arguments.length);
  299. this[kPopulateParserHintArray]('count', keys);
  300. this[kTrackManuallySetKeys](keys);
  301. return this;
  302. }
  303. default(key, value, defaultDescription) {
  304. argsert('<object|string|array> [*] [string]', [key, value, defaultDescription], arguments.length);
  305. if (defaultDescription) {
  306. assertSingleKey(key, __classPrivateFieldGet(this, _YargsInstance_shim, "f"));
  307. __classPrivateFieldGet(this, _YargsInstance_options, "f").defaultDescription[key] = defaultDescription;
  308. }
  309. if (typeof value === 'function') {
  310. assertSingleKey(key, __classPrivateFieldGet(this, _YargsInstance_shim, "f"));
  311. if (!__classPrivateFieldGet(this, _YargsInstance_options, "f").defaultDescription[key])
  312. __classPrivateFieldGet(this, _YargsInstance_options, "f").defaultDescription[key] =
  313. __classPrivateFieldGet(this, _YargsInstance_usage, "f").functionDescription(value);
  314. value = value.call();
  315. }
  316. this[kPopulateParserHintSingleValueDictionary](this.default.bind(this), 'default', key, value);
  317. return this;
  318. }
  319. defaults(key, value, defaultDescription) {
  320. return this.default(key, value, defaultDescription);
  321. }
  322. demandCommand(min = 1, max, minMsg, maxMsg) {
  323. argsert('[number] [number|string] [string|null|undefined] [string|null|undefined]', [min, max, minMsg, maxMsg], arguments.length);
  324. if (typeof max !== 'number') {
  325. minMsg = max;
  326. max = Infinity;
  327. }
  328. this.global('_', false);
  329. __classPrivateFieldGet(this, _YargsInstance_options, "f").demandedCommands._ = {
  330. min,
  331. max,
  332. minMsg,
  333. maxMsg,
  334. };
  335. return this;
  336. }
  337. demand(keys, max, msg) {
  338. if (Array.isArray(max)) {
  339. max.forEach(key => {
  340. assertNotStrictEqual(msg, true, __classPrivateFieldGet(this, _YargsInstance_shim, "f"));
  341. this.demandOption(key, msg);
  342. });
  343. max = Infinity;
  344. }
  345. else if (typeof max !== 'number') {
  346. msg = max;
  347. max = Infinity;
  348. }
  349. if (typeof keys === 'number') {
  350. assertNotStrictEqual(msg, true, __classPrivateFieldGet(this, _YargsInstance_shim, "f"));
  351. this.demandCommand(keys, max, msg, msg);
  352. }
  353. else if (Array.isArray(keys)) {
  354. keys.forEach(key => {
  355. assertNotStrictEqual(msg, true, __classPrivateFieldGet(this, _YargsInstance_shim, "f"));
  356. this.demandOption(key, msg);
  357. });
  358. }
  359. else {
  360. if (typeof msg === 'string') {
  361. this.demandOption(keys, msg);
  362. }
  363. else if (msg === true || typeof msg === 'undefined') {
  364. this.demandOption(keys);
  365. }
  366. }
  367. return this;
  368. }
  369. demandOption(keys, msg) {
  370. argsert('<object|string|array> [string]', [keys, msg], arguments.length);
  371. this[kPopulateParserHintSingleValueDictionary](this.demandOption.bind(this), 'demandedOptions', keys, msg);
  372. return this;
  373. }
  374. deprecateOption(option, message) {
  375. argsert('<string> [string|boolean]', [option, message], arguments.length);
  376. __classPrivateFieldGet(this, _YargsInstance_options, "f").deprecatedOptions[option] = message;
  377. return this;
  378. }
  379. describe(keys, description) {
  380. argsert('<object|string|array> [string]', [keys, description], arguments.length);
  381. this[kSetKey](keys, true);
  382. __classPrivateFieldGet(this, _YargsInstance_usage, "f").describe(keys, description);
  383. return this;
  384. }
  385. detectLocale(detect) {
  386. argsert('<boolean>', [detect], arguments.length);
  387. __classPrivateFieldSet(this, _YargsInstance_detectLocale, detect, "f");
  388. return this;
  389. }
  390. env(prefix) {
  391. argsert('[string|boolean]', [prefix], arguments.length);
  392. if (prefix === false)
  393. delete __classPrivateFieldGet(this, _YargsInstance_options, "f").envPrefix;
  394. else
  395. __classPrivateFieldGet(this, _YargsInstance_options, "f").envPrefix = prefix || '';
  396. return this;
  397. }
  398. epilogue(msg) {
  399. argsert('<string>', [msg], arguments.length);
  400. __classPrivateFieldGet(this, _YargsInstance_usage, "f").epilog(msg);
  401. return this;
  402. }
  403. epilog(msg) {
  404. return this.epilogue(msg);
  405. }
  406. example(cmd, description) {
  407. argsert('<string|array> [string]', [cmd, description], arguments.length);
  408. if (Array.isArray(cmd)) {
  409. cmd.forEach(exampleParams => this.example(...exampleParams));
  410. }
  411. else {
  412. __classPrivateFieldGet(this, _YargsInstance_usage, "f").example(cmd, description);
  413. }
  414. return this;
  415. }
  416. exit(code, err) {
  417. __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, "f");
  418. __classPrivateFieldSet(this, _YargsInstance_exitError, err, "f");
  419. if (__classPrivateFieldGet(this, _YargsInstance_exitProcess, "f"))
  420. __classPrivateFieldGet(this, _YargsInstance_shim, "f").process.exit(code);
  421. }
  422. exitProcess(enabled = true) {
  423. argsert('[boolean]', [enabled], arguments.length);
  424. __classPrivateFieldSet(this, _YargsInstance_exitProcess, enabled, "f");
  425. return this;
  426. }
  427. fail(f) {
  428. argsert('<function|boolean>', [f], arguments.length);
  429. if (typeof f === 'boolean' && f !== false) {
  430. throw new YError("Invalid first argument. Expected function or boolean 'false'");
  431. }
  432. __classPrivateFieldGet(this, _YargsInstance_usage, "f").failFn(f);
  433. return this;
  434. }
  435. getAliases() {
  436. return this.parsed ? this.parsed.aliases : {};
  437. }
  438. async getCompletion(args, done) {
  439. argsert('<array> [function]', [args, done], arguments.length);
  440. if (!done) {
  441. return new Promise((resolve, reject) => {
  442. __classPrivateFieldGet(this, _YargsInstance_completion, "f").getCompletion(args, (err, completions) => {
  443. if (err)
  444. reject(err);
  445. else
  446. resolve(completions);
  447. });
  448. });
  449. }
  450. else {
  451. return __classPrivateFieldGet(this, _YargsInstance_completion, "f").getCompletion(args, done);
  452. }
  453. }
  454. getDemandedOptions() {
  455. argsert([], 0);
  456. return __classPrivateFieldGet(this, _YargsInstance_options, "f").demandedOptions;
  457. }
  458. getDemandedCommands() {
  459. argsert([], 0);
  460. return __classPrivateFieldGet(this, _YargsInstance_options, "f").demandedCommands;
  461. }
  462. getDeprecatedOptions() {
  463. argsert([], 0);
  464. return __classPrivateFieldGet(this, _YargsInstance_options, "f").deprecatedOptions;
  465. }
  466. getDetectLocale() {
  467. return __classPrivateFieldGet(this, _YargsInstance_detectLocale, "f");
  468. }
  469. getExitProcess() {
  470. return __classPrivateFieldGet(this, _YargsInstance_exitProcess, "f");
  471. }
  472. getGroups() {
  473. return Object.assign({}, __classPrivateFieldGet(this, _YargsInstance_groups, "f"), __classPrivateFieldGet(this, _YargsInstance_preservedGroups, "f"));
  474. }
  475. getHelp() {
  476. __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, "f");
  477. if (!__classPrivateFieldGet(this, _YargsInstance_usage, "f").hasCachedHelpMessage()) {
  478. if (!this.parsed) {
  479. const parse = this[kRunYargsParserAndExecuteCommands](__classPrivateFieldGet(this, _YargsInstance_processArgs, "f"), undefined, undefined, 0, true);
  480. if (isPromise(parse)) {
  481. return parse.then(() => {
  482. return __classPrivateFieldGet(this, _YargsInstance_usage, "f").help();
  483. });
  484. }
  485. }
  486. const builderResponse = __classPrivateFieldGet(this, _YargsInstance_command, "f").runDefaultBuilderOn(this);
  487. if (isPromise(builderResponse)) {
  488. return builderResponse.then(() => {
  489. return __classPrivateFieldGet(this, _YargsInstance_usage, "f").help();
  490. });
  491. }
  492. }
  493. return Promise.resolve(__classPrivateFieldGet(this, _YargsInstance_usage, "f").help());
  494. }
  495. getOptions() {
  496. return __classPrivateFieldGet(this, _YargsInstance_options, "f");
  497. }
  498. getStrict() {
  499. return __classPrivateFieldGet(this, _YargsInstance_strict, "f");
  500. }
  501. getStrictCommands() {
  502. return __classPrivateFieldGet(this, _YargsInstance_strictCommands, "f");
  503. }
  504. getStrictOptions() {
  505. return __classPrivateFieldGet(this, _YargsInstance_strictOptions, "f");
  506. }
  507. global(globals, global) {
  508. argsert('<string|array> [boolean]', [globals, global], arguments.length);
  509. globals = [].concat(globals);
  510. if (global !== false) {
  511. __classPrivateFieldGet(this, _YargsInstance_options, "f").local = __classPrivateFieldGet(this, _YargsInstance_options, "f").local.filter(l => globals.indexOf(l) === -1);
  512. }
  513. else {
  514. globals.forEach(g => {
  515. if (!__classPrivateFieldGet(this, _YargsInstance_options, "f").local.includes(g))
  516. __classPrivateFieldGet(this, _YargsInstance_options, "f").local.push(g);
  517. });
  518. }
  519. return this;
  520. }
  521. group(opts, groupName) {
  522. argsert('<string|array> <string>', [opts, groupName], arguments.length);
  523. const existing = __classPrivateFieldGet(this, _YargsInstance_preservedGroups, "f")[groupName] || __classPrivateFieldGet(this, _YargsInstance_groups, "f")[groupName];
  524. if (__classPrivateFieldGet(this, _YargsInstance_preservedGroups, "f")[groupName]) {
  525. delete __classPrivateFieldGet(this, _YargsInstance_preservedGroups, "f")[groupName];
  526. }
  527. const seen = {};
  528. __classPrivateFieldGet(this, _YargsInstance_groups, "f")[groupName] = (existing || []).concat(opts).filter(key => {
  529. if (seen[key])
  530. return false;
  531. return (seen[key] = true);
  532. });
  533. return this;
  534. }
  535. hide(key) {
  536. argsert('<string>', [key], arguments.length);
  537. __classPrivateFieldGet(this, _YargsInstance_options, "f").hiddenOptions.push(key);
  538. return this;
  539. }
  540. implies(key, value) {
  541. argsert('<string|object> [number|string|array]', [key, value], arguments.length);
  542. __classPrivateFieldGet(this, _YargsInstance_validation, "f").implies(key, value);
  543. return this;
  544. }
  545. locale(locale) {
  546. argsert('[string]', [locale], arguments.length);
  547. if (!locale) {
  548. this[kGuessLocale]();
  549. return __classPrivateFieldGet(this, _YargsInstance_shim, "f").y18n.getLocale();
  550. }
  551. __classPrivateFieldSet(this, _YargsInstance_detectLocale, false, "f");
  552. __classPrivateFieldGet(this, _YargsInstance_shim, "f").y18n.setLocale(locale);
  553. return this;
  554. }
  555. middleware(callback, applyBeforeValidation, global) {
  556. return __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").addMiddleware(callback, !!applyBeforeValidation, global);
  557. }
  558. nargs(key, value) {
  559. argsert('<string|object|array> [number]', [key, value], arguments.length);
  560. this[kPopulateParserHintSingleValueDictionary](this.nargs.bind(this), 'narg', key, value);
  561. return this;
  562. }
  563. normalize(keys) {
  564. argsert('<array|string>', [keys], arguments.length);
  565. this[kPopulateParserHintArray]('normalize', keys);
  566. return this;
  567. }
  568. number(keys) {
  569. argsert('<array|string>', [keys], arguments.length);
  570. this[kPopulateParserHintArray]('number', keys);
  571. this[kTrackManuallySetKeys](keys);
  572. return this;
  573. }
  574. option(key, opt) {
  575. argsert('<string|object> [object]', [key, opt], arguments.length);
  576. if (typeof key === 'object') {
  577. Object.keys(key).forEach(k => {
  578. this.options(k, key[k]);
  579. });
  580. }
  581. else {
  582. if (typeof opt !== 'object') {
  583. opt = {};
  584. }
  585. this[kTrackManuallySetKeys](key);
  586. if (__classPrivateFieldGet(this, _YargsInstance_versionOpt, "f") && (key === 'version' || (opt === null || opt === void 0 ? void 0 : opt.alias) === 'version')) {
  587. this[kEmitWarning]([
  588. '"version" is a reserved word.',
  589. 'Please do one of the following:',
  590. '- Disable version with `yargs.version(false)` if using "version" as an option',
  591. '- Use the built-in `yargs.version` method instead (if applicable)',
  592. '- Use a different option key',
  593. 'https://yargs.js.org/docs/#api-reference-version',
  594. ].join('\n'), undefined, 'versionWarning');
  595. }
  596. __classPrivateFieldGet(this, _YargsInstance_options, "f").key[key] = true;
  597. if (opt.alias)
  598. this.alias(key, opt.alias);
  599. const deprecate = opt.deprecate || opt.deprecated;
  600. if (deprecate) {
  601. this.deprecateOption(key, deprecate);
  602. }
  603. const demand = opt.demand || opt.required || opt.require;
  604. if (demand) {
  605. this.demand(key, demand);
  606. }
  607. if (opt.demandOption) {
  608. this.demandOption(key, typeof opt.demandOption === 'string' ? opt.demandOption : undefined);
  609. }
  610. if (opt.conflicts) {
  611. this.conflicts(key, opt.conflicts);
  612. }
  613. if ('default' in opt) {
  614. this.default(key, opt.default);
  615. }
  616. if (opt.implies !== undefined) {
  617. this.implies(key, opt.implies);
  618. }
  619. if (opt.nargs !== undefined) {
  620. this.nargs(key, opt.nargs);
  621. }
  622. if (opt.config) {
  623. this.config(key, opt.configParser);
  624. }
  625. if (opt.normalize) {
  626. this.normalize(key);
  627. }
  628. if (opt.choices) {
  629. this.choices(key, opt.choices);
  630. }
  631. if (opt.coerce) {
  632. this.coerce(key, opt.coerce);
  633. }
  634. if (opt.group) {
  635. this.group(key, opt.group);
  636. }
  637. if (opt.boolean || opt.type === 'boolean') {
  638. this.boolean(key);
  639. if (opt.alias)
  640. this.boolean(opt.alias);
  641. }
  642. if (opt.array || opt.type === 'array') {
  643. this.array(key);
  644. if (opt.alias)
  645. this.array(opt.alias);
  646. }
  647. if (opt.number || opt.type === 'number') {
  648. this.number(key);
  649. if (opt.alias)
  650. this.number(opt.alias);
  651. }
  652. if (opt.string || opt.type === 'string') {
  653. this.string(key);
  654. if (opt.alias)
  655. this.string(opt.alias);
  656. }
  657. if (opt.count || opt.type === 'count') {
  658. this.count(key);
  659. }
  660. if (typeof opt.global === 'boolean') {
  661. this.global(key, opt.global);
  662. }
  663. if (opt.defaultDescription) {
  664. __classPrivateFieldGet(this, _YargsInstance_options, "f").defaultDescription[key] = opt.defaultDescription;
  665. }
  666. if (opt.skipValidation) {
  667. this.skipValidation(key);
  668. }
  669. const desc = opt.describe || opt.description || opt.desc;
  670. this.describe(key, desc);
  671. if (opt.hidden) {
  672. this.hide(key);
  673. }
  674. if (opt.requiresArg) {
  675. this.requiresArg(key);
  676. }
  677. }
  678. return this;
  679. }
  680. options(key, opt) {
  681. return this.option(key, opt);
  682. }
  683. parse(args, shortCircuit, _parseFn) {
  684. argsert('[string|array] [function|boolean|object] [function]', [args, shortCircuit, _parseFn], arguments.length);
  685. this[kFreeze]();
  686. if (typeof args === 'undefined') {
  687. args = __classPrivateFieldGet(this, _YargsInstance_processArgs, "f");
  688. }
  689. if (typeof shortCircuit === 'object') {
  690. __classPrivateFieldSet(this, _YargsInstance_parseContext, shortCircuit, "f");
  691. shortCircuit = _parseFn;
  692. }
  693. if (typeof shortCircuit === 'function') {
  694. __classPrivateFieldSet(this, _YargsInstance_parseFn, shortCircuit, "f");
  695. shortCircuit = false;
  696. }
  697. if (!shortCircuit)
  698. __classPrivateFieldSet(this, _YargsInstance_processArgs, args, "f");
  699. if (__classPrivateFieldGet(this, _YargsInstance_parseFn, "f"))
  700. __classPrivateFieldSet(this, _YargsInstance_exitProcess, false, "f");
  701. const parsed = this[kRunYargsParserAndExecuteCommands](args, !!shortCircuit);
  702. const tmpParsed = this.parsed;
  703. __classPrivateFieldGet(this, _YargsInstance_completion, "f").setParsed(this.parsed);
  704. if (isPromise(parsed)) {
  705. return parsed
  706. .then(argv => {
  707. if (__classPrivateFieldGet(this, _YargsInstance_parseFn, "f"))
  708. __classPrivateFieldGet(this, _YargsInstance_parseFn, "f").call(this, __classPrivateFieldGet(this, _YargsInstance_exitError, "f"), argv, __classPrivateFieldGet(this, _YargsInstance_output, "f"));
  709. return argv;
  710. })
  711. .catch(err => {
  712. if (__classPrivateFieldGet(this, _YargsInstance_parseFn, "f")) {
  713. __classPrivateFieldGet(this, _YargsInstance_parseFn, "f")(err, this.parsed.argv, __classPrivateFieldGet(this, _YargsInstance_output, "f"));
  714. }
  715. throw err;
  716. })
  717. .finally(() => {
  718. this[kUnfreeze]();
  719. this.parsed = tmpParsed;
  720. });
  721. }
  722. else {
  723. if (__classPrivateFieldGet(this, _YargsInstance_parseFn, "f"))
  724. __classPrivateFieldGet(this, _YargsInstance_parseFn, "f").call(this, __classPrivateFieldGet(this, _YargsInstance_exitError, "f"), parsed, __classPrivateFieldGet(this, _YargsInstance_output, "f"));
  725. this[kUnfreeze]();
  726. this.parsed = tmpParsed;
  727. }
  728. return parsed;
  729. }
  730. parseAsync(args, shortCircuit, _parseFn) {
  731. const maybePromise = this.parse(args, shortCircuit, _parseFn);
  732. return !isPromise(maybePromise)
  733. ? Promise.resolve(maybePromise)
  734. : maybePromise;
  735. }
  736. parseSync(args, shortCircuit, _parseFn) {
  737. const maybePromise = this.parse(args, shortCircuit, _parseFn);
  738. if (isPromise(maybePromise)) {
  739. throw new YError('.parseSync() must not be used with asynchronous builders, handlers, or middleware');
  740. }
  741. return maybePromise;
  742. }
  743. parserConfiguration(config) {
  744. argsert('<object>', [config], arguments.length);
  745. __classPrivateFieldSet(this, _YargsInstance_parserConfig, config, "f");
  746. return this;
  747. }
  748. pkgConf(key, rootPath) {
  749. argsert('<string> [string]', [key, rootPath], arguments.length);
  750. let conf = null;
  751. const obj = this[kPkgUp](rootPath || __classPrivateFieldGet(this, _YargsInstance_cwd, "f"));
  752. if (obj[key] && typeof obj[key] === 'object') {
  753. conf = applyExtends(obj[key], rootPath || __classPrivateFieldGet(this, _YargsInstance_cwd, "f"), this[kGetParserConfiguration]()['deep-merge-config'] || false, __classPrivateFieldGet(this, _YargsInstance_shim, "f"));
  754. __classPrivateFieldGet(this, _YargsInstance_options, "f").configObjects = (__classPrivateFieldGet(this, _YargsInstance_options, "f").configObjects || []).concat(conf);
  755. }
  756. return this;
  757. }
  758. positional(key, opts) {
  759. argsert('<string> <object>', [key, opts], arguments.length);
  760. const supportedOpts = [
  761. 'default',
  762. 'defaultDescription',
  763. 'implies',
  764. 'normalize',
  765. 'choices',
  766. 'conflicts',
  767. 'coerce',
  768. 'type',
  769. 'describe',
  770. 'desc',
  771. 'description',
  772. 'alias',
  773. ];
  774. opts = objFilter(opts, (k, v) => {
  775. if (k === 'type' && !['string', 'number', 'boolean'].includes(v))
  776. return false;
  777. return supportedOpts.includes(k);
  778. });
  779. const fullCommand = __classPrivateFieldGet(this, _YargsInstance_context, "f").fullCommands[__classPrivateFieldGet(this, _YargsInstance_context, "f").fullCommands.length - 1];
  780. const parseOptions = fullCommand
  781. ? __classPrivateFieldGet(this, _YargsInstance_command, "f").cmdToParseOptions(fullCommand)
  782. : {
  783. array: [],
  784. alias: {},
  785. default: {},
  786. demand: {},
  787. };
  788. objectKeys(parseOptions).forEach(pk => {
  789. const parseOption = parseOptions[pk];
  790. if (Array.isArray(parseOption)) {
  791. if (parseOption.indexOf(key) !== -1)
  792. opts[pk] = true;
  793. }
  794. else {
  795. if (parseOption[key] && !(pk in opts))
  796. opts[pk] = parseOption[key];
  797. }
  798. });
  799. this.group(key, __classPrivateFieldGet(this, _YargsInstance_usage, "f").getPositionalGroupName());
  800. return this.option(key, opts);
  801. }
  802. recommendCommands(recommend = true) {
  803. argsert('[boolean]', [recommend], arguments.length);
  804. __classPrivateFieldSet(this, _YargsInstance_recommendCommands, recommend, "f");
  805. return this;
  806. }
  807. required(keys, max, msg) {
  808. return this.demand(keys, max, msg);
  809. }
  810. require(keys, max, msg) {
  811. return this.demand(keys, max, msg);
  812. }
  813. requiresArg(keys) {
  814. argsert('<array|string|object> [number]', [keys], arguments.length);
  815. if (typeof keys === 'string' && __classPrivateFieldGet(this, _YargsInstance_options, "f").narg[keys]) {
  816. return this;
  817. }
  818. else {
  819. this[kPopulateParserHintSingleValueDictionary](this.requiresArg.bind(this), 'narg', keys, NaN);
  820. }
  821. return this;
  822. }
  823. showCompletionScript($0, cmd) {
  824. argsert('[string] [string]', [$0, cmd], arguments.length);
  825. $0 = $0 || this.$0;
  826. __classPrivateFieldGet(this, _YargsInstance_logger, "f").log(__classPrivateFieldGet(this, _YargsInstance_completion, "f").generateCompletionScript($0, cmd || __classPrivateFieldGet(this, _YargsInstance_completionCommand, "f") || 'completion'));
  827. return this;
  828. }
  829. showHelp(level) {
  830. argsert('[string|function]', [level], arguments.length);
  831. __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, "f");
  832. if (!__classPrivateFieldGet(this, _YargsInstance_usage, "f").hasCachedHelpMessage()) {
  833. if (!this.parsed) {
  834. const parse = this[kRunYargsParserAndExecuteCommands](__classPrivateFieldGet(this, _YargsInstance_processArgs, "f"), undefined, undefined, 0, true);
  835. if (isPromise(parse)) {
  836. parse.then(() => {
  837. __classPrivateFieldGet(this, _YargsInstance_usage, "f").showHelp(level);
  838. });
  839. return this;
  840. }
  841. }
  842. const builderResponse = __classPrivateFieldGet(this, _YargsInstance_command, "f").runDefaultBuilderOn(this);
  843. if (isPromise(builderResponse)) {
  844. builderResponse.then(() => {
  845. __classPrivateFieldGet(this, _YargsInstance_usage, "f").showHelp(level);
  846. });
  847. return this;
  848. }
  849. }
  850. __classPrivateFieldGet(this, _YargsInstance_usage, "f").showHelp(level);
  851. return this;
  852. }
  853. scriptName(scriptName) {
  854. this.customScriptName = true;
  855. this.$0 = scriptName;
  856. return this;
  857. }
  858. showHelpOnFail(enabled, message) {
  859. argsert('[boolean|string] [string]', [enabled, message], arguments.length);
  860. __classPrivateFieldGet(this, _YargsInstance_usage, "f").showHelpOnFail(enabled, message);
  861. return this;
  862. }
  863. showVersion(level) {
  864. argsert('[string|function]', [level], arguments.length);
  865. __classPrivateFieldGet(this, _YargsInstance_usage, "f").showVersion(level);
  866. return this;
  867. }
  868. skipValidation(keys) {
  869. argsert('<array|string>', [keys], arguments.length);
  870. this[kPopulateParserHintArray]('skipValidation', keys);
  871. return this;
  872. }
  873. strict(enabled) {
  874. argsert('[boolean]', [enabled], arguments.length);
  875. __classPrivateFieldSet(this, _YargsInstance_strict, enabled !== false, "f");
  876. return this;
  877. }
  878. strictCommands(enabled) {
  879. argsert('[boolean]', [enabled], arguments.length);
  880. __classPrivateFieldSet(this, _YargsInstance_strictCommands, enabled !== false, "f");
  881. return this;
  882. }
  883. strictOptions(enabled) {
  884. argsert('[boolean]', [enabled], arguments.length);
  885. __classPrivateFieldSet(this, _YargsInstance_strictOptions, enabled !== false, "f");
  886. return this;
  887. }
  888. string(keys) {
  889. argsert('<array|string>', [keys], arguments.length);
  890. this[kPopulateParserHintArray]('string', keys);
  891. this[kTrackManuallySetKeys](keys);
  892. return this;
  893. }
  894. terminalWidth() {
  895. argsert([], 0);
  896. return __classPrivateFieldGet(this, _YargsInstance_shim, "f").process.stdColumns;
  897. }
  898. updateLocale(obj) {
  899. return this.updateStrings(obj);
  900. }
  901. updateStrings(obj) {
  902. argsert('<object>', [obj], arguments.length);
  903. __classPrivateFieldSet(this, _YargsInstance_detectLocale, false, "f");
  904. __classPrivateFieldGet(this, _YargsInstance_shim, "f").y18n.updateLocale(obj);
  905. return this;
  906. }
  907. usage(msg, description, builder, handler) {
  908. argsert('<string|null|undefined> [string|boolean] [function|object] [function]', [msg, description, builder, handler], arguments.length);
  909. if (description !== undefined) {
  910. assertNotStrictEqual(msg, null, __classPrivateFieldGet(this, _YargsInstance_shim, "f"));
  911. if ((msg || '').match(/^\$0( |$)/)) {
  912. return this.command(msg, description, builder, handler);
  913. }
  914. else {
  915. throw new YError('.usage() description must start with $0 if being used as alias for .command()');
  916. }
  917. }
  918. else {
  919. __classPrivateFieldGet(this, _YargsInstance_usage, "f").usage(msg);
  920. return this;
  921. }
  922. }
  923. version(opt, msg, ver) {
  924. const defaultVersionOpt = 'version';
  925. argsert('[boolean|string] [string] [string]', [opt, msg, ver], arguments.length);
  926. if (__classPrivateFieldGet(this, _YargsInstance_versionOpt, "f")) {
  927. this[kDeleteFromParserHintObject](__classPrivateFieldGet(this, _YargsInstance_versionOpt, "f"));
  928. __classPrivateFieldGet(this, _YargsInstance_usage, "f").version(undefined);
  929. __classPrivateFieldSet(this, _YargsInstance_versionOpt, null, "f");
  930. }
  931. if (arguments.length === 0) {
  932. ver = this[kGuessVersion]();
  933. opt = defaultVersionOpt;
  934. }
  935. else if (arguments.length === 1) {
  936. if (opt === false) {
  937. return this;
  938. }
  939. ver = opt;
  940. opt = defaultVersionOpt;
  941. }
  942. else if (arguments.length === 2) {
  943. ver = msg;
  944. msg = undefined;
  945. }
  946. __classPrivateFieldSet(this, _YargsInstance_versionOpt, typeof opt === 'string' ? opt : defaultVersionOpt, "f");
  947. msg = msg || __classPrivateFieldGet(this, _YargsInstance_usage, "f").deferY18nLookup('Show version number');
  948. __classPrivateFieldGet(this, _YargsInstance_usage, "f").version(ver || undefined);
  949. this.boolean(__classPrivateFieldGet(this, _YargsInstance_versionOpt, "f"));
  950. this.describe(__classPrivateFieldGet(this, _YargsInstance_versionOpt, "f"), msg);
  951. return this;
  952. }
  953. wrap(cols) {
  954. argsert('<number|null|undefined>', [cols], arguments.length);
  955. __classPrivateFieldGet(this, _YargsInstance_usage, "f").wrap(cols);
  956. return this;
  957. }
  958. [(_YargsInstance_command = new WeakMap(), _YargsInstance_cwd = new WeakMap(), _YargsInstance_context = new WeakMap(), _YargsInstance_completion = new WeakMap(), _YargsInstance_completionCommand = new WeakMap(), _YargsInstance_defaultShowHiddenOpt = new WeakMap(), _YargsInstance_exitError = new WeakMap(), _YargsInstance_detectLocale = new WeakMap(), _YargsInstance_emittedWarnings = new WeakMap(), _YargsInstance_exitProcess = new WeakMap(), _YargsInstance_frozens = new WeakMap(), _YargsInstance_globalMiddleware = new WeakMap(), _YargsInstance_groups = new WeakMap(), _YargsInstance_hasOutput = new WeakMap(), _YargsInstance_helpOpt = new WeakMap(), _YargsInstance_isGlobalContext = new WeakMap(), _YargsInstance_logger = new WeakMap(), _YargsInstance_output = new WeakMap(), _YargsInstance_options = new WeakMap(), _YargsInstance_parentRequire = new WeakMap(), _YargsInstance_parserConfig = new WeakMap(), _YargsInstance_parseFn = new WeakMap(), _YargsInstance_parseContext = new WeakMap(), _YargsInstance_pkgs = new WeakMap(), _YargsInstance_preservedGroups = new WeakMap(), _YargsInstance_processArgs = new WeakMap(), _YargsInstance_recommendCommands = new WeakMap(), _YargsInstance_shim = new WeakMap(), _YargsInstance_strict = new WeakMap(), _YargsInstance_strictCommands = new WeakMap(), _YargsInstance_strictOptions = new WeakMap(), _YargsInstance_usage = new WeakMap(), _YargsInstance_versionOpt = new WeakMap(), _YargsInstance_validation = new WeakMap(), kCopyDoubleDash)](argv) {
  959. if (!argv._ || !argv['--'])
  960. return argv;
  961. argv._.push.apply(argv._, argv['--']);
  962. try {
  963. delete argv['--'];
  964. }
  965. catch (_err) { }
  966. return argv;
  967. }
  968. [kCreateLogger]() {
  969. return {
  970. log: (...args) => {
  971. if (!this[kHasParseCallback]())
  972. console.log(...args);
  973. __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, "f");
  974. if (__classPrivateFieldGet(this, _YargsInstance_output, "f").length)
  975. __classPrivateFieldSet(this, _YargsInstance_output, __classPrivateFieldGet(this, _YargsInstance_output, "f") + '\n', "f");
  976. __classPrivateFieldSet(this, _YargsInstance_output, __classPrivateFieldGet(this, _YargsInstance_output, "f") + args.join(' '), "f");
  977. },
  978. error: (...args) => {
  979. if (!this[kHasParseCallback]())
  980. console.error(...args);
  981. __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, "f");
  982. if (__classPrivateFieldGet(this, _YargsInstance_output, "f").length)
  983. __classPrivateFieldSet(this, _YargsInstance_output, __classPrivateFieldGet(this, _YargsInstance_output, "f") + '\n', "f");
  984. __classPrivateFieldSet(this, _YargsInstance_output, __classPrivateFieldGet(this, _YargsInstance_output, "f") + args.join(' '), "f");
  985. },
  986. };
  987. }
  988. [kDeleteFromParserHintObject](optionKey) {
  989. objectKeys(__classPrivateFieldGet(this, _YargsInstance_options, "f")).forEach((hintKey) => {
  990. if (((key) => key === 'configObjects')(hintKey))
  991. return;
  992. const hint = __classPrivateFieldGet(this, _YargsInstance_options, "f")[hintKey];
  993. if (Array.isArray(hint)) {
  994. if (hint.includes(optionKey))
  995. hint.splice(hint.indexOf(optionKey), 1);
  996. }
  997. else if (typeof hint === 'object') {
  998. delete hint[optionKey];
  999. }
  1000. });
  1001. delete __classPrivateFieldGet(this, _YargsInstance_usage, "f").getDescriptions()[optionKey];
  1002. }
  1003. [kEmitWarning](warning, type, deduplicationId) {
  1004. if (!__classPrivateFieldGet(this, _YargsInstance_emittedWarnings, "f")[deduplicationId]) {
  1005. __classPrivateFieldGet(this, _YargsInstance_shim, "f").process.emitWarning(warning, type);
  1006. __classPrivateFieldGet(this, _YargsInstance_emittedWarnings, "f")[deduplicationId] = true;
  1007. }
  1008. }
  1009. [kFreeze]() {
  1010. __classPrivateFieldGet(this, _YargsInstance_frozens, "f").push({
  1011. options: __classPrivateFieldGet(this, _YargsInstance_options, "f"),
  1012. configObjects: __classPrivateFieldGet(this, _YargsInstance_options, "f").configObjects.slice(0),
  1013. exitProcess: __classPrivateFieldGet(this, _YargsInstance_exitProcess, "f"),
  1014. groups: __classPrivateFieldGet(this, _YargsInstance_groups, "f"),
  1015. strict: __classPrivateFieldGet(this, _YargsInstance_strict, "f"),
  1016. strictCommands: __classPrivateFieldGet(this, _YargsInstance_strictCommands, "f"),
  1017. strictOptions: __classPrivateFieldGet(this, _YargsInstance_strictOptions, "f"),
  1018. completionCommand: __classPrivateFieldGet(this, _YargsInstance_completionCommand, "f"),
  1019. output: __classPrivateFieldGet(this, _YargsInstance_output, "f"),
  1020. exitError: __classPrivateFieldGet(this, _YargsInstance_exitError, "f"),
  1021. hasOutput: __classPrivateFieldGet(this, _YargsInstance_hasOutput, "f"),
  1022. parsed: this.parsed,
  1023. parseFn: __classPrivateFieldGet(this, _YargsInstance_parseFn, "f"),
  1024. parseContext: __classPrivateFieldGet(this, _YargsInstance_parseContext, "f"),
  1025. });
  1026. __classPrivateFieldGet(this, _YargsInstance_usage, "f").freeze();
  1027. __classPrivateFieldGet(this, _YargsInstance_validation, "f").freeze();
  1028. __classPrivateFieldGet(this, _YargsInstance_command, "f").freeze();
  1029. __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").freeze();
  1030. }
  1031. [kGetDollarZero]() {
  1032. let $0 = '';
  1033. let default$0;
  1034. if (/\b(node|iojs|electron)(\.exe)?$/.test(__classPrivateFieldGet(this, _YargsInstance_shim, "f").process.argv()[0])) {
  1035. default$0 = __classPrivateFieldGet(this, _YargsInstance_shim, "f").process.argv().slice(1, 2);
  1036. }
  1037. else {
  1038. default$0 = __classPrivateFieldGet(this, _YargsInstance_shim, "f").process.argv().slice(0, 1);
  1039. }
  1040. $0 = default$0
  1041. .map(x => {
  1042. const b = this[kRebase](__classPrivateFieldGet(this, _YargsInstance_cwd, "f"), x);
  1043. return x.match(/^(\/|([a-zA-Z]:)?\\)/) && b.length < x.length ? b : x;
  1044. })
  1045. .join(' ')
  1046. .trim();
  1047. if (__classPrivateFieldGet(this, _YargsInstance_shim, "f").getEnv('_') &&
  1048. __classPrivateFieldGet(this, _YargsInstance_shim, "f").getProcessArgvBin() === __classPrivateFieldGet(this, _YargsInstance_shim, "f").getEnv('_')) {
  1049. $0 = __classPrivateFieldGet(this, _YargsInstance_shim, "f")
  1050. .getEnv('_')
  1051. .replace(`${__classPrivateFieldGet(this, _YargsInstance_shim, "f").path.dirname(__classPrivateFieldGet(this, _YargsInstance_shim, "f").process.execPath())}/`, '');
  1052. }
  1053. return $0;
  1054. }
  1055. [kGetParserConfiguration]() {
  1056. return __classPrivateFieldGet(this, _YargsInstance_parserConfig, "f");
  1057. }
  1058. [kGuessLocale]() {
  1059. if (!__classPrivateFieldGet(this, _YargsInstance_detectLocale, "f"))
  1060. return;
  1061. const locale = __classPrivateFieldGet(this, _YargsInstance_shim, "f").getEnv('LC_ALL') ||
  1062. __classPrivateFieldGet(this, _YargsInstance_shim, "f").getEnv('LC_MESSAGES') ||
  1063. __classPrivateFieldGet(this, _YargsInstance_shim, "f").getEnv('LANG') ||
  1064. __classPrivateFieldGet(this, _YargsInstance_shim, "f").getEnv('LANGUAGE') ||
  1065. 'en_US';
  1066. this.locale(locale.replace(/[.:].*/, ''));
  1067. }
  1068. [kGuessVersion]() {
  1069. const obj = this[kPkgUp]();
  1070. return obj.version || 'unknown';
  1071. }
  1072. [kParsePositionalNumbers](argv) {
  1073. const args = argv['--'] ? argv['--'] : argv._;
  1074. for (let i = 0, arg; (arg = args[i]) !== undefined; i++) {
  1075. if (__classPrivateFieldGet(this, _YargsInstance_shim, "f").Parser.looksLikeNumber(arg) &&
  1076. Number.isSafeInteger(Math.floor(parseFloat(`${arg}`)))) {
  1077. args[i] = Number(arg);
  1078. }
  1079. }
  1080. return argv;
  1081. }
  1082. [kPkgUp](rootPath) {
  1083. const npath = rootPath || '*';
  1084. if (__classPrivateFieldGet(this, _YargsInstance_pkgs, "f")[npath])
  1085. return __classPrivateFieldGet(this, _YargsInstance_pkgs, "f")[npath];
  1086. let obj = {};
  1087. try {
  1088. let startDir = rootPath || __classPrivateFieldGet(this, _YargsInstance_shim, "f").mainFilename;
  1089. if (!rootPath && __classPrivateFieldGet(this, _YargsInstance_shim, "f").path.extname(startDir)) {
  1090. startDir = __classPrivateFieldGet(this, _YargsInstance_shim, "f").path.dirname(startDir);
  1091. }
  1092. const pkgJsonPath = __classPrivateFieldGet(this, _YargsInstance_shim, "f").findUp(startDir, (dir, names) => {
  1093. if (names.includes('package.json')) {
  1094. return 'package.json';
  1095. }
  1096. else {
  1097. return undefined;
  1098. }
  1099. });
  1100. assertNotStrictEqual(pkgJsonPath, undefined, __classPrivateFieldGet(this, _YargsInstance_shim, "f"));
  1101. obj = JSON.parse(__classPrivateFieldGet(this, _YargsInstance_shim, "f").readFileSync(pkgJsonPath, 'utf8'));
  1102. }
  1103. catch (_noop) { }
  1104. __classPrivateFieldGet(this, _YargsInstance_pkgs, "f")[npath] = obj || {};
  1105. return __classPrivateFieldGet(this, _YargsInstance_pkgs, "f")[npath];
  1106. }
  1107. [kPopulateParserHintArray](type, keys) {
  1108. keys = [].concat(keys);
  1109. keys.forEach(key => {
  1110. key = this[kSanitizeKey](key);
  1111. __classPrivateFieldGet(this, _YargsInstance_options, "f")[type].push(key);
  1112. });
  1113. }
  1114. [kPopulateParserHintSingleValueDictionary](builder, type, key, value) {
  1115. this[kPopulateParserHintDictionary](builder, type, key, value, (type, key, value) => {
  1116. __classPrivateFieldGet(this, _YargsInstance_options, "f")[type][key] = value;
  1117. });
  1118. }
  1119. [kPopulateParserHintArrayDictionary](builder, type, key, value) {
  1120. this[kPopulateParserHintDictionary](builder, type, key, value, (type, key, value) => {
  1121. __classPrivateFieldGet(this, _YargsInstance_options, "f")[type][key] = (__classPrivateFieldGet(this, _YargsInstance_options, "f")[type][key] || []).concat(value);
  1122. });
  1123. }
  1124. [kPopulateParserHintDictionary](builder, type, key, value, singleKeyHandler) {
  1125. if (Array.isArray(key)) {
  1126. key.forEach(k => {
  1127. builder(k, value);
  1128. });
  1129. }
  1130. else if (((key) => typeof key === 'object')(key)) {
  1131. for (const k of objectKeys(key)) {
  1132. builder(k, key[k]);
  1133. }
  1134. }
  1135. else {
  1136. singleKeyHandler(type, this[kSanitizeKey](key), value);
  1137. }
  1138. }
  1139. [kSanitizeKey](key) {
  1140. if (key === '__proto__')
  1141. return '___proto___';
  1142. return key;
  1143. }
  1144. [kSetKey](key, set) {
  1145. this[kPopulateParserHintSingleValueDictionary](this[kSetKey].bind(this), 'key', key, set);
  1146. return this;
  1147. }
  1148. [kUnfreeze]() {
  1149. var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
  1150. const frozen = __classPrivateFieldGet(this, _YargsInstance_frozens, "f").pop();
  1151. assertNotStrictEqual(frozen, undefined, __classPrivateFieldGet(this, _YargsInstance_shim, "f"));
  1152. let configObjects;
  1153. (_a = this, _b = this, _c = this, _d = this, _e = this, _f = this, _g = this, _h = this, _j = this, _k = this, _l = this, _m = this, {
  1154. options: ({ set value(_o) { __classPrivateFieldSet(_a, _YargsInstance_options, _o, "f"); } }).value,
  1155. configObjects,
  1156. exitProcess: ({ set value(_o) { __classPrivateFieldSet(_b, _YargsInstance_exitProcess, _o, "f"); } }).value,
  1157. groups: ({ set value(_o) { __classPrivateFieldSet(_c, _YargsInstance_groups, _o, "f"); } }).value,
  1158. output: ({ set value(_o) { __classPrivateFieldSet(_d, _YargsInstance_output, _o, "f"); } }).value,
  1159. exitError: ({ set value(_o) { __classPrivateFieldSet(_e, _YargsInstance_exitError, _o, "f"); } }).value,
  1160. hasOutput: ({ set value(_o) { __classPrivateFieldSet(_f, _YargsInstance_hasOutput, _o, "f"); } }).value,
  1161. parsed: this.parsed,
  1162. strict: ({ set value(_o) { __classPrivateFieldSet(_g, _YargsInstance_strict, _o, "f"); } }).value,
  1163. strictCommands: ({ set value(_o) { __classPrivateFieldSet(_h, _YargsInstance_strictCommands, _o, "f"); } }).value,
  1164. strictOptions: ({ set value(_o) { __classPrivateFieldSet(_j, _YargsInstance_strictOptions, _o, "f"); } }).value,
  1165. completionCommand: ({ set value(_o) { __classPrivateFieldSet(_k, _YargsInstance_completionCommand, _o, "f"); } }).value,
  1166. parseFn: ({ set value(_o) { __classPrivateFieldSet(_l, _YargsInstance_parseFn, _o, "f"); } }).value,
  1167. parseContext: ({ set value(_o) { __classPrivateFieldSet(_m, _YargsInstance_parseContext, _o, "f"); } }).value,
  1168. } = frozen);
  1169. __classPrivateFieldGet(this, _YargsInstance_options, "f").configObjects = configObjects;
  1170. __classPrivateFieldGet(this, _YargsInstance_usage, "f").unfreeze();
  1171. __classPrivateFieldGet(this, _YargsInstance_validation, "f").unfreeze();
  1172. __classPrivateFieldGet(this, _YargsInstance_command, "f").unfreeze();
  1173. __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").unfreeze();
  1174. }
  1175. [kValidateAsync](validation, argv) {
  1176. return maybeAsyncResult(argv, result => {
  1177. validation(result);
  1178. return result;
  1179. });
  1180. }
  1181. getInternalMethods() {
  1182. return {
  1183. getCommandInstance: this[kGetCommandInstance].bind(this),
  1184. getContext: this[kGetContext].bind(this),
  1185. getHasOutput: this[kGetHasOutput].bind(this),
  1186. getLoggerInstance: this[kGetLoggerInstance].bind(this),
  1187. getParseContext: this[kGetParseContext].bind(this),
  1188. getParserConfiguration: this[kGetParserConfiguration].bind(this),
  1189. getUsageInstance: this[kGetUsageInstance].bind(this),
  1190. getValidationInstance: this[kGetValidationInstance].bind(this),
  1191. hasParseCallback: this[kHasParseCallback].bind(this),
  1192. isGlobalContext: this[kIsGlobalContext].bind(this),
  1193. postProcess: this[kPostProcess].bind(this),
  1194. reset: this[kReset].bind(this),
  1195. runValidation: this[kRunValidation].bind(this),
  1196. runYargsParserAndExecuteCommands: this[kRunYargsParserAndExecuteCommands].bind(this),
  1197. setHasOutput: this[kSetHasOutput].bind(this),
  1198. };
  1199. }
  1200. [kGetCommandInstance]() {
  1201. return __classPrivateFieldGet(this, _YargsInstance_command, "f");
  1202. }
  1203. [kGetContext]() {
  1204. return __classPrivateFieldGet(this, _YargsInstance_context, "f");
  1205. }
  1206. [kGetHasOutput]() {
  1207. return __classPrivateFieldGet(this, _YargsInstance_hasOutput, "f");
  1208. }
  1209. [kGetLoggerInstance]() {
  1210. return __classPrivateFieldGet(this, _YargsInstance_logger, "f");
  1211. }
  1212. [kGetParseContext]() {
  1213. return __classPrivateFieldGet(this, _YargsInstance_parseContext, "f") || {};
  1214. }
  1215. [kGetUsageInstance]() {
  1216. return __classPrivateFieldGet(this, _YargsInstance_usage, "f");
  1217. }
  1218. [kGetValidationInstance]() {
  1219. return __classPrivateFieldGet(this, _YargsInstance_validation, "f");
  1220. }
  1221. [kHasParseCallback]() {
  1222. return !!__classPrivateFieldGet(this, _YargsInstance_parseFn, "f");
  1223. }
  1224. [kIsGlobalContext]() {
  1225. return __classPrivateFieldGet(this, _YargsInstance_isGlobalContext, "f");
  1226. }
  1227. [kPostProcess](argv, populateDoubleDash, calledFromCommand, runGlobalMiddleware) {
  1228. if (calledFromCommand)
  1229. return argv;
  1230. if (isPromise(argv))
  1231. return argv;
  1232. if (!populateDoubleDash) {
  1233. argv = this[kCopyDoubleDash](argv);
  1234. }
  1235. const parsePositionalNumbers = this[kGetParserConfiguration]()['parse-positional-numbers'] ||
  1236. this[kGetParserConfiguration]()['parse-positional-numbers'] === undefined;
  1237. if (parsePositionalNumbers) {
  1238. argv = this[kParsePositionalNumbers](argv);
  1239. }
  1240. if (runGlobalMiddleware) {
  1241. argv = applyMiddleware(argv, this, __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").getMiddleware(), false);
  1242. }
  1243. return argv;
  1244. }
  1245. [kReset](aliases = {}) {
  1246. __classPrivateFieldSet(this, _YargsInstance_options, __classPrivateFieldGet(this, _YargsInstance_options, "f") || {}, "f");
  1247. const tmpOptions = {};
  1248. tmpOptions.local = __classPrivateFieldGet(this, _YargsInstance_options, "f").local || [];
  1249. tmpOptions.configObjects = __classPrivateFieldGet(this, _YargsInstance_options, "f").configObjects || [];
  1250. const localLookup = {};
  1251. tmpOptions.local.forEach(l => {
  1252. localLookup[l] = true;
  1253. (aliases[l] || []).forEach(a => {
  1254. localLookup[a] = true;
  1255. });
  1256. });
  1257. Object.assign(__classPrivateFieldGet(this, _YargsInstance_preservedGroups, "f"), Object.keys(__classPrivateFieldGet(this, _YargsInstance_groups, "f")).reduce((acc, groupName) => {
  1258. const keys = __classPrivateFieldGet(this, _YargsInstance_groups, "f")[groupName].filter(key => !(key in localLookup));
  1259. if (keys.length > 0) {
  1260. acc[groupName] = keys;
  1261. }
  1262. return acc;
  1263. }, {}));
  1264. __classPrivateFieldSet(this, _YargsInstance_groups, {}, "f");
  1265. const arrayOptions = [
  1266. 'array',
  1267. 'boolean',
  1268. 'string',
  1269. 'skipValidation',
  1270. 'count',
  1271. 'normalize',
  1272. 'number',
  1273. 'hiddenOptions',
  1274. ];
  1275. const objectOptions = [
  1276. 'narg',
  1277. 'key',
  1278. 'alias',
  1279. 'default',
  1280. 'defaultDescription',
  1281. 'config',
  1282. 'choices',
  1283. 'demandedOptions',
  1284. 'demandedCommands',
  1285. 'deprecatedOptions',
  1286. ];
  1287. arrayOptions.forEach(k => {
  1288. tmpOptions[k] = (__classPrivateFieldGet(this, _YargsInstance_options, "f")[k] || []).filter((k) => !localLookup[k]);
  1289. });
  1290. objectOptions.forEach((k) => {
  1291. tmpOptions[k] = objFilter(__classPrivateFieldGet(this, _YargsInstance_options, "f")[k], k => !localLookup[k]);
  1292. });
  1293. tmpOptions.envPrefix = __classPrivateFieldGet(this, _YargsInstance_options, "f").envPrefix;
  1294. __classPrivateFieldSet(this, _YargsInstance_options, tmpOptions, "f");
  1295. __classPrivateFieldSet(this, _YargsInstance_usage, __classPrivateFieldGet(this, _YargsInstance_usage, "f")
  1296. ? __classPrivateFieldGet(this, _YargsInstance_usage, "f").reset(localLookup)
  1297. : Usage(this, __classPrivateFieldGet(this, _YargsInstance_shim, "f")), "f");
  1298. __classPrivateFieldSet(this, _YargsInstance_validation, __classPrivateFieldGet(this, _YargsInstance_validation, "f")
  1299. ? __classPrivateFieldGet(this, _YargsInstance_validation, "f").reset(localLookup)
  1300. : Validation(this, __classPrivateFieldGet(this, _YargsInstance_usage, "f"), __classPrivateFieldGet(this, _YargsInstance_shim, "f")), "f");
  1301. __classPrivateFieldSet(this, _YargsInstance_command, __classPrivateFieldGet(this, _YargsInstance_command, "f")
  1302. ? __classPrivateFieldGet(this, _YargsInstance_command, "f").reset()
  1303. : Command(__classPrivateFieldGet(this, _YargsInstance_usage, "f"), __classPrivateFieldGet(this, _YargsInstance_validation, "f"), __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f"), __classPrivateFieldGet(this, _YargsInstance_shim, "f")), "f");
  1304. if (!__classPrivateFieldGet(this, _YargsInstance_completion, "f"))
  1305. __classPrivateFieldSet(this, _YargsInstance_completion, Completion(this, __classPrivateFieldGet(this, _YargsInstance_usage, "f"), __classPrivateFieldGet(this, _YargsInstance_command, "f"), __classPrivateFieldGet(this, _YargsInstance_shim, "f")), "f");
  1306. __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").reset();
  1307. __classPrivateFieldSet(this, _YargsInstance_completionCommand, null, "f");
  1308. __classPrivateFieldSet(this, _YargsInstance_output, '', "f");
  1309. __classPrivateFieldSet(this, _YargsInstance_exitError, null, "f");
  1310. __classPrivateFieldSet(this, _YargsInstance_hasOutput, false, "f");
  1311. this.parsed = false;
  1312. return this;
  1313. }
  1314. [kRebase](base, dir) {
  1315. return __classPrivateFieldGet(this, _YargsInstance_shim, "f").path.relative(base, dir);
  1316. }
  1317. [kRunYargsParserAndExecuteCommands](args, shortCircuit, calledFromCommand, commandIndex = 0, helpOnly = false) {
  1318. let skipValidation = !!calledFromCommand || helpOnly;
  1319. args = args || __classPrivateFieldGet(this, _YargsInstance_processArgs, "f");
  1320. __classPrivateFieldGet(this, _YargsInstance_options, "f").__ = __classPrivateFieldGet(this, _YargsInstance_shim, "f").y18n.__;
  1321. __classPrivateFieldGet(this, _YargsInstance_options, "f").configuration = this[kGetParserConfiguration]();
  1322. const populateDoubleDash = !!__classPrivateFieldGet(this, _YargsInstance_options, "f").configuration['populate--'];
  1323. const config = Object.assign({}, __classPrivateFieldGet(this, _YargsInstance_options, "f").configuration, {
  1324. 'populate--': true,
  1325. });
  1326. const parsed = __classPrivateFieldGet(this, _YargsInstance_shim, "f").Parser.detailed(args, Object.assign({}, __classPrivateFieldGet(this, _YargsInstance_options, "f"), {
  1327. configuration: { 'parse-positional-numbers': false, ...config },
  1328. }));
  1329. const argv = Object.assign(parsed.argv, __classPrivateFieldGet(this, _YargsInstance_parseContext, "f"));
  1330. let argvPromise = undefined;
  1331. const aliases = parsed.aliases;
  1332. let helpOptSet = false;
  1333. let versionOptSet = false;
  1334. Object.keys(argv).forEach(key => {
  1335. if (key === __classPrivateFieldGet(this, _YargsInstance_helpOpt, "f") && argv[key]) {
  1336. helpOptSet = true;
  1337. }
  1338. else if (key === __classPrivateFieldGet(this, _YargsInstance_versionOpt, "f") && argv[key]) {
  1339. versionOptSet = true;
  1340. }
  1341. });
  1342. argv.$0 = this.$0;
  1343. this.parsed = parsed;
  1344. if (commandIndex === 0) {
  1345. __classPrivateFieldGet(this, _YargsInstance_usage, "f").clearCachedHelpMessage();
  1346. }
  1347. try {
  1348. this[kGuessLocale]();
  1349. if (shortCircuit) {
  1350. return this[kPostProcess](argv, populateDoubleDash, !!calledFromCommand, false);
  1351. }
  1352. if (__classPrivateFieldGet(this, _YargsInstance_helpOpt, "f")) {
  1353. const helpCmds = [__classPrivateFieldGet(this, _YargsInstance_helpOpt, "f")]
  1354. .concat(aliases[__classPrivateFieldGet(this, _YargsInstance_helpOpt, "f")] || [])
  1355. .filter(k => k.length > 1);
  1356. if (helpCmds.includes('' + argv._[argv._.length - 1])) {
  1357. argv._.pop();
  1358. helpOptSet = true;
  1359. }
  1360. }
  1361. __classPrivateFieldSet(this, _YargsInstance_isGlobalContext, false, "f");
  1362. const handlerKeys = __classPrivateFieldGet(this, _YargsInstance_command, "f").getCommands();
  1363. const requestCompletions = __classPrivateFieldGet(this, _YargsInstance_completion, "f").completionKey in argv;
  1364. const skipRecommendation = helpOptSet || requestCompletions || helpOnly;
  1365. if (argv._.length) {
  1366. if (handlerKeys.length) {
  1367. let firstUnknownCommand;
  1368. for (let i = commandIndex || 0, cmd; argv._[i] !== undefined; i++) {
  1369. cmd = String(argv._[i]);
  1370. if (handlerKeys.includes(cmd) && cmd !== __classPrivateFieldGet(this, _YargsInstance_completionCommand, "f")) {
  1371. const innerArgv = __classPrivateFieldGet(this, _YargsInstance_command, "f").runCommand(cmd, this, parsed, i + 1, helpOnly, helpOptSet || versionOptSet || helpOnly);
  1372. return this[kPostProcess](innerArgv, populateDoubleDash, !!calledFromCommand, false);
  1373. }
  1374. else if (!firstUnknownCommand &&
  1375. cmd !== __classPrivateFieldGet(this, _YargsInstance_completionCommand, "f")) {
  1376. firstUnknownCommand = cmd;
  1377. break;
  1378. }
  1379. }
  1380. if (!__classPrivateFieldGet(this, _YargsInstance_command, "f").hasDefaultCommand() &&
  1381. __classPrivateFieldGet(this, _YargsInstance_recommendCommands, "f") &&
  1382. firstUnknownCommand &&
  1383. !skipRecommendation) {
  1384. __classPrivateFieldGet(this, _YargsInstance_validation, "f").recommendCommands(firstUnknownCommand, handlerKeys);
  1385. }
  1386. }
  1387. if (__classPrivateFieldGet(this, _YargsInstance_completionCommand, "f") &&
  1388. argv._.includes(__classPrivateFieldGet(this, _YargsInstance_completionCommand, "f")) &&
  1389. !requestCompletions) {
  1390. if (__classPrivateFieldGet(this, _YargsInstance_exitProcess, "f"))
  1391. setBlocking(true);
  1392. this.showCompletionScript();
  1393. this.exit(0);
  1394. }
  1395. }
  1396. if (__classPrivateFieldGet(this, _YargsInstance_command, "f").hasDefaultCommand() && !skipRecommendation) {
  1397. const innerArgv = __classPrivateFieldGet(this, _YargsInstance_command, "f").runCommand(null, this, parsed, 0, helpOnly, helpOptSet || versionOptSet || helpOnly);
  1398. return this[kPostProcess](innerArgv, populateDoubleDash, !!calledFromCommand, false);
  1399. }
  1400. if (requestCompletions) {
  1401. if (__classPrivateFieldGet(this, _YargsInstance_exitProcess, "f"))
  1402. setBlocking(true);
  1403. args = [].concat(args);
  1404. const completionArgs = args.slice(args.indexOf(`--${__classPrivateFieldGet(this, _YargsInstance_completion, "f").completionKey}`) + 1);
  1405. __classPrivateFieldGet(this, _YargsInstance_completion, "f").getCompletion(completionArgs, (err, completions) => {
  1406. if (err)
  1407. throw new YError(err.message);
  1408. (completions || []).forEach(completion => {
  1409. __classPrivateFieldGet(this, _YargsInstance_logger, "f").log(completion);
  1410. });
  1411. this.exit(0);
  1412. });
  1413. return this[kPostProcess](argv, !populateDoubleDash, !!calledFromCommand, false);
  1414. }
  1415. if (!__classPrivateFieldGet(this, _YargsInstance_hasOutput, "f")) {
  1416. if (helpOptSet) {
  1417. if (__classPrivateFieldGet(this, _YargsInstance_exitProcess, "f"))
  1418. setBlocking(true);
  1419. skipValidation = true;
  1420. this.showHelp('log');
  1421. this.exit(0);
  1422. }
  1423. else if (versionOptSet) {
  1424. if (__classPrivateFieldGet(this, _YargsInstance_exitProcess, "f"))
  1425. setBlocking(true);
  1426. skipValidation = true;
  1427. __classPrivateFieldGet(this, _YargsInstance_usage, "f").showVersion('log');
  1428. this.exit(0);
  1429. }
  1430. }
  1431. if (!skipValidation && __classPrivateFieldGet(this, _YargsInstance_options, "f").skipValidation.length > 0) {
  1432. skipValidation = Object.keys(argv).some(key => __classPrivateFieldGet(this, _YargsInstance_options, "f").skipValidation.indexOf(key) >= 0 && argv[key] === true);
  1433. }
  1434. if (!skipValidation) {
  1435. if (parsed.error)
  1436. throw new YError(parsed.error.message);
  1437. if (!requestCompletions) {
  1438. const validation = this[kRunValidation](aliases, {}, parsed.error);
  1439. if (!calledFromCommand) {
  1440. argvPromise = applyMiddleware(argv, this, __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").getMiddleware(), true);
  1441. }
  1442. argvPromise = this[kValidateAsync](validation, argvPromise !== null && argvPromise !== void 0 ? argvPromise : argv);
  1443. if (isPromise(argvPromise) && !calledFromCommand) {
  1444. argvPromise = argvPromise.then(() => {
  1445. return applyMiddleware(argv, this, __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").getMiddleware(), false);
  1446. });
  1447. }
  1448. }
  1449. }
  1450. }
  1451. catch (err) {
  1452. if (err instanceof YError)
  1453. __classPrivateFieldGet(this, _YargsInstance_usage, "f").fail(err.message, err);
  1454. else
  1455. throw err;
  1456. }
  1457. return this[kPostProcess](argvPromise !== null && argvPromise !== void 0 ? argvPromise : argv, populateDoubleDash, !!calledFromCommand, true);
  1458. }
  1459. [kRunValidation](aliases, positionalMap, parseErrors, isDefaultCommand) {
  1460. const demandedOptions = { ...this.getDemandedOptions() };
  1461. return (argv) => {
  1462. if (parseErrors)
  1463. throw new YError(parseErrors.message);
  1464. __classPrivateFieldGet(this, _YargsInstance_validation, "f").nonOptionCount(argv);
  1465. __classPrivateFieldGet(this, _YargsInstance_validation, "f").requiredArguments(argv, demandedOptions);
  1466. let failedStrictCommands = false;
  1467. if (__classPrivateFieldGet(this, _YargsInstance_strictCommands, "f")) {
  1468. failedStrictCommands = __classPrivateFieldGet(this, _YargsInstance_validation, "f").unknownCommands(argv);
  1469. }
  1470. if (__classPrivateFieldGet(this, _YargsInstance_strict, "f") && !failedStrictCommands) {
  1471. __classPrivateFieldGet(this, _YargsInstance_validation, "f").unknownArguments(argv, aliases, positionalMap, !!isDefaultCommand);
  1472. }
  1473. else if (__classPrivateFieldGet(this, _YargsInstance_strictOptions, "f")) {
  1474. __classPrivateFieldGet(this, _YargsInstance_validation, "f").unknownArguments(argv, aliases, {}, false, false);
  1475. }
  1476. __classPrivateFieldGet(this, _YargsInstance_validation, "f").limitedChoices(argv);
  1477. __classPrivateFieldGet(this, _YargsInstance_validation, "f").implications(argv);
  1478. __classPrivateFieldGet(this, _YargsInstance_validation, "f").conflicting(argv);
  1479. };
  1480. }
  1481. [kSetHasOutput]() {
  1482. __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, "f");
  1483. }
  1484. [kTrackManuallySetKeys](keys) {
  1485. if (typeof keys === 'string') {
  1486. __classPrivateFieldGet(this, _YargsInstance_options, "f").key[keys] = true;
  1487. }
  1488. else {
  1489. for (const k of keys) {
  1490. __classPrivateFieldGet(this, _YargsInstance_options, "f").key[k] = true;
  1491. }
  1492. }
  1493. }
  1494. }
  1495. export function isYargsInstance(y) {
  1496. return !!y && typeof y.getInternalMethods === 'function';
  1497. }