diff options
| author | Joel Kronqvist <joel.h.kronqvist@gmail.com> | 2022-03-05 19:02:27 +0200 | 
|---|---|---|
| committer | Joel Kronqvist <joel.h.kronqvist@gmail.com> | 2022-03-05 19:02:27 +0200 | 
| commit | 5d309ff52cd399a6b71968a6b9a70c8ac0b98981 (patch) | |
| tree | 360f7eb50f956e2367ef38fa1fc6ac7ac5258042 /node_modules/yargs | |
| parent | b500a50f1b97d93c98b36ed9a980f8188d648147 (diff) | |
| download | LYLLRuoka-5d309ff52cd399a6b71968a6b9a70c8ac0b98981.tar.gz LYLLRuoka-5d309ff52cd399a6b71968a6b9a70c8ac0b98981.zip  | |
Added node_modules for the updating to work properly.
Diffstat (limited to 'node_modules/yargs')
57 files changed, 7570 insertions, 0 deletions
diff --git a/node_modules/yargs/CHANGELOG.md b/node_modules/yargs/CHANGELOG.md new file mode 100644 index 0000000..ebc3b22 --- /dev/null +++ b/node_modules/yargs/CHANGELOG.md @@ -0,0 +1,88 @@ +# Changelog + +All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. + +## [16.2.0](https://www.github.com/yargs/yargs/compare/v16.1.1...v16.2.0) (2020-12-05) + + +### Features + +* command() now accepts an array of modules ([f415388](https://www.github.com/yargs/yargs/commit/f415388cc454d02786c65c50dd6c7a0cf9d8b842)) + + +### Bug Fixes + +* add package.json to module exports ([#1818](https://www.github.com/yargs/yargs/issues/1818)) ([d783a49](https://www.github.com/yargs/yargs/commit/d783a49a7f21c9bbd4eec2990268f3244c4d5662)), closes [#1817](https://www.github.com/yargs/yargs/issues/1817) + +### [16.1.1](https://www.github.com/yargs/yargs/compare/v16.1.0...v16.1.1) (2020-11-15) + + +### Bug Fixes + +* expose helpers for legacy versions of Node.js ([#1801](https://www.github.com/yargs/yargs/issues/1801)) ([107deaa](https://www.github.com/yargs/yargs/commit/107deaa4f68b7bc3f2386041e1f4fe0272b29c0a)) +* **deno:** get yargs working on deno@1.5.x ([#1799](https://www.github.com/yargs/yargs/issues/1799)) ([cb01c98](https://www.github.com/yargs/yargs/commit/cb01c98c44e30f55c2dc9434caef524ae433d9a4)) + +## [16.1.0](https://www.github.com/yargs/yargs/compare/v16.0.3...v16.1.0) (2020-10-15) + + +### Features + +* expose hideBin helper for CJS ([#1768](https://www.github.com/yargs/yargs/issues/1768)) ([63e1173](https://www.github.com/yargs/yargs/commit/63e1173bb47dc651c151973a16ef659082a9ae66)) + + +### Bug Fixes + +* **deno:** update types for deno ^1.4.0 ([#1772](https://www.github.com/yargs/yargs/issues/1772)) ([0801752](https://www.github.com/yargs/yargs/commit/080175207d281be63edf90adfe4f0568700b0bf5)) +* **exports:** node 13.0-13.6 require a string fallback ([#1776](https://www.github.com/yargs/yargs/issues/1776)) ([b45c43a](https://www.github.com/yargs/yargs/commit/b45c43a5f64b565c3794f9792150eaeec4e00b69)) +* **modules:** module path was incorrect ([#1759](https://www.github.com/yargs/yargs/issues/1759)) ([95a4a0a](https://www.github.com/yargs/yargs/commit/95a4a0ac573cfe158e6e4bc8c8682ebd1644a198)) +* **positional:** positional strings no longer drop decimals ([#1761](https://www.github.com/yargs/yargs/issues/1761)) ([e1a300f](https://www.github.com/yargs/yargs/commit/e1a300f1293ad821c900284616337f080b207980)) +* make positionals in -- count towards validation ([#1752](https://www.github.com/yargs/yargs/issues/1752)) ([eb2b29d](https://www.github.com/yargs/yargs/commit/eb2b29d34f1a41e0fd6c4e841960e5bfc329dc3c)) + +### [16.0.3](https://www.github.com/yargs/yargs/compare/v16.0.2...v16.0.3) (2020-09-10) + + +### Bug Fixes + +* move yargs.cjs to yargs to fix Node 10 imports ([#1747](https://www.github.com/yargs/yargs/issues/1747)) ([5bfb85b](https://www.github.com/yargs/yargs/commit/5bfb85b33b85db8a44b5f7a700a8e4dbaf022df0)) + +### [16.0.2](https://www.github.com/yargs/yargs/compare/v16.0.1...v16.0.2) (2020-09-09) + + +### Bug Fixes + +* **typescript:** yargs-parser was breaking @types/yargs ([#1745](https://www.github.com/yargs/yargs/issues/1745)) ([2253284](https://www.github.com/yargs/yargs/commit/2253284b233cceabd8db677b81c5bf1755eef230)) + +### [16.0.1](https://www.github.com/yargs/yargs/compare/v16.0.0...v16.0.1) (2020-09-09) + + +### Bug Fixes + +* code was not passed to process.exit ([#1742](https://www.github.com/yargs/yargs/issues/1742)) ([d1a9930](https://www.github.com/yargs/yargs/commit/d1a993035a2f76c138460052cf19425f9684b637)) + +## [16.0.0](https://www.github.com/yargs/yargs/compare/v15.4.2...v16.0.0) (2020-09-09) + + +### ⚠ BREAKING CHANGES + +* tweaks to ESM/Deno API surface: now exports yargs function by default; getProcessArgvWithoutBin becomes hideBin; types now exported for Deno. +* find-up replaced with escalade; export map added (limits importable files in Node >= 12); yarser-parser@19.x.x (new decamelize/camelcase implementation). +* **usage:** single character aliases are now shown first in help output +* rebase helper is no longer provided on yargs instance. +* drop support for EOL Node 8 (#1686) + +### Features + +* adds strictOptions() ([#1738](https://www.github.com/yargs/yargs/issues/1738)) ([b215fba](https://www.github.com/yargs/yargs/commit/b215fba0ed6e124e5aad6cf22c8d5875661c63a3)) +* **helpers:** rebase, Parser, applyExtends now blessed helpers ([#1733](https://www.github.com/yargs/yargs/issues/1733)) ([c7debe8](https://www.github.com/yargs/yargs/commit/c7debe8eb1e5bc6ea20b5ed68026c56e5ebec9e1)) +* adds support for ESM and Deno ([#1708](https://www.github.com/yargs/yargs/issues/1708)) ([ac6d5d1](https://www.github.com/yargs/yargs/commit/ac6d5d105a75711fe703f6a39dad5181b383d6c6)) +* drop support for EOL Node 8 ([#1686](https://www.github.com/yargs/yargs/issues/1686)) ([863937f](https://www.github.com/yargs/yargs/commit/863937f23c3102f804cdea78ee3097e28c7c289f)) +* i18n for ESM and Deno ([#1735](https://www.github.com/yargs/yargs/issues/1735)) ([c71783a](https://www.github.com/yargs/yargs/commit/c71783a5a898a0c0e92ac501c939a3ec411ac0c1)) +* tweaks to API surface based on user feedback ([#1726](https://www.github.com/yargs/yargs/issues/1726)) ([4151fee](https://www.github.com/yargs/yargs/commit/4151fee4c33a97d26bc40de7e623e5b0eb87e9bb)) +* **usage:** single char aliases first in help ([#1574](https://www.github.com/yargs/yargs/issues/1574)) ([a552990](https://www.github.com/yargs/yargs/commit/a552990c120646c2d85a5c9b628e1ce92a68e797)) + + +### Bug Fixes + +* **yargs:** add missing command(module) signature ([#1707](https://www.github.com/yargs/yargs/issues/1707)) ([0f81024](https://www.github.com/yargs/yargs/commit/0f810245494ccf13a35b7786d021b30fc95ecad5)), closes [#1704](https://www.github.com/yargs/yargs/issues/1704) + +[Older CHANGELOG Entries](https://github.com/yargs/yargs/blob/master/docs/CHANGELOG-historical.md) diff --git a/node_modules/yargs/LICENSE b/node_modules/yargs/LICENSE new file mode 100644 index 0000000..b0145ca --- /dev/null +++ b/node_modules/yargs/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright 2010 James Halliday (mail@substack.net); Modified work Copyright 2014 Contributors (ben@npmjs.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/yargs/README.md b/node_modules/yargs/README.md new file mode 100644 index 0000000..25a888e --- /dev/null +++ b/node_modules/yargs/README.md @@ -0,0 +1,202 @@ +<p align="center"> +  <img width="250" src="https://raw.githubusercontent.com/yargs/yargs/master/yargs-logo.png"> +</p> +<h1 align="center"> Yargs </h1> +<p align="center"> +  <b >Yargs be a node.js library fer hearties tryin' ter parse optstrings</b> +</p> + +<br> + + +[![NPM version][npm-image]][npm-url] +[![js-standard-style][standard-image]][standard-url] +[![Coverage][coverage-image]][coverage-url] +[![Conventional Commits][conventional-commits-image]][conventional-commits-url] +[![Slack][slack-image]][slack-url] + +## Description +Yargs helps you build interactive command line tools, by parsing arguments and generating an elegant user interface. + +It gives you: + +* commands and (grouped) options (`my-program.js serve --port=5000`). +* a dynamically generated help menu based on your arguments: + +``` +mocha [spec..] + +Run tests with Mocha + +Commands +  mocha inspect [spec..]  Run tests with Mocha                         [default] +  mocha init <path>       create a client-side Mocha setup at <path> + +Rules & Behavior +  --allow-uncaught           Allow uncaught errors to propagate        [boolean] +  --async-only, -A           Require all tests to use a callback (async) or +                             return a Promise                          [boolean] +``` + +* bash-completion shortcuts for commands and options. +* and [tons more](/docs/api.md). + +## Installation + +Stable version: +```bash +npm i yargs +``` + +Bleeding edge version with the most recent features: +```bash +npm i yargs@next +``` + +## Usage + +### Simple Example + +```javascript +#!/usr/bin/env node +const yargs = require('yargs/yargs') +const { hideBin } = require('yargs/helpers') +const argv = yargs(hideBin(process.argv)).argv + +if (argv.ships > 3 && argv.distance < 53.5) { +  console.log('Plunder more riffiwobbles!') +} else { +  console.log('Retreat from the xupptumblers!') +} +``` + +```bash +$ ./plunder.js --ships=4 --distance=22 +Plunder more riffiwobbles! + +$ ./plunder.js --ships 12 --distance 98.7 +Retreat from the xupptumblers! +``` + +### Complex Example + +```javascript +#!/usr/bin/env node +const yargs = require('yargs/yargs') +const { hideBin } = require('yargs/helpers') + +yargs(hideBin(process.argv)) +  .command('serve [port]', 'start the server', (yargs) => { +    yargs +      .positional('port', { +        describe: 'port to bind on', +        default: 5000 +      }) +  }, (argv) => { +    if (argv.verbose) console.info(`start server on :${argv.port}`) +    serve(argv.port) +  }) +  .option('verbose', { +    alias: 'v', +    type: 'boolean', +    description: 'Run with verbose logging' +  }) +  .argv +``` + +Run the example above with `--help` to see the help for the application. + +## Supported Platforms + +### TypeScript + +yargs has type definitions at [@types/yargs][type-definitions]. + +``` +npm i @types/yargs --save-dev +``` + +See usage examples in [docs](/docs/typescript.md). + +### Deno + +As of `v16`, `yargs` supports [Deno](https://github.com/denoland/deno): + +```typescript +import yargs from 'https://deno.land/x/yargs/deno.ts' +import { Arguments } from 'https://deno.land/x/yargs/deno-types.ts' + +yargs(Deno.args) +  .command('download <files...>', 'download a list of files', (yargs: any) => { +    return yargs.positional('files', { +      describe: 'a list of files to do something with' +    }) +  }, (argv: Arguments) => { +    console.info(argv) +  }) +  .strictCommands() +  .demandCommand(1) +  .argv +``` + +### ESM + +As of `v16`,`yargs` supports ESM imports: + +```js +import yargs from 'yargs' +import { hideBin } from 'yargs/helpers' + +yargs(hideBin(process.argv)) +  .command('curl <url>', 'fetch the contents of the URL', () => {}, (argv) => { +    console.info(argv) +  }) +  .demandCommand(1) +  .argv +``` + +### Usage in Browser + +See examples of using yargs in the browser in [docs](/docs/browser.md). + +## Community + +Having problems? want to contribute? join our [community slack](http://devtoolscommunity.herokuapp.com). + +## Documentation + +### Table of Contents + +* [Yargs' API](/docs/api.md) +* [Examples](/docs/examples.md) +* [Parsing Tricks](/docs/tricks.md) +  * [Stop the Parser](/docs/tricks.md#stop) +  * [Negating Boolean Arguments](/docs/tricks.md#negate) +  * [Numbers](/docs/tricks.md#numbers) +  * [Arrays](/docs/tricks.md#arrays) +  * [Objects](/docs/tricks.md#objects) +  * [Quotes](/docs/tricks.md#quotes) +* [Advanced Topics](/docs/advanced.md) +  * [Composing Your App Using Commands](/docs/advanced.md#commands) +  * [Building Configurable CLI Apps](/docs/advanced.md#configuration) +  * [Customizing Yargs' Parser](/docs/advanced.md#customizing) +  * [Bundling yargs](/docs/bundling.md) +* [Contributing](/contributing.md) + +## Supported Node.js Versions + +Libraries in this ecosystem make a best effort to track +[Node.js' release schedule](https://nodejs.org/en/about/releases/). Here's [a +post on why we think this is important](https://medium.com/the-node-js-collection/maintainers-should-consider-following-node-js-release-schedule-ab08ed4de71a). + +[npm-url]: https://www.npmjs.com/package/yargs +[npm-image]: https://img.shields.io/npm/v/yargs.svg +[standard-image]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg +[standard-url]: http://standardjs.com/ +[conventional-commits-image]: https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg +[conventional-commits-url]: https://conventionalcommits.org/ +[slack-image]: http://devtoolscommunity.herokuapp.com/badge.svg +[slack-url]: http://devtoolscommunity.herokuapp.com +[type-definitions]: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/yargs +[coverage-image]: https://img.shields.io/nycrc/yargs/yargs +[coverage-url]: https://github.com/yargs/yargs/blob/master/.nycrc diff --git a/node_modules/yargs/browser.mjs b/node_modules/yargs/browser.mjs new file mode 100644 index 0000000..d8a9f3d --- /dev/null +++ b/node_modules/yargs/browser.mjs @@ -0,0 +1,7 @@ +// Bootstrap yargs for browser: +import browserPlatformShim from './lib/platform-shims/browser.mjs'; +import {YargsWithShim} from './build/lib/yargs-factory.js'; + +const Yargs = YargsWithShim(browserPlatformShim); + +export default Yargs; diff --git a/node_modules/yargs/build/index.cjs b/node_modules/yargs/build/index.cjs new file mode 100644 index 0000000..34ad9a8 --- /dev/null +++ b/node_modules/yargs/build/index.cjs @@ -0,0 +1,2920 @@ +'use strict'; + +var assert = require('assert'); + +class YError extends Error { +    constructor(msg) { +        super(msg || 'yargs error'); +        this.name = 'YError'; +        Error.captureStackTrace(this, YError); +    } +} + +let previouslyVisitedConfigs = []; +let shim; +function applyExtends(config, cwd, mergeExtends, _shim) { +    shim = _shim; +    let defaultConfig = {}; +    if (Object.prototype.hasOwnProperty.call(config, 'extends')) { +        if (typeof config.extends !== 'string') +            return defaultConfig; +        const isPath = /\.json|\..*rc$/.test(config.extends); +        let pathToDefault = null; +        if (!isPath) { +            try { +                pathToDefault = require.resolve(config.extends); +            } +            catch (_err) { +                return config; +            } +        } +        else { +            pathToDefault = getPathToDefaultConfig(cwd, config.extends); +        } +        checkForCircularExtends(pathToDefault); +        previouslyVisitedConfigs.push(pathToDefault); +        defaultConfig = isPath +            ? JSON.parse(shim.readFileSync(pathToDefault, 'utf8')) +            : require(config.extends); +        delete config.extends; +        defaultConfig = applyExtends(defaultConfig, shim.path.dirname(pathToDefault), mergeExtends, shim); +    } +    previouslyVisitedConfigs = []; +    return mergeExtends +        ? mergeDeep(defaultConfig, config) +        : Object.assign({}, defaultConfig, config); +} +function checkForCircularExtends(cfgPath) { +    if (previouslyVisitedConfigs.indexOf(cfgPath) > -1) { +        throw new YError(`Circular extended configurations: '${cfgPath}'.`); +    } +} +function getPathToDefaultConfig(cwd, pathToExtend) { +    return shim.path.resolve(cwd, pathToExtend); +} +function mergeDeep(config1, config2) { +    const target = {}; +    function isObject(obj) { +        return obj && typeof obj === 'object' && !Array.isArray(obj); +    } +    Object.assign(target, config1); +    for (const key of Object.keys(config2)) { +        if (isObject(config2[key]) && isObject(target[key])) { +            target[key] = mergeDeep(config1[key], config2[key]); +        } +        else { +            target[key] = config2[key]; +        } +    } +    return target; +} + +function parseCommand(cmd) { +    const extraSpacesStrippedCommand = cmd.replace(/\s{2,}/g, ' '); +    const splitCommand = extraSpacesStrippedCommand.split(/\s+(?![^[]*]|[^<]*>)/); +    const bregex = /\.*[\][<>]/g; +    const firstCommand = splitCommand.shift(); +    if (!firstCommand) +        throw new Error(`No command found in: ${cmd}`); +    const parsedCommand = { +        cmd: firstCommand.replace(bregex, ''), +        demanded: [], +        optional: [], +    }; +    splitCommand.forEach((cmd, i) => { +        let variadic = false; +        cmd = cmd.replace(/\s/g, ''); +        if (/\.+[\]>]/.test(cmd) && i === splitCommand.length - 1) +            variadic = true; +        if (/^\[/.test(cmd)) { +            parsedCommand.optional.push({ +                cmd: cmd.replace(bregex, '').split('|'), +                variadic, +            }); +        } +        else { +            parsedCommand.demanded.push({ +                cmd: cmd.replace(bregex, '').split('|'), +                variadic, +            }); +        } +    }); +    return parsedCommand; +} + +const positionName = ['first', 'second', 'third', 'fourth', 'fifth', 'sixth']; +function argsert(arg1, arg2, arg3) { +    function parseArgs() { +        return typeof arg1 === 'object' +            ? [{ demanded: [], optional: [] }, arg1, arg2] +            : [ +                parseCommand(`cmd ${arg1}`), +                arg2, +                arg3, +            ]; +    } +    try { +        let position = 0; +        const [parsed, callerArguments, _length] = parseArgs(); +        const args = [].slice.call(callerArguments); +        while (args.length && args[args.length - 1] === undefined) +            args.pop(); +        const length = _length || args.length; +        if (length < parsed.demanded.length) { +            throw new YError(`Not enough arguments provided. Expected ${parsed.demanded.length} but received ${args.length}.`); +        } +        const totalCommands = parsed.demanded.length + parsed.optional.length; +        if (length > totalCommands) { +            throw new YError(`Too many arguments provided. Expected max ${totalCommands} but received ${length}.`); +        } +        parsed.demanded.forEach(demanded => { +            const arg = args.shift(); +            const observedType = guessType(arg); +            const matchingTypes = demanded.cmd.filter(type => type === observedType || type === '*'); +            if (matchingTypes.length === 0) +                argumentTypeError(observedType, demanded.cmd, position); +            position += 1; +        }); +        parsed.optional.forEach(optional => { +            if (args.length === 0) +                return; +            const arg = args.shift(); +            const observedType = guessType(arg); +            const matchingTypes = optional.cmd.filter(type => type === observedType || type === '*'); +            if (matchingTypes.length === 0) +                argumentTypeError(observedType, optional.cmd, position); +            position += 1; +        }); +    } +    catch (err) { +        console.warn(err.stack); +    } +} +function guessType(arg) { +    if (Array.isArray(arg)) { +        return 'array'; +    } +    else if (arg === null) { +        return 'null'; +    } +    return typeof arg; +} +function argumentTypeError(observedType, allowedTypes, position) { +    throw new YError(`Invalid ${positionName[position] || 'manyith'} argument. Expected ${allowedTypes.join(' or ')} but received ${observedType}.`); +} + +function isPromise(maybePromise) { +    return (!!maybePromise && +        !!maybePromise.then && +        typeof maybePromise.then === 'function'); +} + +function assertNotStrictEqual(actual, expected, shim, message) { +    shim.assert.notStrictEqual(actual, expected, message); +} +function assertSingleKey(actual, shim) { +    shim.assert.strictEqual(typeof actual, 'string'); +} +function objectKeys(object) { +    return Object.keys(object); +} + +function objFilter(original = {}, filter = () => true) { +    const obj = {}; +    objectKeys(original).forEach(key => { +        if (filter(key, original[key])) { +            obj[key] = original[key]; +        } +    }); +    return obj; +} + +function globalMiddlewareFactory(globalMiddleware, context) { +    return function (callback, applyBeforeValidation = false) { +        argsert('<array|function> [boolean]', [callback, applyBeforeValidation], arguments.length); +        if (Array.isArray(callback)) { +            for (let i = 0; i < callback.length; i++) { +                if (typeof callback[i] !== 'function') { +                    throw Error('middleware must be a function'); +                } +                callback[i].applyBeforeValidation = applyBeforeValidation; +            } +            Array.prototype.push.apply(globalMiddleware, callback); +        } +        else if (typeof callback === 'function') { +            callback.applyBeforeValidation = applyBeforeValidation; +            globalMiddleware.push(callback); +        } +        return context; +    }; +} +function commandMiddlewareFactory(commandMiddleware) { +    if (!commandMiddleware) +        return []; +    return commandMiddleware.map(middleware => { +        middleware.applyBeforeValidation = false; +        return middleware; +    }); +} +function applyMiddleware(argv, yargs, middlewares, beforeValidation) { +    const beforeValidationError = new Error('middleware cannot return a promise when applyBeforeValidation is true'); +    return middlewares.reduce((acc, middleware) => { +        if (middleware.applyBeforeValidation !== beforeValidation) { +            return acc; +        } +        if (isPromise(acc)) { +            return acc +                .then(initialObj => Promise.all([ +                initialObj, +                middleware(initialObj, yargs), +            ])) +                .then(([initialObj, middlewareObj]) => Object.assign(initialObj, middlewareObj)); +        } +        else { +            const result = middleware(acc, yargs); +            if (beforeValidation && isPromise(result)) +                throw beforeValidationError; +            return isPromise(result) +                ? result.then(middlewareObj => Object.assign(acc, middlewareObj)) +                : Object.assign(acc, result); +        } +    }, argv); +} + +function getProcessArgvBinIndex() { +    if (isBundledElectronApp()) +        return 0; +    return 1; +} +function isBundledElectronApp() { +    return isElectronApp() && !process.defaultApp; +} +function isElectronApp() { +    return !!process.versions.electron; +} +function hideBin(argv) { +    return argv.slice(getProcessArgvBinIndex() + 1); +} +function getProcessArgvBin() { +    return process.argv[getProcessArgvBinIndex()]; +} + +var processArgv = /*#__PURE__*/Object.freeze({ +  __proto__: null, +  hideBin: hideBin, +  getProcessArgvBin: getProcessArgvBin +}); + +function whichModule(exported) { +    if (typeof require === 'undefined') +        return null; +    for (let i = 0, files = Object.keys(require.cache), mod; i < files.length; i++) { +        mod = require.cache[files[i]]; +        if (mod.exports === exported) +            return mod; +    } +    return null; +} + +const DEFAULT_MARKER = /(^\*)|(^\$0)/; +function command(yargs, usage, validation, globalMiddleware = [], shim) { +    const self = {}; +    let handlers = {}; +    let aliasMap = {}; +    let defaultCommand; +    self.addHandler = function addHandler(cmd, description, builder, handler, commandMiddleware, deprecated) { +        let aliases = []; +        const middlewares = commandMiddlewareFactory(commandMiddleware); +        handler = handler || (() => { }); +        if (Array.isArray(cmd)) { +            if (isCommandAndAliases(cmd)) { +                [cmd, ...aliases] = cmd; +            } +            else { +                for (const command of cmd) { +                    self.addHandler(command); +                } +            } +        } +        else if (isCommandHandlerDefinition(cmd)) { +            let command = Array.isArray(cmd.command) || typeof cmd.command === 'string' +                ? cmd.command +                : moduleName(cmd); +            if (cmd.aliases) +                command = [].concat(command).concat(cmd.aliases); +            self.addHandler(command, extractDesc(cmd), cmd.builder, cmd.handler, cmd.middlewares, cmd.deprecated); +            return; +        } +        else if (isCommandBuilderDefinition(builder)) { +            self.addHandler([cmd].concat(aliases), description, builder.builder, builder.handler, builder.middlewares, builder.deprecated); +            return; +        } +        if (typeof cmd === 'string') { +            const parsedCommand = parseCommand(cmd); +            aliases = aliases.map(alias => parseCommand(alias).cmd); +            let isDefault = false; +            const parsedAliases = [parsedCommand.cmd].concat(aliases).filter(c => { +                if (DEFAULT_MARKER.test(c)) { +                    isDefault = true; +                    return false; +                } +                return true; +            }); +            if (parsedAliases.length === 0 && isDefault) +                parsedAliases.push('$0'); +            if (isDefault) { +                parsedCommand.cmd = parsedAliases[0]; +                aliases = parsedAliases.slice(1); +                cmd = cmd.replace(DEFAULT_MARKER, parsedCommand.cmd); +            } +            aliases.forEach(alias => { +                aliasMap[alias] = parsedCommand.cmd; +            }); +            if (description !== false) { +                usage.command(cmd, description, isDefault, aliases, deprecated); +            } +            handlers[parsedCommand.cmd] = { +                original: cmd, +                description, +                handler, +                builder: builder || {}, +                middlewares, +                deprecated, +                demanded: parsedCommand.demanded, +                optional: parsedCommand.optional, +            }; +            if (isDefault) +                defaultCommand = handlers[parsedCommand.cmd]; +        } +    }; +    self.addDirectory = function addDirectory(dir, context, req, callerFile, opts) { +        opts = opts || {}; +        if (typeof opts.recurse !== 'boolean') +            opts.recurse = false; +        if (!Array.isArray(opts.extensions)) +            opts.extensions = ['js']; +        const parentVisit = typeof opts.visit === 'function' ? opts.visit : (o) => o; +        opts.visit = function visit(obj, joined, filename) { +            const visited = parentVisit(obj, joined, filename); +            if (visited) { +                if (~context.files.indexOf(joined)) +                    return visited; +                context.files.push(joined); +                self.addHandler(visited); +            } +            return visited; +        }; +        shim.requireDirectory({ require: req, filename: callerFile }, dir, opts); +    }; +    function moduleName(obj) { +        const mod = whichModule(obj); +        if (!mod) +            throw new Error(`No command name given for module: ${shim.inspect(obj)}`); +        return commandFromFilename(mod.filename); +    } +    function commandFromFilename(filename) { +        return shim.path.basename(filename, shim.path.extname(filename)); +    } +    function extractDesc({ describe, description, desc, }) { +        for (const test of [describe, description, desc]) { +            if (typeof test === 'string' || test === false) +                return test; +            assertNotStrictEqual(test, true, shim); +        } +        return false; +    } +    self.getCommands = () => Object.keys(handlers).concat(Object.keys(aliasMap)); +    self.getCommandHandlers = () => handlers; +    self.hasDefaultCommand = () => !!defaultCommand; +    self.runCommand = function runCommand(command, yargs, parsed, commandIndex) { +        let aliases = parsed.aliases; +        const commandHandler = handlers[command] || handlers[aliasMap[command]] || defaultCommand; +        const currentContext = yargs.getContext(); +        let numFiles = currentContext.files.length; +        const parentCommands = currentContext.commands.slice(); +        let innerArgv = parsed.argv; +        let positionalMap = {}; +        if (command) { +            currentContext.commands.push(command); +            currentContext.fullCommands.push(commandHandler.original); +        } +        const builder = commandHandler.builder; +        if (isCommandBuilderCallback(builder)) { +            const builderOutput = builder(yargs.reset(parsed.aliases)); +            const innerYargs = isYargsInstance(builderOutput) ? builderOutput : yargs; +            if (shouldUpdateUsage(innerYargs)) { +                innerYargs +                    .getUsageInstance() +                    .usage(usageFromParentCommandsCommandHandler(parentCommands, commandHandler), commandHandler.description); +            } +            innerArgv = innerYargs._parseArgs(null, null, true, commandIndex); +            aliases = innerYargs.parsed.aliases; +        } +        else if (isCommandBuilderOptionDefinitions(builder)) { +            const innerYargs = yargs.reset(parsed.aliases); +            if (shouldUpdateUsage(innerYargs)) { +                innerYargs +                    .getUsageInstance() +                    .usage(usageFromParentCommandsCommandHandler(parentCommands, commandHandler), commandHandler.description); +            } +            Object.keys(commandHandler.builder).forEach(key => { +                innerYargs.option(key, builder[key]); +            }); +            innerArgv = innerYargs._parseArgs(null, null, true, commandIndex); +            aliases = innerYargs.parsed.aliases; +        } +        if (!yargs._hasOutput()) { +            positionalMap = populatePositionals(commandHandler, innerArgv, currentContext); +        } +        const middlewares = globalMiddleware +            .slice(0) +            .concat(commandHandler.middlewares); +        applyMiddleware(innerArgv, yargs, middlewares, true); +        if (!yargs._hasOutput()) { +            yargs._runValidation(innerArgv, aliases, positionalMap, yargs.parsed.error, !command); +        } +        if (commandHandler.handler && !yargs._hasOutput()) { +            yargs._setHasOutput(); +            const populateDoubleDash = !!yargs.getOptions().configuration['populate--']; +            yargs._postProcess(innerArgv, populateDoubleDash); +            innerArgv = applyMiddleware(innerArgv, yargs, middlewares, false); +            let handlerResult; +            if (isPromise(innerArgv)) { +                handlerResult = innerArgv.then(argv => commandHandler.handler(argv)); +            } +            else { +                handlerResult = commandHandler.handler(innerArgv); +            } +            const handlerFinishCommand = yargs.getHandlerFinishCommand(); +            if (isPromise(handlerResult)) { +                yargs.getUsageInstance().cacheHelpMessage(); +                handlerResult +                    .then(value => { +                    if (handlerFinishCommand) { +                        handlerFinishCommand(value); +                    } +                }) +                    .catch(error => { +                    try { +                        yargs.getUsageInstance().fail(null, error); +                    } +                    catch (err) { +                    } +                }) +                    .then(() => { +                    yargs.getUsageInstance().clearCachedHelpMessage(); +                }); +            } +            else { +                if (handlerFinishCommand) { +                    handlerFinishCommand(handlerResult); +                } +            } +        } +        if (command) { +            currentContext.commands.pop(); +            currentContext.fullCommands.pop(); +        } +        numFiles = currentContext.files.length - numFiles; +        if (numFiles > 0) +            currentContext.files.splice(numFiles * -1, numFiles); +        return innerArgv; +    }; +    function shouldUpdateUsage(yargs) { +        return (!yargs.getUsageInstance().getUsageDisabled() && +            yargs.getUsageInstance().getUsage().length === 0); +    } +    function usageFromParentCommandsCommandHandler(parentCommands, commandHandler) { +        const c = DEFAULT_MARKER.test(commandHandler.original) +            ? commandHandler.original.replace(DEFAULT_MARKER, '').trim() +            : commandHandler.original; +        const pc = parentCommands.filter(c => { +            return !DEFAULT_MARKER.test(c); +        }); +        pc.push(c); +        return `$0 ${pc.join(' ')}`; +    } +    self.runDefaultBuilderOn = function (yargs) { +        assertNotStrictEqual(defaultCommand, undefined, shim); +        if (shouldUpdateUsage(yargs)) { +            const commandString = DEFAULT_MARKER.test(defaultCommand.original) +                ? defaultCommand.original +                : defaultCommand.original.replace(/^[^[\]<>]*/, '$0 '); +            yargs.getUsageInstance().usage(commandString, defaultCommand.description); +        } +        const builder = defaultCommand.builder; +        if (isCommandBuilderCallback(builder)) { +            builder(yargs); +        } +        else if (!isCommandBuilderDefinition(builder)) { +            Object.keys(builder).forEach(key => { +                yargs.option(key, builder[key]); +            }); +        } +    }; +    function populatePositionals(commandHandler, argv, context) { +        argv._ = argv._.slice(context.commands.length); +        const demanded = commandHandler.demanded.slice(0); +        const optional = commandHandler.optional.slice(0); +        const positionalMap = {}; +        validation.positionalCount(demanded.length, argv._.length); +        while (demanded.length) { +            const demand = demanded.shift(); +            populatePositional(demand, argv, positionalMap); +        } +        while (optional.length) { +            const maybe = optional.shift(); +            populatePositional(maybe, argv, positionalMap); +        } +        argv._ = context.commands.concat(argv._.map(a => '' + a)); +        postProcessPositionals(argv, positionalMap, self.cmdToParseOptions(commandHandler.original)); +        return positionalMap; +    } +    function populatePositional(positional, argv, positionalMap) { +        const cmd = positional.cmd[0]; +        if (positional.variadic) { +            positionalMap[cmd] = argv._.splice(0).map(String); +        } +        else { +            if (argv._.length) +                positionalMap[cmd] = [String(argv._.shift())]; +        } +    } +    function postProcessPositionals(argv, positionalMap, parseOptions) { +        const options = Object.assign({}, yargs.getOptions()); +        options.default = Object.assign(parseOptions.default, options.default); +        for (const key of Object.keys(parseOptions.alias)) { +            options.alias[key] = (options.alias[key] || []).concat(parseOptions.alias[key]); +        } +        options.array = options.array.concat(parseOptions.array); +        options.config = {}; +        const unparsed = []; +        Object.keys(positionalMap).forEach(key => { +            positionalMap[key].map(value => { +                if (options.configuration['unknown-options-as-args']) +                    options.key[key] = true; +                unparsed.push(`--${key}`); +                unparsed.push(value); +            }); +        }); +        if (!unparsed.length) +            return; +        const config = Object.assign({}, options.configuration, { +            'populate--': true, +        }); +        const parsed = shim.Parser.detailed(unparsed, Object.assign({}, options, { +            configuration: config, +        })); +        if (parsed.error) { +            yargs.getUsageInstance().fail(parsed.error.message, parsed.error); +        } +        else { +            const positionalKeys = Object.keys(positionalMap); +            Object.keys(positionalMap).forEach(key => { +                positionalKeys.push(...parsed.aliases[key]); +            }); +            Object.keys(parsed.argv).forEach(key => { +                if (positionalKeys.indexOf(key) !== -1) { +                    if (!positionalMap[key]) +                        positionalMap[key] = parsed.argv[key]; +                    argv[key] = parsed.argv[key]; +                } +            }); +        } +    } +    self.cmdToParseOptions = function (cmdString) { +        const parseOptions = { +            array: [], +            default: {}, +            alias: {}, +            demand: {}, +        }; +        const parsed = parseCommand(cmdString); +        parsed.demanded.forEach(d => { +            const [cmd, ...aliases] = d.cmd; +            if (d.variadic) { +                parseOptions.array.push(cmd); +                parseOptions.default[cmd] = []; +            } +            parseOptions.alias[cmd] = aliases; +            parseOptions.demand[cmd] = true; +        }); +        parsed.optional.forEach(o => { +            const [cmd, ...aliases] = o.cmd; +            if (o.variadic) { +                parseOptions.array.push(cmd); +                parseOptions.default[cmd] = []; +            } +            parseOptions.alias[cmd] = aliases; +        }); +        return parseOptions; +    }; +    self.reset = () => { +        handlers = {}; +        aliasMap = {}; +        defaultCommand = undefined; +        return self; +    }; +    const frozens = []; +    self.freeze = () => { +        frozens.push({ +            handlers, +            aliasMap, +            defaultCommand, +        }); +    }; +    self.unfreeze = () => { +        const frozen = frozens.pop(); +        assertNotStrictEqual(frozen, undefined, shim); +        ({ handlers, aliasMap, defaultCommand } = frozen); +    }; +    return self; +} +function isCommandBuilderDefinition(builder) { +    return (typeof builder === 'object' && +        !!builder.builder && +        typeof builder.handler === 'function'); +} +function isCommandAndAliases(cmd) { +    if (cmd.every(c => typeof c === 'string')) { +        return true; +    } +    else { +        return false; +    } +} +function isCommandBuilderCallback(builder) { +    return typeof builder === 'function'; +} +function isCommandBuilderOptionDefinitions(builder) { +    return typeof builder === 'object'; +} +function isCommandHandlerDefinition(cmd) { +    return typeof cmd === 'object' && !Array.isArray(cmd); +} + +function setBlocking(blocking) { +    if (typeof process === 'undefined') +        return; +    [process.stdout, process.stderr].forEach(_stream => { +        const stream = _stream; +        if (stream._handle && +            stream.isTTY && +            typeof stream._handle.setBlocking === 'function') { +            stream._handle.setBlocking(blocking); +        } +    }); +} + +function usage(yargs, y18n, shim) { +    const __ = y18n.__; +    const self = {}; +    const fails = []; +    self.failFn = function failFn(f) { +        fails.push(f); +    }; +    let failMessage = null; +    let showHelpOnFail = true; +    self.showHelpOnFail = function showHelpOnFailFn(arg1 = true, arg2) { +        function parseFunctionArgs() { +            return typeof arg1 === 'string' ? [true, arg1] : [arg1, arg2]; +        } +        const [enabled, message] = parseFunctionArgs(); +        failMessage = message; +        showHelpOnFail = enabled; +        return self; +    }; +    let failureOutput = false; +    self.fail = function fail(msg, err) { +        const logger = yargs._getLoggerInstance(); +        if (fails.length) { +            for (let i = fails.length - 1; i >= 0; --i) { +                fails[i](msg, err, self); +            } +        } +        else { +            if (yargs.getExitProcess()) +                setBlocking(true); +            if (!failureOutput) { +                failureOutput = true; +                if (showHelpOnFail) { +                    yargs.showHelp('error'); +                    logger.error(); +                } +                if (msg || err) +                    logger.error(msg || err); +                if (failMessage) { +                    if (msg || err) +                        logger.error(''); +                    logger.error(failMessage); +                } +            } +            err = err || new YError(msg); +            if (yargs.getExitProcess()) { +                return yargs.exit(1); +            } +            else if (yargs._hasParseCallback()) { +                return yargs.exit(1, err); +            } +            else { +                throw err; +            } +        } +    }; +    let usages = []; +    let usageDisabled = false; +    self.usage = (msg, description) => { +        if (msg === null) { +            usageDisabled = true; +            usages = []; +            return self; +        } +        usageDisabled = false; +        usages.push([msg, description || '']); +        return self; +    }; +    self.getUsage = () => { +        return usages; +    }; +    self.getUsageDisabled = () => { +        return usageDisabled; +    }; +    self.getPositionalGroupName = () => { +        return __('Positionals:'); +    }; +    let examples = []; +    self.example = (cmd, description) => { +        examples.push([cmd, description || '']); +    }; +    let commands = []; +    self.command = function command(cmd, description, isDefault, aliases, deprecated = false) { +        if (isDefault) { +            commands = commands.map(cmdArray => { +                cmdArray[2] = false; +                return cmdArray; +            }); +        } +        commands.push([cmd, description || '', isDefault, aliases, deprecated]); +    }; +    self.getCommands = () => commands; +    let descriptions = {}; +    self.describe = function describe(keyOrKeys, desc) { +        if (Array.isArray(keyOrKeys)) { +            keyOrKeys.forEach(k => { +                self.describe(k, desc); +            }); +        } +        else if (typeof keyOrKeys === 'object') { +            Object.keys(keyOrKeys).forEach(k => { +                self.describe(k, keyOrKeys[k]); +            }); +        } +        else { +            descriptions[keyOrKeys] = desc; +        } +    }; +    self.getDescriptions = () => descriptions; +    let epilogs = []; +    self.epilog = msg => { +        epilogs.push(msg); +    }; +    let wrapSet = false; +    let wrap; +    self.wrap = cols => { +        wrapSet = true; +        wrap = cols; +    }; +    function getWrap() { +        if (!wrapSet) { +            wrap = windowWidth(); +            wrapSet = true; +        } +        return wrap; +    } +    const deferY18nLookupPrefix = '__yargsString__:'; +    self.deferY18nLookup = str => deferY18nLookupPrefix + str; +    self.help = function help() { +        if (cachedHelpMessage) +            return cachedHelpMessage; +        normalizeAliases(); +        const base$0 = yargs.customScriptName +            ? yargs.$0 +            : shim.path.basename(yargs.$0); +        const demandedOptions = yargs.getDemandedOptions(); +        const demandedCommands = yargs.getDemandedCommands(); +        const deprecatedOptions = yargs.getDeprecatedOptions(); +        const groups = yargs.getGroups(); +        const options = yargs.getOptions(); +        let keys = []; +        keys = keys.concat(Object.keys(descriptions)); +        keys = keys.concat(Object.keys(demandedOptions)); +        keys = keys.concat(Object.keys(demandedCommands)); +        keys = keys.concat(Object.keys(options.default)); +        keys = keys.filter(filterHiddenOptions); +        keys = Object.keys(keys.reduce((acc, key) => { +            if (key !== '_') +                acc[key] = true; +            return acc; +        }, {})); +        const theWrap = getWrap(); +        const ui = shim.cliui({ +            width: theWrap, +            wrap: !!theWrap, +        }); +        if (!usageDisabled) { +            if (usages.length) { +                usages.forEach(usage => { +                    ui.div(`${usage[0].replace(/\$0/g, base$0)}`); +                    if (usage[1]) { +                        ui.div({ text: `${usage[1]}`, padding: [1, 0, 0, 0] }); +                    } +                }); +                ui.div(); +            } +            else if (commands.length) { +                let u = null; +                if (demandedCommands._) { +                    u = `${base$0} <${__('command')}>\n`; +                } +                else { +                    u = `${base$0} [${__('command')}]\n`; +                } +                ui.div(`${u}`); +            } +        } +        if (commands.length) { +            ui.div(__('Commands:')); +            const context = yargs.getContext(); +            const parentCommands = context.commands.length +                ? `${context.commands.join(' ')} ` +                : ''; +            if (yargs.getParserConfiguration()['sort-commands'] === true) { +                commands = commands.sort((a, b) => a[0].localeCompare(b[0])); +            } +            commands.forEach(command => { +                const commandString = `${base$0} ${parentCommands}${command[0].replace(/^\$0 ?/, '')}`; +                ui.span({ +                    text: commandString, +                    padding: [0, 2, 0, 2], +                    width: maxWidth(commands, theWrap, `${base$0}${parentCommands}`) + 4, +                }, { text: command[1] }); +                const hints = []; +                if (command[2]) +                    hints.push(`[${__('default')}]`); +                if (command[3] && command[3].length) { +                    hints.push(`[${__('aliases:')} ${command[3].join(', ')}]`); +                } +                if (command[4]) { +                    if (typeof command[4] === 'string') { +                        hints.push(`[${__('deprecated: %s', command[4])}]`); +                    } +                    else { +                        hints.push(`[${__('deprecated')}]`); +                    } +                } +                if (hints.length) { +                    ui.div({ +                        text: hints.join(' '), +                        padding: [0, 0, 0, 2], +                        align: 'right', +                    }); +                } +                else { +                    ui.div(); +                } +            }); +            ui.div(); +        } +        const aliasKeys = (Object.keys(options.alias) || []).concat(Object.keys(yargs.parsed.newAliases) || []); +        keys = keys.filter(key => !yargs.parsed.newAliases[key] && +            aliasKeys.every(alias => (options.alias[alias] || []).indexOf(key) === -1)); +        const defaultGroup = __('Options:'); +        if (!groups[defaultGroup]) +            groups[defaultGroup] = []; +        addUngroupedKeys(keys, options.alias, groups, defaultGroup); +        const isLongSwitch = (sw) => /^--/.test(getText(sw)); +        const displayedGroups = Object.keys(groups) +            .filter(groupName => groups[groupName].length > 0) +            .map(groupName => { +            const normalizedKeys = groups[groupName] +                .filter(filterHiddenOptions) +                .map(key => { +                if (~aliasKeys.indexOf(key)) +                    return key; +                for (let i = 0, aliasKey; (aliasKey = aliasKeys[i]) !== undefined; i++) { +                    if (~(options.alias[aliasKey] || []).indexOf(key)) +                        return aliasKey; +                } +                return key; +            }); +            return { groupName, normalizedKeys }; +        }) +            .filter(({ normalizedKeys }) => normalizedKeys.length > 0) +            .map(({ groupName, normalizedKeys }) => { +            const switches = normalizedKeys.reduce((acc, key) => { +                acc[key] = [key] +                    .concat(options.alias[key] || []) +                    .map(sw => { +                    if (groupName === self.getPositionalGroupName()) +                        return sw; +                    else { +                        return ((/^[0-9]$/.test(sw) +                            ? ~options.boolean.indexOf(key) +                                ? '-' +                                : '--' +                            : sw.length > 1 +                                ? '--' +                                : '-') + sw); +                    } +                }) +                    .sort((sw1, sw2) => isLongSwitch(sw1) === isLongSwitch(sw2) +                    ? 0 +                    : isLongSwitch(sw1) +                        ? 1 +                        : -1) +                    .join(', '); +                return acc; +            }, {}); +            return { groupName, normalizedKeys, switches }; +        }); +        const shortSwitchesUsed = displayedGroups +            .filter(({ groupName }) => groupName !== self.getPositionalGroupName()) +            .some(({ normalizedKeys, switches }) => !normalizedKeys.every(key => isLongSwitch(switches[key]))); +        if (shortSwitchesUsed) { +            displayedGroups +                .filter(({ groupName }) => groupName !== self.getPositionalGroupName()) +                .forEach(({ normalizedKeys, switches }) => { +                normalizedKeys.forEach(key => { +                    if (isLongSwitch(switches[key])) { +                        switches[key] = addIndentation(switches[key], '-x, '.length); +                    } +                }); +            }); +        } +        displayedGroups.forEach(({ groupName, normalizedKeys, switches }) => { +            ui.div(groupName); +            normalizedKeys.forEach(key => { +                const kswitch = switches[key]; +                let desc = descriptions[key] || ''; +                let type = null; +                if (~desc.lastIndexOf(deferY18nLookupPrefix)) +                    desc = __(desc.substring(deferY18nLookupPrefix.length)); +                if (~options.boolean.indexOf(key)) +                    type = `[${__('boolean')}]`; +                if (~options.count.indexOf(key)) +                    type = `[${__('count')}]`; +                if (~options.string.indexOf(key)) +                    type = `[${__('string')}]`; +                if (~options.normalize.indexOf(key)) +                    type = `[${__('string')}]`; +                if (~options.array.indexOf(key)) +                    type = `[${__('array')}]`; +                if (~options.number.indexOf(key)) +                    type = `[${__('number')}]`; +                const deprecatedExtra = (deprecated) => typeof deprecated === 'string' +                    ? `[${__('deprecated: %s', deprecated)}]` +                    : `[${__('deprecated')}]`; +                const extra = [ +                    key in deprecatedOptions +                        ? deprecatedExtra(deprecatedOptions[key]) +                        : null, +                    type, +                    key in demandedOptions ? `[${__('required')}]` : null, +                    options.choices && options.choices[key] +                        ? `[${__('choices:')} ${self.stringifiedValues(options.choices[key])}]` +                        : null, +                    defaultString(options.default[key], options.defaultDescription[key]), +                ] +                    .filter(Boolean) +                    .join(' '); +                ui.span({ +                    text: getText(kswitch), +                    padding: [0, 2, 0, 2 + getIndentation(kswitch)], +                    width: maxWidth(switches, theWrap) + 4, +                }, desc); +                if (extra) +                    ui.div({ text: extra, padding: [0, 0, 0, 2], align: 'right' }); +                else +                    ui.div(); +            }); +            ui.div(); +        }); +        if (examples.length) { +            ui.div(__('Examples:')); +            examples.forEach(example => { +                example[0] = example[0].replace(/\$0/g, base$0); +            }); +            examples.forEach(example => { +                if (example[1] === '') { +                    ui.div({ +                        text: example[0], +                        padding: [0, 2, 0, 2], +                    }); +                } +                else { +                    ui.div({ +                        text: example[0], +                        padding: [0, 2, 0, 2], +                        width: maxWidth(examples, theWrap) + 4, +                    }, { +                        text: example[1], +                    }); +                } +            }); +            ui.div(); +        } +        if (epilogs.length > 0) { +            const e = epilogs +                .map(epilog => epilog.replace(/\$0/g, base$0)) +                .join('\n'); +            ui.div(`${e}\n`); +        } +        return ui.toString().replace(/\s*$/, ''); +    }; +    function maxWidth(table, theWrap, modifier) { +        let width = 0; +        if (!Array.isArray(table)) { +            table = Object.values(table).map(v => [v]); +        } +        table.forEach(v => { +            width = Math.max(shim.stringWidth(modifier ? `${modifier} ${getText(v[0])}` : getText(v[0])) + getIndentation(v[0]), width); +        }); +        if (theWrap) +            width = Math.min(width, parseInt((theWrap * 0.5).toString(), 10)); +        return width; +    } +    function normalizeAliases() { +        const demandedOptions = yargs.getDemandedOptions(); +        const options = yargs.getOptions(); +        (Object.keys(options.alias) || []).forEach(key => { +            options.alias[key].forEach(alias => { +                if (descriptions[alias]) +                    self.describe(key, descriptions[alias]); +                if (alias in demandedOptions) +                    yargs.demandOption(key, demandedOptions[alias]); +                if (~options.boolean.indexOf(alias)) +                    yargs.boolean(key); +                if (~options.count.indexOf(alias)) +                    yargs.count(key); +                if (~options.string.indexOf(alias)) +                    yargs.string(key); +                if (~options.normalize.indexOf(alias)) +                    yargs.normalize(key); +                if (~options.array.indexOf(alias)) +                    yargs.array(key); +                if (~options.number.indexOf(alias)) +                    yargs.number(key); +            }); +        }); +    } +    let cachedHelpMessage; +    self.cacheHelpMessage = function () { +        cachedHelpMessage = this.help(); +    }; +    self.clearCachedHelpMessage = function () { +        cachedHelpMessage = undefined; +    }; +    function addUngroupedKeys(keys, aliases, groups, defaultGroup) { +        let groupedKeys = []; +        let toCheck = null; +        Object.keys(groups).forEach(group => { +            groupedKeys = groupedKeys.concat(groups[group]); +        }); +        keys.forEach(key => { +            toCheck = [key].concat(aliases[key]); +            if (!toCheck.some(k => groupedKeys.indexOf(k) !== -1)) { +                groups[defaultGroup].push(key); +            } +        }); +        return groupedKeys; +    } +    function filterHiddenOptions(key) { +        return (yargs.getOptions().hiddenOptions.indexOf(key) < 0 || +            yargs.parsed.argv[yargs.getOptions().showHiddenOpt]); +    } +    self.showHelp = (level) => { +        const logger = yargs._getLoggerInstance(); +        if (!level) +            level = 'error'; +        const emit = typeof level === 'function' ? level : logger[level]; +        emit(self.help()); +    }; +    self.functionDescription = fn => { +        const description = fn.name +            ? shim.Parser.decamelize(fn.name, '-') +            : __('generated-value'); +        return ['(', description, ')'].join(''); +    }; +    self.stringifiedValues = function stringifiedValues(values, separator) { +        let string = ''; +        const sep = separator || ', '; +        const array = [].concat(values); +        if (!values || !array.length) +            return string; +        array.forEach(value => { +            if (string.length) +                string += sep; +            string += JSON.stringify(value); +        }); +        return string; +    }; +    function defaultString(value, defaultDescription) { +        let string = `[${__('default:')} `; +        if (value === undefined && !defaultDescription) +            return null; +        if (defaultDescription) { +            string += defaultDescription; +        } +        else { +            switch (typeof value) { +                case 'string': +                    string += `"${value}"`; +                    break; +                case 'object': +                    string += JSON.stringify(value); +                    break; +                default: +                    string += value; +            } +        } +        return `${string}]`; +    } +    function windowWidth() { +        const maxWidth = 80; +        if (shim.process.stdColumns) { +            return Math.min(maxWidth, shim.process.stdColumns); +        } +        else { +            return maxWidth; +        } +    } +    let version = null; +    self.version = ver => { +        version = ver; +    }; +    self.showVersion = () => { +        const logger = yargs._getLoggerInstance(); +        logger.log(version); +    }; +    self.reset = function reset(localLookup) { +        failMessage = null; +        failureOutput = false; +        usages = []; +        usageDisabled = false; +        epilogs = []; +        examples = []; +        commands = []; +        descriptions = objFilter(descriptions, k => !localLookup[k]); +        return self; +    }; +    const frozens = []; +    self.freeze = function freeze() { +        frozens.push({ +            failMessage, +            failureOutput, +            usages, +            usageDisabled, +            epilogs, +            examples, +            commands, +            descriptions, +        }); +    }; +    self.unfreeze = function unfreeze() { +        const frozen = frozens.pop(); +        assertNotStrictEqual(frozen, undefined, shim); +        ({ +            failMessage, +            failureOutput, +            usages, +            usageDisabled, +            epilogs, +            examples, +            commands, +            descriptions, +        } = frozen); +    }; +    return self; +} +function isIndentedText(text) { +    return typeof text === 'object'; +} +function addIndentation(text, indent) { +    return isIndentedText(text) +        ? { text: text.text, indentation: text.indentation + indent } +        : { text, indentation: indent }; +} +function getIndentation(text) { +    return isIndentedText(text) ? text.indentation : 0; +} +function getText(text) { +    return isIndentedText(text) ? text.text : text; +} + +const completionShTemplate = `###-begin-{{app_name}}-completions-### +# +# yargs command completion script +# +# Installation: {{app_path}} {{completion_command}} >> ~/.bashrc +#    or {{app_path}} {{completion_command}} >> ~/.bash_profile on OSX. +# +_yargs_completions() +{ +    local cur_word args type_list + +    cur_word="\${COMP_WORDS[COMP_CWORD]}" +    args=("\${COMP_WORDS[@]}") + +    # ask yargs to generate completions. +    type_list=$({{app_path}} --get-yargs-completions "\${args[@]}") + +    COMPREPLY=( $(compgen -W "\${type_list}" -- \${cur_word}) ) + +    # if no match was found, fall back to filename completion +    if [ \${#COMPREPLY[@]} -eq 0 ]; then +      COMPREPLY=() +    fi + +    return 0 +} +complete -o default -F _yargs_completions {{app_name}} +###-end-{{app_name}}-completions-### +`; +const completionZshTemplate = `###-begin-{{app_name}}-completions-### +# +# yargs command completion script +# +# Installation: {{app_path}} {{completion_command}} >> ~/.zshrc +#    or {{app_path}} {{completion_command}} >> ~/.zsh_profile on OSX. +# +_{{app_name}}_yargs_completions() +{ +  local reply +  local si=$IFS +  IFS=$'\n' reply=($(COMP_CWORD="$((CURRENT-1))" COMP_LINE="$BUFFER" COMP_POINT="$CURSOR" {{app_path}} --get-yargs-completions "\${words[@]}")) +  IFS=$si +  _describe 'values' reply +} +compdef _{{app_name}}_yargs_completions {{app_name}} +###-end-{{app_name}}-completions-### +`; + +function completion(yargs, usage, command, shim) { +    const self = { +        completionKey: 'get-yargs-completions', +    }; +    let aliases; +    self.setParsed = function setParsed(parsed) { +        aliases = parsed.aliases; +    }; +    const zshShell = (shim.getEnv('SHELL') && shim.getEnv('SHELL').indexOf('zsh') !== -1) || +        (shim.getEnv('ZSH_NAME') && shim.getEnv('ZSH_NAME').indexOf('zsh') !== -1); +    self.getCompletion = function getCompletion(args, done) { +        const completions = []; +        const current = args.length ? args[args.length - 1] : ''; +        const argv = yargs.parse(args, true); +        const parentCommands = yargs.getContext().commands; +        function runCompletionFunction(argv) { +            assertNotStrictEqual(completionFunction, null, shim); +            if (isSyncCompletionFunction(completionFunction)) { +                const result = completionFunction(current, argv); +                if (isPromise(result)) { +                    return result +                        .then(list => { +                        shim.process.nextTick(() => { +                            done(list); +                        }); +                    }) +                        .catch(err => { +                        shim.process.nextTick(() => { +                            throw err; +                        }); +                    }); +                } +                return done(result); +            } +            else { +                return completionFunction(current, argv, completions => { +                    done(completions); +                }); +            } +        } +        if (completionFunction) { +            return isPromise(argv) +                ? argv.then(runCompletionFunction) +                : runCompletionFunction(argv); +        } +        const handlers = command.getCommandHandlers(); +        for (let i = 0, ii = args.length; i < ii; ++i) { +            if (handlers[args[i]] && handlers[args[i]].builder) { +                const builder = handlers[args[i]].builder; +                if (isCommandBuilderCallback(builder)) { +                    const y = yargs.reset(); +                    builder(y); +                    return y.argv; +                } +            } +        } +        if (!current.match(/^-/) && +            parentCommands[parentCommands.length - 1] !== current) { +            usage.getCommands().forEach(usageCommand => { +                const commandName = parseCommand(usageCommand[0]).cmd; +                if (args.indexOf(commandName) === -1) { +                    if (!zshShell) { +                        completions.push(commandName); +                    } +                    else { +                        const desc = usageCommand[1] || ''; +                        completions.push(commandName.replace(/:/g, '\\:') + ':' + desc); +                    } +                } +            }); +        } +        if (current.match(/^-/) || (current === '' && completions.length === 0)) { +            const descs = usage.getDescriptions(); +            const options = yargs.getOptions(); +            Object.keys(options.key).forEach(key => { +                const negable = !!options.configuration['boolean-negation'] && +                    options.boolean.includes(key); +                let keyAndAliases = [key].concat(aliases[key] || []); +                if (negable) +                    keyAndAliases = keyAndAliases.concat(keyAndAliases.map(key => `no-${key}`)); +                function completeOptionKey(key) { +                    const notInArgs = keyAndAliases.every(val => args.indexOf(`--${val}`) === -1); +                    if (notInArgs) { +                        const startsByTwoDashes = (s) => /^--/.test(s); +                        const isShortOption = (s) => /^[^0-9]$/.test(s); +                        const dashes = !startsByTwoDashes(current) && isShortOption(key) ? '-' : '--'; +                        if (!zshShell) { +                            completions.push(dashes + key); +                        } +                        else { +                            const desc = descs[key] || ''; +                            completions.push(dashes + +                                `${key.replace(/:/g, '\\:')}:${desc.replace('__yargsString__:', '')}`); +                        } +                    } +                } +                completeOptionKey(key); +                if (negable && !!options.default[key]) +                    completeOptionKey(`no-${key}`); +            }); +        } +        done(completions); +    }; +    self.generateCompletionScript = function generateCompletionScript($0, cmd) { +        let script = zshShell +            ? completionZshTemplate +            : completionShTemplate; +        const name = shim.path.basename($0); +        if ($0.match(/\.js$/)) +            $0 = `./${$0}`; +        script = script.replace(/{{app_name}}/g, name); +        script = script.replace(/{{completion_command}}/g, cmd); +        return script.replace(/{{app_path}}/g, $0); +    }; +    let completionFunction = null; +    self.registerFunction = fn => { +        completionFunction = fn; +    }; +    return self; +} +function isSyncCompletionFunction(completionFunction) { +    return completionFunction.length < 3; +} + +function levenshtein(a, b) { +    if (a.length === 0) +        return b.length; +    if (b.length === 0) +        return a.length; +    const matrix = []; +    let i; +    for (i = 0; i <= b.length; i++) { +        matrix[i] = [i]; +    } +    let j; +    for (j = 0; j <= a.length; j++) { +        matrix[0][j] = j; +    } +    for (i = 1; i <= b.length; i++) { +        for (j = 1; j <= a.length; j++) { +            if (b.charAt(i - 1) === a.charAt(j - 1)) { +                matrix[i][j] = matrix[i - 1][j - 1]; +            } +            else { +                matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, Math.min(matrix[i][j - 1] + 1, matrix[i - 1][j] + 1)); +            } +        } +    } +    return matrix[b.length][a.length]; +} + +const specialKeys = ['$0', '--', '_']; +function validation(yargs, usage, y18n, shim) { +    const __ = y18n.__; +    const __n = y18n.__n; +    const self = {}; +    self.nonOptionCount = function nonOptionCount(argv) { +        const demandedCommands = yargs.getDemandedCommands(); +        const positionalCount = argv._.length + (argv['--'] ? argv['--'].length : 0); +        const _s = positionalCount - yargs.getContext().commands.length; +        if (demandedCommands._ && +            (_s < demandedCommands._.min || _s > demandedCommands._.max)) { +            if (_s < demandedCommands._.min) { +                if (demandedCommands._.minMsg !== undefined) { +                    usage.fail(demandedCommands._.minMsg +                        ? demandedCommands._.minMsg +                            .replace(/\$0/g, _s.toString()) +                            .replace(/\$1/, demandedCommands._.min.toString()) +                        : null); +                } +                else { +                    usage.fail(__n('Not enough non-option arguments: got %s, need at least %s', 'Not enough non-option arguments: got %s, need at least %s', _s, _s.toString(), demandedCommands._.min.toString())); +                } +            } +            else if (_s > demandedCommands._.max) { +                if (demandedCommands._.maxMsg !== undefined) { +                    usage.fail(demandedCommands._.maxMsg +                        ? demandedCommands._.maxMsg +                            .replace(/\$0/g, _s.toString()) +                            .replace(/\$1/, demandedCommands._.max.toString()) +                        : null); +                } +                else { +                    usage.fail(__n('Too many non-option arguments: got %s, maximum of %s', 'Too many non-option arguments: got %s, maximum of %s', _s, _s.toString(), demandedCommands._.max.toString())); +                } +            } +        } +    }; +    self.positionalCount = function positionalCount(required, observed) { +        if (observed < required) { +            usage.fail(__n('Not enough non-option arguments: got %s, need at least %s', 'Not enough non-option arguments: got %s, need at least %s', observed, observed + '', required + '')); +        } +    }; +    self.requiredArguments = function requiredArguments(argv) { +        const demandedOptions = yargs.getDemandedOptions(); +        let missing = null; +        for (const key of Object.keys(demandedOptions)) { +            if (!Object.prototype.hasOwnProperty.call(argv, key) || +                typeof argv[key] === 'undefined') { +                missing = missing || {}; +                missing[key] = demandedOptions[key]; +            } +        } +        if (missing) { +            const customMsgs = []; +            for (const key of Object.keys(missing)) { +                const msg = missing[key]; +                if (msg && customMsgs.indexOf(msg) < 0) { +                    customMsgs.push(msg); +                } +            } +            const customMsg = customMsgs.length ? `\n${customMsgs.join('\n')}` : ''; +            usage.fail(__n('Missing required argument: %s', 'Missing required arguments: %s', Object.keys(missing).length, Object.keys(missing).join(', ') + customMsg)); +        } +    }; +    self.unknownArguments = function unknownArguments(argv, aliases, positionalMap, isDefaultCommand, checkPositionals = true) { +        const commandKeys = yargs.getCommandInstance().getCommands(); +        const unknown = []; +        const currentContext = yargs.getContext(); +        Object.keys(argv).forEach(key => { +            if (specialKeys.indexOf(key) === -1 && +                !Object.prototype.hasOwnProperty.call(positionalMap, key) && +                !Object.prototype.hasOwnProperty.call(yargs._getParseContext(), key) && +                !self.isValidAndSomeAliasIsNotNew(key, aliases)) { +                unknown.push(key); +            } +        }); +        if (checkPositionals && +            (currentContext.commands.length > 0 || +                commandKeys.length > 0 || +                isDefaultCommand)) { +            argv._.slice(currentContext.commands.length).forEach(key => { +                if (commandKeys.indexOf('' + key) === -1) { +                    unknown.push('' + key); +                } +            }); +        } +        if (unknown.length > 0) { +            usage.fail(__n('Unknown argument: %s', 'Unknown arguments: %s', unknown.length, unknown.join(', '))); +        } +    }; +    self.unknownCommands = function unknownCommands(argv) { +        const commandKeys = yargs.getCommandInstance().getCommands(); +        const unknown = []; +        const currentContext = yargs.getContext(); +        if (currentContext.commands.length > 0 || commandKeys.length > 0) { +            argv._.slice(currentContext.commands.length).forEach(key => { +                if (commandKeys.indexOf('' + key) === -1) { +                    unknown.push('' + key); +                } +            }); +        } +        if (unknown.length > 0) { +            usage.fail(__n('Unknown command: %s', 'Unknown commands: %s', unknown.length, unknown.join(', '))); +            return true; +        } +        else { +            return false; +        } +    }; +    self.isValidAndSomeAliasIsNotNew = function isValidAndSomeAliasIsNotNew(key, aliases) { +        if (!Object.prototype.hasOwnProperty.call(aliases, key)) { +            return false; +        } +        const newAliases = yargs.parsed.newAliases; +        for (const a of [key, ...aliases[key]]) { +            if (!Object.prototype.hasOwnProperty.call(newAliases, a) || +                !newAliases[key]) { +                return true; +            } +        } +        return false; +    }; +    self.limitedChoices = function limitedChoices(argv) { +        const options = yargs.getOptions(); +        const invalid = {}; +        if (!Object.keys(options.choices).length) +            return; +        Object.keys(argv).forEach(key => { +            if (specialKeys.indexOf(key) === -1 && +                Object.prototype.hasOwnProperty.call(options.choices, key)) { +                [].concat(argv[key]).forEach(value => { +                    if (options.choices[key].indexOf(value) === -1 && +                        value !== undefined) { +                        invalid[key] = (invalid[key] || []).concat(value); +                    } +                }); +            } +        }); +        const invalidKeys = Object.keys(invalid); +        if (!invalidKeys.length) +            return; +        let msg = __('Invalid values:'); +        invalidKeys.forEach(key => { +            msg += `\n  ${__('Argument: %s, Given: %s, Choices: %s', key, usage.stringifiedValues(invalid[key]), usage.stringifiedValues(options.choices[key]))}`; +        }); +        usage.fail(msg); +    }; +    let checks = []; +    self.check = function check(f, global) { +        checks.push({ +            func: f, +            global, +        }); +    }; +    self.customChecks = function customChecks(argv, aliases) { +        for (let i = 0, f; (f = checks[i]) !== undefined; i++) { +            const func = f.func; +            let result = null; +            try { +                result = func(argv, aliases); +            } +            catch (err) { +                usage.fail(err.message ? err.message : err, err); +                continue; +            } +            if (!result) { +                usage.fail(__('Argument check failed: %s', func.toString())); +            } +            else if (typeof result === 'string' || result instanceof Error) { +                usage.fail(result.toString(), result); +            } +        } +    }; +    let implied = {}; +    self.implies = function implies(key, value) { +        argsert('<string|object> [array|number|string]', [key, value], arguments.length); +        if (typeof key === 'object') { +            Object.keys(key).forEach(k => { +                self.implies(k, key[k]); +            }); +        } +        else { +            yargs.global(key); +            if (!implied[key]) { +                implied[key] = []; +            } +            if (Array.isArray(value)) { +                value.forEach(i => self.implies(key, i)); +            } +            else { +                assertNotStrictEqual(value, undefined, shim); +                implied[key].push(value); +            } +        } +    }; +    self.getImplied = function getImplied() { +        return implied; +    }; +    function keyExists(argv, val) { +        const num = Number(val); +        val = isNaN(num) ? val : num; +        if (typeof val === 'number') { +            val = argv._.length >= val; +        } +        else if (val.match(/^--no-.+/)) { +            val = val.match(/^--no-(.+)/)[1]; +            val = !argv[val]; +        } +        else { +            val = argv[val]; +        } +        return val; +    } +    self.implications = function implications(argv) { +        const implyFail = []; +        Object.keys(implied).forEach(key => { +            const origKey = key; +            (implied[key] || []).forEach(value => { +                let key = origKey; +                const origValue = value; +                key = keyExists(argv, key); +                value = keyExists(argv, value); +                if (key && !value) { +                    implyFail.push(` ${origKey} -> ${origValue}`); +                } +            }); +        }); +        if (implyFail.length) { +            let msg = `${__('Implications failed:')}\n`; +            implyFail.forEach(value => { +                msg += value; +            }); +            usage.fail(msg); +        } +    }; +    let conflicting = {}; +    self.conflicts = function conflicts(key, value) { +        argsert('<string|object> [array|string]', [key, value], arguments.length); +        if (typeof key === 'object') { +            Object.keys(key).forEach(k => { +                self.conflicts(k, key[k]); +            }); +        } +        else { +            yargs.global(key); +            if (!conflicting[key]) { +                conflicting[key] = []; +            } +            if (Array.isArray(value)) { +                value.forEach(i => self.conflicts(key, i)); +            } +            else { +                conflicting[key].push(value); +            } +        } +    }; +    self.getConflicting = () => conflicting; +    self.conflicting = function conflictingFn(argv) { +        Object.keys(argv).forEach(key => { +            if (conflicting[key]) { +                conflicting[key].forEach(value => { +                    if (value && argv[key] !== undefined && argv[value] !== undefined) { +                        usage.fail(__('Arguments %s and %s are mutually exclusive', key, value)); +                    } +                }); +            } +        }); +    }; +    self.recommendCommands = function recommendCommands(cmd, potentialCommands) { +        const threshold = 3; +        potentialCommands = potentialCommands.sort((a, b) => b.length - a.length); +        let recommended = null; +        let bestDistance = Infinity; +        for (let i = 0, candidate; (candidate = potentialCommands[i]) !== undefined; i++) { +            const d = levenshtein(cmd, candidate); +            if (d <= threshold && d < bestDistance) { +                bestDistance = d; +                recommended = candidate; +            } +        } +        if (recommended) +            usage.fail(__('Did you mean %s?', recommended)); +    }; +    self.reset = function reset(localLookup) { +        implied = objFilter(implied, k => !localLookup[k]); +        conflicting = objFilter(conflicting, k => !localLookup[k]); +        checks = checks.filter(c => c.global); +        return self; +    }; +    const frozens = []; +    self.freeze = function freeze() { +        frozens.push({ +            implied, +            checks, +            conflicting, +        }); +    }; +    self.unfreeze = function unfreeze() { +        const frozen = frozens.pop(); +        assertNotStrictEqual(frozen, undefined, shim); +        ({ implied, checks, conflicting } = frozen); +    }; +    return self; +} + +let shim$1; +function YargsWithShim(_shim) { +    shim$1 = _shim; +    return Yargs; +} +function Yargs(processArgs = [], cwd = shim$1.process.cwd(), parentRequire) { +    const self = {}; +    let command$1; +    let completion$1 = null; +    let groups = {}; +    const globalMiddleware = []; +    let output = ''; +    const preservedGroups = {}; +    let usage$1; +    let validation$1; +    let handlerFinishCommand = null; +    const y18n = shim$1.y18n; +    self.middleware = globalMiddlewareFactory(globalMiddleware, self); +    self.scriptName = function (scriptName) { +        self.customScriptName = true; +        self.$0 = scriptName; +        return self; +    }; +    let default$0; +    if (/\b(node|iojs|electron)(\.exe)?$/.test(shim$1.process.argv()[0])) { +        default$0 = shim$1.process.argv().slice(1, 2); +    } +    else { +        default$0 = shim$1.process.argv().slice(0, 1); +    } +    self.$0 = default$0 +        .map(x => { +        const b = rebase(cwd, x); +        return x.match(/^(\/|([a-zA-Z]:)?\\)/) && b.length < x.length ? b : x; +    }) +        .join(' ') +        .trim(); +    if (shim$1.getEnv('_') && shim$1.getProcessArgvBin() === shim$1.getEnv('_')) { +        self.$0 = shim$1 +            .getEnv('_') +            .replace(`${shim$1.path.dirname(shim$1.process.execPath())}/`, ''); +    } +    const context = { resets: -1, commands: [], fullCommands: [], files: [] }; +    self.getContext = () => context; +    let hasOutput = false; +    let exitError = null; +    self.exit = (code, err) => { +        hasOutput = true; +        exitError = err; +        if (exitProcess) +            shim$1.process.exit(code); +    }; +    let completionCommand = null; +    self.completion = function (cmd, desc, fn) { +        argsert('[string] [string|boolean|function] [function]', [cmd, desc, fn], arguments.length); +        if (typeof desc === 'function') { +            fn = desc; +            desc = undefined; +        } +        completionCommand = cmd || completionCommand || 'completion'; +        if (!desc && desc !== false) { +            desc = 'generate completion script'; +        } +        self.command(completionCommand, desc); +        if (fn) +            completion$1.registerFunction(fn); +        return self; +    }; +    let options; +    self.resetOptions = self.reset = function resetOptions(aliases = {}) { +        context.resets++; +        options = options || {}; +        const tmpOptions = {}; +        tmpOptions.local = options.local ? options.local : []; +        tmpOptions.configObjects = options.configObjects +            ? options.configObjects +            : []; +        const localLookup = {}; +        tmpOptions.local.forEach(l => { +            localLookup[l] = true; +            (aliases[l] || []).forEach(a => { +                localLookup[a] = true; +            }); +        }); +        Object.assign(preservedGroups, Object.keys(groups).reduce((acc, groupName) => { +            const keys = groups[groupName].filter(key => !(key in localLookup)); +            if (keys.length > 0) { +                acc[groupName] = keys; +            } +            return acc; +        }, {})); +        groups = {}; +        const arrayOptions = [ +            'array', +            'boolean', +            'string', +            'skipValidation', +            'count', +            'normalize', +            'number', +            'hiddenOptions', +        ]; +        const objectOptions = [ +            'narg', +            'key', +            'alias', +            'default', +            'defaultDescription', +            'config', +            'choices', +            'demandedOptions', +            'demandedCommands', +            'coerce', +            'deprecatedOptions', +        ]; +        arrayOptions.forEach(k => { +            tmpOptions[k] = (options[k] || []).filter((k) => !localLookup[k]); +        }); +        objectOptions.forEach((k) => { +            tmpOptions[k] = objFilter(options[k], k => !localLookup[k]); +        }); +        tmpOptions.envPrefix = options.envPrefix; +        options = tmpOptions; +        usage$1 = usage$1 ? usage$1.reset(localLookup) : usage(self, y18n, shim$1); +        validation$1 = validation$1 +            ? validation$1.reset(localLookup) +            : validation(self, usage$1, y18n, shim$1); +        command$1 = command$1 +            ? command$1.reset() +            : command(self, usage$1, validation$1, globalMiddleware, shim$1); +        if (!completion$1) +            completion$1 = completion(self, usage$1, command$1, shim$1); +        completionCommand = null; +        output = ''; +        exitError = null; +        hasOutput = false; +        self.parsed = false; +        return self; +    }; +    self.resetOptions(); +    const frozens = []; +    function freeze() { +        frozens.push({ +            options, +            configObjects: options.configObjects.slice(0), +            exitProcess, +            groups, +            strict, +            strictCommands, +            strictOptions, +            completionCommand, +            output, +            exitError, +            hasOutput, +            parsed: self.parsed, +            parseFn, +            parseContext, +            handlerFinishCommand, +        }); +        usage$1.freeze(); +        validation$1.freeze(); +        command$1.freeze(); +    } +    function unfreeze() { +        const frozen = frozens.pop(); +        assertNotStrictEqual(frozen, undefined, shim$1); +        let configObjects; +        ({ +            options, +            configObjects, +            exitProcess, +            groups, +            output, +            exitError, +            hasOutput, +            parsed: self.parsed, +            strict, +            strictCommands, +            strictOptions, +            completionCommand, +            parseFn, +            parseContext, +            handlerFinishCommand, +        } = frozen); +        options.configObjects = configObjects; +        usage$1.unfreeze(); +        validation$1.unfreeze(); +        command$1.unfreeze(); +    } +    self.boolean = function (keys) { +        argsert('<array|string>', [keys], arguments.length); +        populateParserHintArray('boolean', keys); +        return self; +    }; +    self.array = function (keys) { +        argsert('<array|string>', [keys], arguments.length); +        populateParserHintArray('array', keys); +        return self; +    }; +    self.number = function (keys) { +        argsert('<array|string>', [keys], arguments.length); +        populateParserHintArray('number', keys); +        return self; +    }; +    self.normalize = function (keys) { +        argsert('<array|string>', [keys], arguments.length); +        populateParserHintArray('normalize', keys); +        return self; +    }; +    self.count = function (keys) { +        argsert('<array|string>', [keys], arguments.length); +        populateParserHintArray('count', keys); +        return self; +    }; +    self.string = function (keys) { +        argsert('<array|string>', [keys], arguments.length); +        populateParserHintArray('string', keys); +        return self; +    }; +    self.requiresArg = function (keys) { +        argsert('<array|string|object> [number]', [keys], arguments.length); +        if (typeof keys === 'string' && options.narg[keys]) { +            return self; +        } +        else { +            populateParserHintSingleValueDictionary(self.requiresArg, 'narg', keys, NaN); +        } +        return self; +    }; +    self.skipValidation = function (keys) { +        argsert('<array|string>', [keys], arguments.length); +        populateParserHintArray('skipValidation', keys); +        return self; +    }; +    function populateParserHintArray(type, keys) { +        keys = [].concat(keys); +        keys.forEach(key => { +            key = sanitizeKey(key); +            options[type].push(key); +        }); +    } +    self.nargs = function (key, value) { +        argsert('<string|object|array> [number]', [key, value], arguments.length); +        populateParserHintSingleValueDictionary(self.nargs, 'narg', key, value); +        return self; +    }; +    self.choices = function (key, value) { +        argsert('<object|string|array> [string|array]', [key, value], arguments.length); +        populateParserHintArrayDictionary(self.choices, 'choices', key, value); +        return self; +    }; +    self.alias = function (key, value) { +        argsert('<object|string|array> [string|array]', [key, value], arguments.length); +        populateParserHintArrayDictionary(self.alias, 'alias', key, value); +        return self; +    }; +    self.default = self.defaults = function (key, value, defaultDescription) { +        argsert('<object|string|array> [*] [string]', [key, value, defaultDescription], arguments.length); +        if (defaultDescription) { +            assertSingleKey(key, shim$1); +            options.defaultDescription[key] = defaultDescription; +        } +        if (typeof value === 'function') { +            assertSingleKey(key, shim$1); +            if (!options.defaultDescription[key]) +                options.defaultDescription[key] = usage$1.functionDescription(value); +            value = value.call(); +        } +        populateParserHintSingleValueDictionary(self.default, 'default', key, value); +        return self; +    }; +    self.describe = function (key, desc) { +        argsert('<object|string|array> [string]', [key, desc], arguments.length); +        setKey(key, true); +        usage$1.describe(key, desc); +        return self; +    }; +    function setKey(key, set) { +        populateParserHintSingleValueDictionary(setKey, 'key', key, set); +        return self; +    } +    function demandOption(keys, msg) { +        argsert('<object|string|array> [string]', [keys, msg], arguments.length); +        populateParserHintSingleValueDictionary(self.demandOption, 'demandedOptions', keys, msg); +        return self; +    } +    self.demandOption = demandOption; +    self.coerce = function (keys, value) { +        argsert('<object|string|array> [function]', [keys, value], arguments.length); +        populateParserHintSingleValueDictionary(self.coerce, 'coerce', keys, value); +        return self; +    }; +    function populateParserHintSingleValueDictionary(builder, type, key, value) { +        populateParserHintDictionary(builder, type, key, value, (type, key, value) => { +            options[type][key] = value; +        }); +    } +    function populateParserHintArrayDictionary(builder, type, key, value) { +        populateParserHintDictionary(builder, type, key, value, (type, key, value) => { +            options[type][key] = (options[type][key] || []).concat(value); +        }); +    } +    function populateParserHintDictionary(builder, type, key, value, singleKeyHandler) { +        if (Array.isArray(key)) { +            key.forEach(k => { +                builder(k, value); +            }); +        } +        else if (((key) => typeof key === 'object')(key)) { +            for (const k of objectKeys(key)) { +                builder(k, key[k]); +            } +        } +        else { +            singleKeyHandler(type, sanitizeKey(key), value); +        } +    } +    function sanitizeKey(key) { +        if (key === '__proto__') +            return '___proto___'; +        return key; +    } +    function deleteFromParserHintObject(optionKey) { +        objectKeys(options).forEach((hintKey) => { +            if (((key) => key === 'configObjects')(hintKey)) +                return; +            const hint = options[hintKey]; +            if (Array.isArray(hint)) { +                if (~hint.indexOf(optionKey)) +                    hint.splice(hint.indexOf(optionKey), 1); +            } +            else if (typeof hint === 'object') { +                delete hint[optionKey]; +            } +        }); +        delete usage$1.getDescriptions()[optionKey]; +    } +    self.config = function config(key = 'config', msg, parseFn) { +        argsert('[object|string] [string|function] [function]', [key, msg, parseFn], arguments.length); +        if (typeof key === 'object' && !Array.isArray(key)) { +            key = applyExtends(key, cwd, self.getParserConfiguration()['deep-merge-config'] || false, shim$1); +            options.configObjects = (options.configObjects || []).concat(key); +            return self; +        } +        if (typeof msg === 'function') { +            parseFn = msg; +            msg = undefined; +        } +        self.describe(key, msg || usage$1.deferY18nLookup('Path to JSON config file')); +        (Array.isArray(key) ? key : [key]).forEach(k => { +            options.config[k] = parseFn || true; +        }); +        return self; +    }; +    self.example = function (cmd, description) { +        argsert('<string|array> [string]', [cmd, description], arguments.length); +        if (Array.isArray(cmd)) { +            cmd.forEach(exampleParams => self.example(...exampleParams)); +        } +        else { +            usage$1.example(cmd, description); +        } +        return self; +    }; +    self.command = function (cmd, description, builder, handler, middlewares, deprecated) { +        argsert('<string|array|object> [string|boolean] [function|object] [function] [array] [boolean|string]', [cmd, description, builder, handler, middlewares, deprecated], arguments.length); +        command$1.addHandler(cmd, description, builder, handler, middlewares, deprecated); +        return self; +    }; +    self.commandDir = function (dir, opts) { +        argsert('<string> [object]', [dir, opts], arguments.length); +        const req = parentRequire || shim$1.require; +        command$1.addDirectory(dir, self.getContext(), req, shim$1.getCallerFile(), opts); +        return self; +    }; +    self.demand = self.required = self.require = function demand(keys, max, msg) { +        if (Array.isArray(max)) { +            max.forEach(key => { +                assertNotStrictEqual(msg, true, shim$1); +                demandOption(key, msg); +            }); +            max = Infinity; +        } +        else if (typeof max !== 'number') { +            msg = max; +            max = Infinity; +        } +        if (typeof keys === 'number') { +            assertNotStrictEqual(msg, true, shim$1); +            self.demandCommand(keys, max, msg, msg); +        } +        else if (Array.isArray(keys)) { +            keys.forEach(key => { +                assertNotStrictEqual(msg, true, shim$1); +                demandOption(key, msg); +            }); +        } +        else { +            if (typeof msg === 'string') { +                demandOption(keys, msg); +            } +            else if (msg === true || typeof msg === 'undefined') { +                demandOption(keys); +            } +        } +        return self; +    }; +    self.demandCommand = function demandCommand(min = 1, max, minMsg, maxMsg) { +        argsert('[number] [number|string] [string|null|undefined] [string|null|undefined]', [min, max, minMsg, maxMsg], arguments.length); +        if (typeof max !== 'number') { +            minMsg = max; +            max = Infinity; +        } +        self.global('_', false); +        options.demandedCommands._ = { +            min, +            max, +            minMsg, +            maxMsg, +        }; +        return self; +    }; +    self.getDemandedOptions = () => { +        argsert([], 0); +        return options.demandedOptions; +    }; +    self.getDemandedCommands = () => { +        argsert([], 0); +        return options.demandedCommands; +    }; +    self.deprecateOption = function deprecateOption(option, message) { +        argsert('<string> [string|boolean]', [option, message], arguments.length); +        options.deprecatedOptions[option] = message; +        return self; +    }; +    self.getDeprecatedOptions = () => { +        argsert([], 0); +        return options.deprecatedOptions; +    }; +    self.implies = function (key, value) { +        argsert('<string|object> [number|string|array]', [key, value], arguments.length); +        validation$1.implies(key, value); +        return self; +    }; +    self.conflicts = function (key1, key2) { +        argsert('<string|object> [string|array]', [key1, key2], arguments.length); +        validation$1.conflicts(key1, key2); +        return self; +    }; +    self.usage = function (msg, description, builder, handler) { +        argsert('<string|null|undefined> [string|boolean] [function|object] [function]', [msg, description, builder, handler], arguments.length); +        if (description !== undefined) { +            assertNotStrictEqual(msg, null, shim$1); +            if ((msg || '').match(/^\$0( |$)/)) { +                return self.command(msg, description, builder, handler); +            } +            else { +                throw new YError('.usage() description must start with $0 if being used as alias for .command()'); +            } +        } +        else { +            usage$1.usage(msg); +            return self; +        } +    }; +    self.epilogue = self.epilog = function (msg) { +        argsert('<string>', [msg], arguments.length); +        usage$1.epilog(msg); +        return self; +    }; +    self.fail = function (f) { +        argsert('<function>', [f], arguments.length); +        usage$1.failFn(f); +        return self; +    }; +    self.onFinishCommand = function (f) { +        argsert('<function>', [f], arguments.length); +        handlerFinishCommand = f; +        return self; +    }; +    self.getHandlerFinishCommand = () => handlerFinishCommand; +    self.check = function (f, _global) { +        argsert('<function> [boolean]', [f, _global], arguments.length); +        validation$1.check(f, _global !== false); +        return self; +    }; +    self.global = function global(globals, global) { +        argsert('<string|array> [boolean]', [globals, global], arguments.length); +        globals = [].concat(globals); +        if (global !== false) { +            options.local = options.local.filter(l => globals.indexOf(l) === -1); +        } +        else { +            globals.forEach(g => { +                if (options.local.indexOf(g) === -1) +                    options.local.push(g); +            }); +        } +        return self; +    }; +    self.pkgConf = function pkgConf(key, rootPath) { +        argsert('<string> [string]', [key, rootPath], arguments.length); +        let conf = null; +        const obj = pkgUp(rootPath || cwd); +        if (obj[key] && typeof obj[key] === 'object') { +            conf = applyExtends(obj[key], rootPath || cwd, self.getParserConfiguration()['deep-merge-config'] || false, shim$1); +            options.configObjects = (options.configObjects || []).concat(conf); +        } +        return self; +    }; +    const pkgs = {}; +    function pkgUp(rootPath) { +        const npath = rootPath || '*'; +        if (pkgs[npath]) +            return pkgs[npath]; +        let obj = {}; +        try { +            let startDir = rootPath || shim$1.mainFilename; +            if (!rootPath && shim$1.path.extname(startDir)) { +                startDir = shim$1.path.dirname(startDir); +            } +            const pkgJsonPath = shim$1.findUp(startDir, (dir, names) => { +                if (names.includes('package.json')) { +                    return 'package.json'; +                } +                else { +                    return undefined; +                } +            }); +            assertNotStrictEqual(pkgJsonPath, undefined, shim$1); +            obj = JSON.parse(shim$1.readFileSync(pkgJsonPath, 'utf8')); +        } +        catch (_noop) { } +        pkgs[npath] = obj || {}; +        return pkgs[npath]; +    } +    let parseFn = null; +    let parseContext = null; +    self.parse = function parse(args, shortCircuit, _parseFn) { +        argsert('[string|array] [function|boolean|object] [function]', [args, shortCircuit, _parseFn], arguments.length); +        freeze(); +        if (typeof args === 'undefined') { +            const argv = self._parseArgs(processArgs); +            const tmpParsed = self.parsed; +            unfreeze(); +            self.parsed = tmpParsed; +            return argv; +        } +        if (typeof shortCircuit === 'object') { +            parseContext = shortCircuit; +            shortCircuit = _parseFn; +        } +        if (typeof shortCircuit === 'function') { +            parseFn = shortCircuit; +            shortCircuit = false; +        } +        if (!shortCircuit) +            processArgs = args; +        if (parseFn) +            exitProcess = false; +        const parsed = self._parseArgs(args, !!shortCircuit); +        completion$1.setParsed(self.parsed); +        if (parseFn) +            parseFn(exitError, parsed, output); +        unfreeze(); +        return parsed; +    }; +    self._getParseContext = () => parseContext || {}; +    self._hasParseCallback = () => !!parseFn; +    self.option = self.options = function option(key, opt) { +        argsert('<string|object> [object]', [key, opt], arguments.length); +        if (typeof key === 'object') { +            Object.keys(key).forEach(k => { +                self.options(k, key[k]); +            }); +        } +        else { +            if (typeof opt !== 'object') { +                opt = {}; +            } +            options.key[key] = true; +            if (opt.alias) +                self.alias(key, opt.alias); +            const deprecate = opt.deprecate || opt.deprecated; +            if (deprecate) { +                self.deprecateOption(key, deprecate); +            } +            const demand = opt.demand || opt.required || opt.require; +            if (demand) { +                self.demand(key, demand); +            } +            if (opt.demandOption) { +                self.demandOption(key, typeof opt.demandOption === 'string' ? opt.demandOption : undefined); +            } +            if (opt.conflicts) { +                self.conflicts(key, opt.conflicts); +            } +            if ('default' in opt) { +                self.default(key, opt.default); +            } +            if (opt.implies !== undefined) { +                self.implies(key, opt.implies); +            } +            if (opt.nargs !== undefined) { +                self.nargs(key, opt.nargs); +            } +            if (opt.config) { +                self.config(key, opt.configParser); +            } +            if (opt.normalize) { +                self.normalize(key); +            } +            if (opt.choices) { +                self.choices(key, opt.choices); +            } +            if (opt.coerce) { +                self.coerce(key, opt.coerce); +            } +            if (opt.group) { +                self.group(key, opt.group); +            } +            if (opt.boolean || opt.type === 'boolean') { +                self.boolean(key); +                if (opt.alias) +                    self.boolean(opt.alias); +            } +            if (opt.array || opt.type === 'array') { +                self.array(key); +                if (opt.alias) +                    self.array(opt.alias); +            } +            if (opt.number || opt.type === 'number') { +                self.number(key); +                if (opt.alias) +                    self.number(opt.alias); +            } +            if (opt.string || opt.type === 'string') { +                self.string(key); +                if (opt.alias) +                    self.string(opt.alias); +            } +            if (opt.count || opt.type === 'count') { +                self.count(key); +            } +            if (typeof opt.global === 'boolean') { +                self.global(key, opt.global); +            } +            if (opt.defaultDescription) { +                options.defaultDescription[key] = opt.defaultDescription; +            } +            if (opt.skipValidation) { +                self.skipValidation(key); +            } +            const desc = opt.describe || opt.description || opt.desc; +            self.describe(key, desc); +            if (opt.hidden) { +                self.hide(key); +            } +            if (opt.requiresArg) { +                self.requiresArg(key); +            } +        } +        return self; +    }; +    self.getOptions = () => options; +    self.positional = function (key, opts) { +        argsert('<string> <object>', [key, opts], arguments.length); +        if (context.resets === 0) { +            throw new YError(".positional() can only be called in a command's builder function"); +        } +        const supportedOpts = [ +            'default', +            'defaultDescription', +            'implies', +            'normalize', +            'choices', +            'conflicts', +            'coerce', +            'type', +            'describe', +            'desc', +            'description', +            'alias', +        ]; +        opts = objFilter(opts, (k, v) => { +            let accept = supportedOpts.indexOf(k) !== -1; +            if (k === 'type' && ['string', 'number', 'boolean'].indexOf(v) === -1) +                accept = false; +            return accept; +        }); +        const fullCommand = context.fullCommands[context.fullCommands.length - 1]; +        const parseOptions = fullCommand +            ? command$1.cmdToParseOptions(fullCommand) +            : { +                array: [], +                alias: {}, +                default: {}, +                demand: {}, +            }; +        objectKeys(parseOptions).forEach(pk => { +            const parseOption = parseOptions[pk]; +            if (Array.isArray(parseOption)) { +                if (parseOption.indexOf(key) !== -1) +                    opts[pk] = true; +            } +            else { +                if (parseOption[key] && !(pk in opts)) +                    opts[pk] = parseOption[key]; +            } +        }); +        self.group(key, usage$1.getPositionalGroupName()); +        return self.option(key, opts); +    }; +    self.group = function group(opts, groupName) { +        argsert('<string|array> <string>', [opts, groupName], arguments.length); +        const existing = preservedGroups[groupName] || groups[groupName]; +        if (preservedGroups[groupName]) { +            delete preservedGroups[groupName]; +        } +        const seen = {}; +        groups[groupName] = (existing || []).concat(opts).filter(key => { +            if (seen[key]) +                return false; +            return (seen[key] = true); +        }); +        return self; +    }; +    self.getGroups = () => Object.assign({}, groups, preservedGroups); +    self.env = function (prefix) { +        argsert('[string|boolean]', [prefix], arguments.length); +        if (prefix === false) +            delete options.envPrefix; +        else +            options.envPrefix = prefix || ''; +        return self; +    }; +    self.wrap = function (cols) { +        argsert('<number|null|undefined>', [cols], arguments.length); +        usage$1.wrap(cols); +        return self; +    }; +    let strict = false; +    self.strict = function (enabled) { +        argsert('[boolean]', [enabled], arguments.length); +        strict = enabled !== false; +        return self; +    }; +    self.getStrict = () => strict; +    let strictCommands = false; +    self.strictCommands = function (enabled) { +        argsert('[boolean]', [enabled], arguments.length); +        strictCommands = enabled !== false; +        return self; +    }; +    self.getStrictCommands = () => strictCommands; +    let strictOptions = false; +    self.strictOptions = function (enabled) { +        argsert('[boolean]', [enabled], arguments.length); +        strictOptions = enabled !== false; +        return self; +    }; +    self.getStrictOptions = () => strictOptions; +    let parserConfig = {}; +    self.parserConfiguration = function parserConfiguration(config) { +        argsert('<object>', [config], arguments.length); +        parserConfig = config; +        return self; +    }; +    self.getParserConfiguration = () => parserConfig; +    self.showHelp = function (level) { +        argsert('[string|function]', [level], arguments.length); +        if (!self.parsed) +            self._parseArgs(processArgs); +        if (command$1.hasDefaultCommand()) { +            context.resets++; +            command$1.runDefaultBuilderOn(self); +        } +        usage$1.showHelp(level); +        return self; +    }; +    let versionOpt = null; +    self.version = function version(opt, msg, ver) { +        const defaultVersionOpt = 'version'; +        argsert('[boolean|string] [string] [string]', [opt, msg, ver], arguments.length); +        if (versionOpt) { +            deleteFromParserHintObject(versionOpt); +            usage$1.version(undefined); +            versionOpt = null; +        } +        if (arguments.length === 0) { +            ver = guessVersion(); +            opt = defaultVersionOpt; +        } +        else if (arguments.length === 1) { +            if (opt === false) { +                return self; +            } +            ver = opt; +            opt = defaultVersionOpt; +        } +        else if (arguments.length === 2) { +            ver = msg; +            msg = undefined; +        } +        versionOpt = typeof opt === 'string' ? opt : defaultVersionOpt; +        msg = msg || usage$1.deferY18nLookup('Show version number'); +        usage$1.version(ver || undefined); +        self.boolean(versionOpt); +        self.describe(versionOpt, msg); +        return self; +    }; +    function guessVersion() { +        const obj = pkgUp(); +        return obj.version || 'unknown'; +    } +    let helpOpt = null; +    self.addHelpOpt = self.help = function addHelpOpt(opt, msg) { +        const defaultHelpOpt = 'help'; +        argsert('[string|boolean] [string]', [opt, msg], arguments.length); +        if (helpOpt) { +            deleteFromParserHintObject(helpOpt); +            helpOpt = null; +        } +        if (arguments.length === 1) { +            if (opt === false) +                return self; +        } +        helpOpt = typeof opt === 'string' ? opt : defaultHelpOpt; +        self.boolean(helpOpt); +        self.describe(helpOpt, msg || usage$1.deferY18nLookup('Show help')); +        return self; +    }; +    const defaultShowHiddenOpt = 'show-hidden'; +    options.showHiddenOpt = defaultShowHiddenOpt; +    self.addShowHiddenOpt = self.showHidden = function addShowHiddenOpt(opt, msg) { +        argsert('[string|boolean] [string]', [opt, msg], arguments.length); +        if (arguments.length === 1) { +            if (opt === false) +                return self; +        } +        const showHiddenOpt = typeof opt === 'string' ? opt : defaultShowHiddenOpt; +        self.boolean(showHiddenOpt); +        self.describe(showHiddenOpt, msg || usage$1.deferY18nLookup('Show hidden options')); +        options.showHiddenOpt = showHiddenOpt; +        return self; +    }; +    self.hide = function hide(key) { +        argsert('<string>', [key], arguments.length); +        options.hiddenOptions.push(key); +        return self; +    }; +    self.showHelpOnFail = function showHelpOnFail(enabled, message) { +        argsert('[boolean|string] [string]', [enabled, message], arguments.length); +        usage$1.showHelpOnFail(enabled, message); +        return self; +    }; +    let exitProcess = true; +    self.exitProcess = function (enabled = true) { +        argsert('[boolean]', [enabled], arguments.length); +        exitProcess = enabled; +        return self; +    }; +    self.getExitProcess = () => exitProcess; +    self.showCompletionScript = function ($0, cmd) { +        argsert('[string] [string]', [$0, cmd], arguments.length); +        $0 = $0 || self.$0; +        _logger.log(completion$1.generateCompletionScript($0, cmd || completionCommand || 'completion')); +        return self; +    }; +    self.getCompletion = function (args, done) { +        argsert('<array> <function>', [args, done], arguments.length); +        completion$1.getCompletion(args, done); +    }; +    self.locale = function (locale) { +        argsert('[string]', [locale], arguments.length); +        if (!locale) { +            guessLocale(); +            return y18n.getLocale(); +        } +        detectLocale = false; +        y18n.setLocale(locale); +        return self; +    }; +    self.updateStrings = self.updateLocale = function (obj) { +        argsert('<object>', [obj], arguments.length); +        detectLocale = false; +        y18n.updateLocale(obj); +        return self; +    }; +    let detectLocale = true; +    self.detectLocale = function (detect) { +        argsert('<boolean>', [detect], arguments.length); +        detectLocale = detect; +        return self; +    }; +    self.getDetectLocale = () => detectLocale; +    const _logger = { +        log(...args) { +            if (!self._hasParseCallback()) +                console.log(...args); +            hasOutput = true; +            if (output.length) +                output += '\n'; +            output += args.join(' '); +        }, +        error(...args) { +            if (!self._hasParseCallback()) +                console.error(...args); +            hasOutput = true; +            if (output.length) +                output += '\n'; +            output += args.join(' '); +        }, +    }; +    self._getLoggerInstance = () => _logger; +    self._hasOutput = () => hasOutput; +    self._setHasOutput = () => { +        hasOutput = true; +    }; +    let recommendCommands; +    self.recommendCommands = function (recommend = true) { +        argsert('[boolean]', [recommend], arguments.length); +        recommendCommands = recommend; +        return self; +    }; +    self.getUsageInstance = () => usage$1; +    self.getValidationInstance = () => validation$1; +    self.getCommandInstance = () => command$1; +    self.terminalWidth = () => { +        argsert([], 0); +        return shim$1.process.stdColumns; +    }; +    Object.defineProperty(self, 'argv', { +        get: () => self._parseArgs(processArgs), +        enumerable: true, +    }); +    self._parseArgs = function parseArgs(args, shortCircuit, _calledFromCommand, commandIndex) { +        let skipValidation = !!_calledFromCommand; +        args = args || processArgs; +        options.__ = y18n.__; +        options.configuration = self.getParserConfiguration(); +        const populateDoubleDash = !!options.configuration['populate--']; +        const config = Object.assign({}, options.configuration, { +            'populate--': true, +        }); +        const parsed = shim$1.Parser.detailed(args, Object.assign({}, options, { +            configuration: Object.assign({ 'parse-positional-numbers': false }, config), +        })); +        let argv = parsed.argv; +        if (parseContext) +            argv = Object.assign({}, argv, parseContext); +        const aliases = parsed.aliases; +        argv.$0 = self.$0; +        self.parsed = parsed; +        try { +            guessLocale(); +            if (shortCircuit) { +                return self._postProcess(argv, populateDoubleDash, _calledFromCommand); +            } +            if (helpOpt) { +                const helpCmds = [helpOpt] +                    .concat(aliases[helpOpt] || []) +                    .filter(k => k.length > 1); +                if (~helpCmds.indexOf('' + argv._[argv._.length - 1])) { +                    argv._.pop(); +                    argv[helpOpt] = true; +                } +            } +            const handlerKeys = command$1.getCommands(); +            const requestCompletions = completion$1.completionKey in argv; +            const skipRecommendation = argv[helpOpt] || requestCompletions; +            const skipDefaultCommand = skipRecommendation && +                (handlerKeys.length > 1 || handlerKeys[0] !== '$0'); +            if (argv._.length) { +                if (handlerKeys.length) { +                    let firstUnknownCommand; +                    for (let i = commandIndex || 0, cmd; argv._[i] !== undefined; i++) { +                        cmd = String(argv._[i]); +                        if (~handlerKeys.indexOf(cmd) && cmd !== completionCommand) { +                            const innerArgv = command$1.runCommand(cmd, self, parsed, i + 1); +                            return self._postProcess(innerArgv, populateDoubleDash); +                        } +                        else if (!firstUnknownCommand && cmd !== completionCommand) { +                            firstUnknownCommand = cmd; +                            break; +                        } +                    } +                    if (command$1.hasDefaultCommand() && !skipDefaultCommand) { +                        const innerArgv = command$1.runCommand(null, self, parsed); +                        return self._postProcess(innerArgv, populateDoubleDash); +                    } +                    if (recommendCommands && firstUnknownCommand && !skipRecommendation) { +                        validation$1.recommendCommands(firstUnknownCommand, handlerKeys); +                    } +                } +                if (completionCommand && +                    ~argv._.indexOf(completionCommand) && +                    !requestCompletions) { +                    if (exitProcess) +                        setBlocking(true); +                    self.showCompletionScript(); +                    self.exit(0); +                } +            } +            else if (command$1.hasDefaultCommand() && !skipDefaultCommand) { +                const innerArgv = command$1.runCommand(null, self, parsed); +                return self._postProcess(innerArgv, populateDoubleDash); +            } +            if (requestCompletions) { +                if (exitProcess) +                    setBlocking(true); +                args = [].concat(args); +                const completionArgs = args.slice(args.indexOf(`--${completion$1.completionKey}`) + 1); +                completion$1.getCompletion(completionArgs, completions => { +                    (completions || []).forEach(completion => { +                        _logger.log(completion); +                    }); +                    self.exit(0); +                }); +                return self._postProcess(argv, !populateDoubleDash, _calledFromCommand); +            } +            if (!hasOutput) { +                Object.keys(argv).forEach(key => { +                    if (key === helpOpt && argv[key]) { +                        if (exitProcess) +                            setBlocking(true); +                        skipValidation = true; +                        self.showHelp('log'); +                        self.exit(0); +                    } +                    else if (key === versionOpt && argv[key]) { +                        if (exitProcess) +                            setBlocking(true); +                        skipValidation = true; +                        usage$1.showVersion(); +                        self.exit(0); +                    } +                }); +            } +            if (!skipValidation && options.skipValidation.length > 0) { +                skipValidation = Object.keys(argv).some(key => options.skipValidation.indexOf(key) >= 0 && argv[key] === true); +            } +            if (!skipValidation) { +                if (parsed.error) +                    throw new YError(parsed.error.message); +                if (!requestCompletions) { +                    self._runValidation(argv, aliases, {}, parsed.error); +                } +            } +        } +        catch (err) { +            if (err instanceof YError) +                usage$1.fail(err.message, err); +            else +                throw err; +        } +        return self._postProcess(argv, populateDoubleDash, _calledFromCommand); +    }; +    self._postProcess = function (argv, populateDoubleDash, calledFromCommand = false) { +        if (isPromise(argv)) +            return argv; +        if (calledFromCommand) +            return argv; +        if (!populateDoubleDash) { +            argv = self._copyDoubleDash(argv); +        } +        const parsePositionalNumbers = self.getParserConfiguration()['parse-positional-numbers'] || +            self.getParserConfiguration()['parse-positional-numbers'] === undefined; +        if (parsePositionalNumbers) { +            argv = self._parsePositionalNumbers(argv); +        } +        return argv; +    }; +    self._copyDoubleDash = function (argv) { +        if (!argv._ || !argv['--']) +            return argv; +        argv._.push.apply(argv._, argv['--']); +        try { +            delete argv['--']; +        } +        catch (_err) { } +        return argv; +    }; +    self._parsePositionalNumbers = function (argv) { +        const args = argv['--'] ? argv['--'] : argv._; +        for (let i = 0, arg; (arg = args[i]) !== undefined; i++) { +            if (shim$1.Parser.looksLikeNumber(arg) && +                Number.isSafeInteger(Math.floor(parseFloat(`${arg}`)))) { +                args[i] = Number(arg); +            } +        } +        return argv; +    }; +    self._runValidation = function runValidation(argv, aliases, positionalMap, parseErrors, isDefaultCommand = false) { +        if (parseErrors) +            throw new YError(parseErrors.message); +        validation$1.nonOptionCount(argv); +        validation$1.requiredArguments(argv); +        let failedStrictCommands = false; +        if (strictCommands) { +            failedStrictCommands = validation$1.unknownCommands(argv); +        } +        if (strict && !failedStrictCommands) { +            validation$1.unknownArguments(argv, aliases, positionalMap, isDefaultCommand); +        } +        else if (strictOptions) { +            validation$1.unknownArguments(argv, aliases, {}, false, false); +        } +        validation$1.customChecks(argv, aliases); +        validation$1.limitedChoices(argv); +        validation$1.implications(argv); +        validation$1.conflicting(argv); +    }; +    function guessLocale() { +        if (!detectLocale) +            return; +        const locale = shim$1.getEnv('LC_ALL') || +            shim$1.getEnv('LC_MESSAGES') || +            shim$1.getEnv('LANG') || +            shim$1.getEnv('LANGUAGE') || +            'en_US'; +        self.locale(locale.replace(/[.:].*/, '')); +    } +    self.help(); +    self.version(); +    return self; +} +const rebase = (base, dir) => shim$1.path.relative(base, dir); +function isYargsInstance(y) { +    return !!y && typeof y._parseArgs === 'function'; +} + +var _a, _b; +const { readFileSync } = require('fs'); +const { inspect } = require('util'); +const { resolve } = require('path'); +const y18n = require('y18n'); +const Parser = require('yargs-parser'); +var cjsPlatformShim = { +    assert: { +        notStrictEqual: assert.notStrictEqual, +        strictEqual: assert.strictEqual, +    }, +    cliui: require('cliui'), +    findUp: require('escalade/sync'), +    getEnv: (key) => { +        return process.env[key]; +    }, +    getCallerFile: require('get-caller-file'), +    getProcessArgvBin: getProcessArgvBin, +    inspect, +    mainFilename: (_b = (_a = require === null || require === void 0 ? void 0 : require.main) === null || _a === void 0 ? void 0 : _a.filename) !== null && _b !== void 0 ? _b : process.cwd(), +    Parser, +    path: require('path'), +    process: { +        argv: () => process.argv, +        cwd: process.cwd, +        execPath: () => process.execPath, +        exit: (code) => { +            process.exit(code); +        }, +        nextTick: process.nextTick, +        stdColumns: typeof process.stdout.columns !== 'undefined' +            ? process.stdout.columns +            : null, +    }, +    readFileSync, +    require: require, +    requireDirectory: require('require-directory'), +    stringWidth: require('string-width'), +    y18n: y18n({ +        directory: resolve(__dirname, '../locales'), +        updateFiles: false, +    }), +}; + +const minNodeVersion = process && process.env && process.env.YARGS_MIN_NODE_VERSION +    ? Number(process.env.YARGS_MIN_NODE_VERSION) +    : 10; +if (process && process.version) { +    const major = Number(process.version.match(/v([^.]+)/)[1]); +    if (major < minNodeVersion) { +        throw Error(`yargs supports a minimum Node.js version of ${minNodeVersion}. Read our version support policy: https://github.com/yargs/yargs#supported-nodejs-versions`); +    } +} +const Parser$1 = require('yargs-parser'); +const Yargs$1 = YargsWithShim(cjsPlatformShim); +var cjs = { +    applyExtends, +    cjsPlatformShim, +    Yargs: Yargs$1, +    argsert, +    globalMiddlewareFactory, +    isPromise, +    objFilter, +    parseCommand, +    Parser: Parser$1, +    processArgv, +    rebase, +    YError, +}; + +module.exports = cjs; diff --git a/node_modules/yargs/build/lib/argsert.js b/node_modules/yargs/build/lib/argsert.js new file mode 100644 index 0000000..be5b3aa --- /dev/null +++ b/node_modules/yargs/build/lib/argsert.js @@ -0,0 +1,62 @@ +import { YError } from './yerror.js'; +import { parseCommand } from './parse-command.js'; +const positionName = ['first', 'second', 'third', 'fourth', 'fifth', 'sixth']; +export function argsert(arg1, arg2, arg3) { +    function parseArgs() { +        return typeof arg1 === 'object' +            ? [{ demanded: [], optional: [] }, arg1, arg2] +            : [ +                parseCommand(`cmd ${arg1}`), +                arg2, +                arg3, +            ]; +    } +    try { +        let position = 0; +        const [parsed, callerArguments, _length] = parseArgs(); +        const args = [].slice.call(callerArguments); +        while (args.length && args[args.length - 1] === undefined) +            args.pop(); +        const length = _length || args.length; +        if (length < parsed.demanded.length) { +            throw new YError(`Not enough arguments provided. Expected ${parsed.demanded.length} but received ${args.length}.`); +        } +        const totalCommands = parsed.demanded.length + parsed.optional.length; +        if (length > totalCommands) { +            throw new YError(`Too many arguments provided. Expected max ${totalCommands} but received ${length}.`); +        } +        parsed.demanded.forEach(demanded => { +            const arg = args.shift(); +            const observedType = guessType(arg); +            const matchingTypes = demanded.cmd.filter(type => type === observedType || type === '*'); +            if (matchingTypes.length === 0) +                argumentTypeError(observedType, demanded.cmd, position); +            position += 1; +        }); +        parsed.optional.forEach(optional => { +            if (args.length === 0) +                return; +            const arg = args.shift(); +            const observedType = guessType(arg); +            const matchingTypes = optional.cmd.filter(type => type === observedType || type === '*'); +            if (matchingTypes.length === 0) +                argumentTypeError(observedType, optional.cmd, position); +            position += 1; +        }); +    } +    catch (err) { +        console.warn(err.stack); +    } +} +function guessType(arg) { +    if (Array.isArray(arg)) { +        return 'array'; +    } +    else if (arg === null) { +        return 'null'; +    } +    return typeof arg; +} +function argumentTypeError(observedType, allowedTypes, position) { +    throw new YError(`Invalid ${positionName[position] || 'manyith'} argument. Expected ${allowedTypes.join(' or ')} but received ${observedType}.`); +} diff --git a/node_modules/yargs/build/lib/command.js b/node_modules/yargs/build/lib/command.js new file mode 100644 index 0000000..9a55dae --- /dev/null +++ b/node_modules/yargs/build/lib/command.js @@ -0,0 +1,382 @@ +import { assertNotStrictEqual, } from './typings/common-types.js'; +import { isPromise } from './utils/is-promise.js'; +import { applyMiddleware, commandMiddlewareFactory, } from './middleware.js'; +import { parseCommand } from './parse-command.js'; +import { isYargsInstance, } from './yargs-factory.js'; +import whichModule from './utils/which-module.js'; +const DEFAULT_MARKER = /(^\*)|(^\$0)/; +export function command(yargs, usage, validation, globalMiddleware = [], shim) { +    const self = {}; +    let handlers = {}; +    let aliasMap = {}; +    let defaultCommand; +    self.addHandler = function addHandler(cmd, description, builder, handler, commandMiddleware, deprecated) { +        let aliases = []; +        const middlewares = commandMiddlewareFactory(commandMiddleware); +        handler = handler || (() => { }); +        if (Array.isArray(cmd)) { +            if (isCommandAndAliases(cmd)) { +                [cmd, ...aliases] = cmd; +            } +            else { +                for (const command of cmd) { +                    self.addHandler(command); +                } +            } +        } +        else if (isCommandHandlerDefinition(cmd)) { +            let command = Array.isArray(cmd.command) || typeof cmd.command === 'string' +                ? cmd.command +                : moduleName(cmd); +            if (cmd.aliases) +                command = [].concat(command).concat(cmd.aliases); +            self.addHandler(command, extractDesc(cmd), cmd.builder, cmd.handler, cmd.middlewares, cmd.deprecated); +            return; +        } +        else if (isCommandBuilderDefinition(builder)) { +            self.addHandler([cmd].concat(aliases), description, builder.builder, builder.handler, builder.middlewares, builder.deprecated); +            return; +        } +        if (typeof cmd === 'string') { +            const parsedCommand = parseCommand(cmd); +            aliases = aliases.map(alias => parseCommand(alias).cmd); +            let isDefault = false; +            const parsedAliases = [parsedCommand.cmd].concat(aliases).filter(c => { +                if (DEFAULT_MARKER.test(c)) { +                    isDefault = true; +                    return false; +                } +                return true; +            }); +            if (parsedAliases.length === 0 && isDefault) +                parsedAliases.push('$0'); +            if (isDefault) { +                parsedCommand.cmd = parsedAliases[0]; +                aliases = parsedAliases.slice(1); +                cmd = cmd.replace(DEFAULT_MARKER, parsedCommand.cmd); +            } +            aliases.forEach(alias => { +                aliasMap[alias] = parsedCommand.cmd; +            }); +            if (description !== false) { +                usage.command(cmd, description, isDefault, aliases, deprecated); +            } +            handlers[parsedCommand.cmd] = { +                original: cmd, +                description, +                handler, +                builder: builder || {}, +                middlewares, +                deprecated, +                demanded: parsedCommand.demanded, +                optional: parsedCommand.optional, +            }; +            if (isDefault) +                defaultCommand = handlers[parsedCommand.cmd]; +        } +    }; +    self.addDirectory = function addDirectory(dir, context, req, callerFile, opts) { +        opts = opts || {}; +        if (typeof opts.recurse !== 'boolean') +            opts.recurse = false; +        if (!Array.isArray(opts.extensions)) +            opts.extensions = ['js']; +        const parentVisit = typeof opts.visit === 'function' ? opts.visit : (o) => o; +        opts.visit = function visit(obj, joined, filename) { +            const visited = parentVisit(obj, joined, filename); +            if (visited) { +                if (~context.files.indexOf(joined)) +                    return visited; +                context.files.push(joined); +                self.addHandler(visited); +            } +            return visited; +        }; +        shim.requireDirectory({ require: req, filename: callerFile }, dir, opts); +    }; +    function moduleName(obj) { +        const mod = whichModule(obj); +        if (!mod) +            throw new Error(`No command name given for module: ${shim.inspect(obj)}`); +        return commandFromFilename(mod.filename); +    } +    function commandFromFilename(filename) { +        return shim.path.basename(filename, shim.path.extname(filename)); +    } +    function extractDesc({ describe, description, desc, }) { +        for (const test of [describe, description, desc]) { +            if (typeof test === 'string' || test === false) +                return test; +            assertNotStrictEqual(test, true, shim); +        } +        return false; +    } +    self.getCommands = () => Object.keys(handlers).concat(Object.keys(aliasMap)); +    self.getCommandHandlers = () => handlers; +    self.hasDefaultCommand = () => !!defaultCommand; +    self.runCommand = function runCommand(command, yargs, parsed, commandIndex) { +        let aliases = parsed.aliases; +        const commandHandler = handlers[command] || handlers[aliasMap[command]] || defaultCommand; +        const currentContext = yargs.getContext(); +        let numFiles = currentContext.files.length; +        const parentCommands = currentContext.commands.slice(); +        let innerArgv = parsed.argv; +        let positionalMap = {}; +        if (command) { +            currentContext.commands.push(command); +            currentContext.fullCommands.push(commandHandler.original); +        } +        const builder = commandHandler.builder; +        if (isCommandBuilderCallback(builder)) { +            const builderOutput = builder(yargs.reset(parsed.aliases)); +            const innerYargs = isYargsInstance(builderOutput) ? builderOutput : yargs; +            if (shouldUpdateUsage(innerYargs)) { +                innerYargs +                    .getUsageInstance() +                    .usage(usageFromParentCommandsCommandHandler(parentCommands, commandHandler), commandHandler.description); +            } +            innerArgv = innerYargs._parseArgs(null, null, true, commandIndex); +            aliases = innerYargs.parsed.aliases; +        } +        else if (isCommandBuilderOptionDefinitions(builder)) { +            const innerYargs = yargs.reset(parsed.aliases); +            if (shouldUpdateUsage(innerYargs)) { +                innerYargs +                    .getUsageInstance() +                    .usage(usageFromParentCommandsCommandHandler(parentCommands, commandHandler), commandHandler.description); +            } +            Object.keys(commandHandler.builder).forEach(key => { +                innerYargs.option(key, builder[key]); +            }); +            innerArgv = innerYargs._parseArgs(null, null, true, commandIndex); +            aliases = innerYargs.parsed.aliases; +        } +        if (!yargs._hasOutput()) { +            positionalMap = populatePositionals(commandHandler, innerArgv, currentContext); +        } +        const middlewares = globalMiddleware +            .slice(0) +            .concat(commandHandler.middlewares); +        applyMiddleware(innerArgv, yargs, middlewares, true); +        if (!yargs._hasOutput()) { +            yargs._runValidation(innerArgv, aliases, positionalMap, yargs.parsed.error, !command); +        } +        if (commandHandler.handler && !yargs._hasOutput()) { +            yargs._setHasOutput(); +            const populateDoubleDash = !!yargs.getOptions().configuration['populate--']; +            yargs._postProcess(innerArgv, populateDoubleDash); +            innerArgv = applyMiddleware(innerArgv, yargs, middlewares, false); +            let handlerResult; +            if (isPromise(innerArgv)) { +                handlerResult = innerArgv.then(argv => commandHandler.handler(argv)); +            } +            else { +                handlerResult = commandHandler.handler(innerArgv); +            } +            const handlerFinishCommand = yargs.getHandlerFinishCommand(); +            if (isPromise(handlerResult)) { +                yargs.getUsageInstance().cacheHelpMessage(); +                handlerResult +                    .then(value => { +                    if (handlerFinishCommand) { +                        handlerFinishCommand(value); +                    } +                }) +                    .catch(error => { +                    try { +                        yargs.getUsageInstance().fail(null, error); +                    } +                    catch (err) { +                    } +                }) +                    .then(() => { +                    yargs.getUsageInstance().clearCachedHelpMessage(); +                }); +            } +            else { +                if (handlerFinishCommand) { +                    handlerFinishCommand(handlerResult); +                } +            } +        } +        if (command) { +            currentContext.commands.pop(); +            currentContext.fullCommands.pop(); +        } +        numFiles = currentContext.files.length - numFiles; +        if (numFiles > 0) +            currentContext.files.splice(numFiles * -1, numFiles); +        return innerArgv; +    }; +    function shouldUpdateUsage(yargs) { +        return (!yargs.getUsageInstance().getUsageDisabled() && +            yargs.getUsageInstance().getUsage().length === 0); +    } +    function usageFromParentCommandsCommandHandler(parentCommands, commandHandler) { +        const c = DEFAULT_MARKER.test(commandHandler.original) +            ? commandHandler.original.replace(DEFAULT_MARKER, '').trim() +            : commandHandler.original; +        const pc = parentCommands.filter(c => { +            return !DEFAULT_MARKER.test(c); +        }); +        pc.push(c); +        return `$0 ${pc.join(' ')}`; +    } +    self.runDefaultBuilderOn = function (yargs) { +        assertNotStrictEqual(defaultCommand, undefined, shim); +        if (shouldUpdateUsage(yargs)) { +            const commandString = DEFAULT_MARKER.test(defaultCommand.original) +                ? defaultCommand.original +                : defaultCommand.original.replace(/^[^[\]<>]*/, '$0 '); +            yargs.getUsageInstance().usage(commandString, defaultCommand.description); +        } +        const builder = defaultCommand.builder; +        if (isCommandBuilderCallback(builder)) { +            builder(yargs); +        } +        else if (!isCommandBuilderDefinition(builder)) { +            Object.keys(builder).forEach(key => { +                yargs.option(key, builder[key]); +            }); +        } +    }; +    function populatePositionals(commandHandler, argv, context) { +        argv._ = argv._.slice(context.commands.length); +        const demanded = commandHandler.demanded.slice(0); +        const optional = commandHandler.optional.slice(0); +        const positionalMap = {}; +        validation.positionalCount(demanded.length, argv._.length); +        while (demanded.length) { +            const demand = demanded.shift(); +            populatePositional(demand, argv, positionalMap); +        } +        while (optional.length) { +            const maybe = optional.shift(); +            populatePositional(maybe, argv, positionalMap); +        } +        argv._ = context.commands.concat(argv._.map(a => '' + a)); +        postProcessPositionals(argv, positionalMap, self.cmdToParseOptions(commandHandler.original)); +        return positionalMap; +    } +    function populatePositional(positional, argv, positionalMap) { +        const cmd = positional.cmd[0]; +        if (positional.variadic) { +            positionalMap[cmd] = argv._.splice(0).map(String); +        } +        else { +            if (argv._.length) +                positionalMap[cmd] = [String(argv._.shift())]; +        } +    } +    function postProcessPositionals(argv, positionalMap, parseOptions) { +        const options = Object.assign({}, yargs.getOptions()); +        options.default = Object.assign(parseOptions.default, options.default); +        for (const key of Object.keys(parseOptions.alias)) { +            options.alias[key] = (options.alias[key] || []).concat(parseOptions.alias[key]); +        } +        options.array = options.array.concat(parseOptions.array); +        options.config = {}; +        const unparsed = []; +        Object.keys(positionalMap).forEach(key => { +            positionalMap[key].map(value => { +                if (options.configuration['unknown-options-as-args']) +                    options.key[key] = true; +                unparsed.push(`--${key}`); +                unparsed.push(value); +            }); +        }); +        if (!unparsed.length) +            return; +        const config = Object.assign({}, options.configuration, { +            'populate--': true, +        }); +        const parsed = shim.Parser.detailed(unparsed, Object.assign({}, options, { +            configuration: config, +        })); +        if (parsed.error) { +            yargs.getUsageInstance().fail(parsed.error.message, parsed.error); +        } +        else { +            const positionalKeys = Object.keys(positionalMap); +            Object.keys(positionalMap).forEach(key => { +                positionalKeys.push(...parsed.aliases[key]); +            }); +            Object.keys(parsed.argv).forEach(key => { +                if (positionalKeys.indexOf(key) !== -1) { +                    if (!positionalMap[key]) +                        positionalMap[key] = parsed.argv[key]; +                    argv[key] = parsed.argv[key]; +                } +            }); +        } +    } +    self.cmdToParseOptions = function (cmdString) { +        const parseOptions = { +            array: [], +            default: {}, +            alias: {}, +            demand: {}, +        }; +        const parsed = parseCommand(cmdString); +        parsed.demanded.forEach(d => { +            const [cmd, ...aliases] = d.cmd; +            if (d.variadic) { +                parseOptions.array.push(cmd); +                parseOptions.default[cmd] = []; +            } +            parseOptions.alias[cmd] = aliases; +            parseOptions.demand[cmd] = true; +        }); +        parsed.optional.forEach(o => { +            const [cmd, ...aliases] = o.cmd; +            if (o.variadic) { +                parseOptions.array.push(cmd); +                parseOptions.default[cmd] = []; +            } +            parseOptions.alias[cmd] = aliases; +        }); +        return parseOptions; +    }; +    self.reset = () => { +        handlers = {}; +        aliasMap = {}; +        defaultCommand = undefined; +        return self; +    }; +    const frozens = []; +    self.freeze = () => { +        frozens.push({ +            handlers, +            aliasMap, +            defaultCommand, +        }); +    }; +    self.unfreeze = () => { +        const frozen = frozens.pop(); +        assertNotStrictEqual(frozen, undefined, shim); +        ({ handlers, aliasMap, defaultCommand } = frozen); +    }; +    return self; +} +export function isCommandBuilderDefinition(builder) { +    return (typeof builder === 'object' && +        !!builder.builder && +        typeof builder.handler === 'function'); +} +function isCommandAndAliases(cmd) { +    if (cmd.every(c => typeof c === 'string')) { +        return true; +    } +    else { +        return false; +    } +} +export function isCommandBuilderCallback(builder) { +    return typeof builder === 'function'; +} +function isCommandBuilderOptionDefinitions(builder) { +    return typeof builder === 'object'; +} +export function isCommandHandlerDefinition(cmd) { +    return typeof cmd === 'object' && !Array.isArray(cmd); +} diff --git a/node_modules/yargs/build/lib/completion-templates.js b/node_modules/yargs/build/lib/completion-templates.js new file mode 100644 index 0000000..990d34d --- /dev/null +++ b/node_modules/yargs/build/lib/completion-templates.js @@ -0,0 +1,47 @@ +export const completionShTemplate = `###-begin-{{app_name}}-completions-### +# +# yargs command completion script +# +# Installation: {{app_path}} {{completion_command}} >> ~/.bashrc +#    or {{app_path}} {{completion_command}} >> ~/.bash_profile on OSX. +# +_yargs_completions() +{ +    local cur_word args type_list + +    cur_word="\${COMP_WORDS[COMP_CWORD]}" +    args=("\${COMP_WORDS[@]}") + +    # ask yargs to generate completions. +    type_list=$({{app_path}} --get-yargs-completions "\${args[@]}") + +    COMPREPLY=( $(compgen -W "\${type_list}" -- \${cur_word}) ) + +    # if no match was found, fall back to filename completion +    if [ \${#COMPREPLY[@]} -eq 0 ]; then +      COMPREPLY=() +    fi + +    return 0 +} +complete -o default -F _yargs_completions {{app_name}} +###-end-{{app_name}}-completions-### +`; +export const completionZshTemplate = `###-begin-{{app_name}}-completions-### +# +# yargs command completion script +# +# Installation: {{app_path}} {{completion_command}} >> ~/.zshrc +#    or {{app_path}} {{completion_command}} >> ~/.zsh_profile on OSX. +# +_{{app_name}}_yargs_completions() +{ +  local reply +  local si=$IFS +  IFS=$'\n' reply=($(COMP_CWORD="$((CURRENT-1))" COMP_LINE="$BUFFER" COMP_POINT="$CURSOR" {{app_path}} --get-yargs-completions "\${words[@]}")) +  IFS=$si +  _describe 'values' reply +} +compdef _{{app_name}}_yargs_completions {{app_name}} +###-end-{{app_name}}-completions-### +`; diff --git a/node_modules/yargs/build/lib/completion.js b/node_modules/yargs/build/lib/completion.js new file mode 100644 index 0000000..1c2e924 --- /dev/null +++ b/node_modules/yargs/build/lib/completion.js @@ -0,0 +1,128 @@ +import { isCommandBuilderCallback } from './command.js'; +import { assertNotStrictEqual } from './typings/common-types.js'; +import * as templates from './completion-templates.js'; +import { isPromise } from './utils/is-promise.js'; +import { parseCommand } from './parse-command.js'; +export function completion(yargs, usage, command, shim) { +    const self = { +        completionKey: 'get-yargs-completions', +    }; +    let aliases; +    self.setParsed = function setParsed(parsed) { +        aliases = parsed.aliases; +    }; +    const zshShell = (shim.getEnv('SHELL') && shim.getEnv('SHELL').indexOf('zsh') !== -1) || +        (shim.getEnv('ZSH_NAME') && shim.getEnv('ZSH_NAME').indexOf('zsh') !== -1); +    self.getCompletion = function getCompletion(args, done) { +        const completions = []; +        const current = args.length ? args[args.length - 1] : ''; +        const argv = yargs.parse(args, true); +        const parentCommands = yargs.getContext().commands; +        function runCompletionFunction(argv) { +            assertNotStrictEqual(completionFunction, null, shim); +            if (isSyncCompletionFunction(completionFunction)) { +                const result = completionFunction(current, argv); +                if (isPromise(result)) { +                    return result +                        .then(list => { +                        shim.process.nextTick(() => { +                            done(list); +                        }); +                    }) +                        .catch(err => { +                        shim.process.nextTick(() => { +                            throw err; +                        }); +                    }); +                } +                return done(result); +            } +            else { +                return completionFunction(current, argv, completions => { +                    done(completions); +                }); +            } +        } +        if (completionFunction) { +            return isPromise(argv) +                ? argv.then(runCompletionFunction) +                : runCompletionFunction(argv); +        } +        const handlers = command.getCommandHandlers(); +        for (let i = 0, ii = args.length; i < ii; ++i) { +            if (handlers[args[i]] && handlers[args[i]].builder) { +                const builder = handlers[args[i]].builder; +                if (isCommandBuilderCallback(builder)) { +                    const y = yargs.reset(); +                    builder(y); +                    return y.argv; +                } +            } +        } +        if (!current.match(/^-/) && +            parentCommands[parentCommands.length - 1] !== current) { +            usage.getCommands().forEach(usageCommand => { +                const commandName = parseCommand(usageCommand[0]).cmd; +                if (args.indexOf(commandName) === -1) { +                    if (!zshShell) { +                        completions.push(commandName); +                    } +                    else { +                        const desc = usageCommand[1] || ''; +                        completions.push(commandName.replace(/:/g, '\\:') + ':' + desc); +                    } +                } +            }); +        } +        if (current.match(/^-/) || (current === '' && completions.length === 0)) { +            const descs = usage.getDescriptions(); +            const options = yargs.getOptions(); +            Object.keys(options.key).forEach(key => { +                const negable = !!options.configuration['boolean-negation'] && +                    options.boolean.includes(key); +                let keyAndAliases = [key].concat(aliases[key] || []); +                if (negable) +                    keyAndAliases = keyAndAliases.concat(keyAndAliases.map(key => `no-${key}`)); +                function completeOptionKey(key) { +                    const notInArgs = keyAndAliases.every(val => args.indexOf(`--${val}`) === -1); +                    if (notInArgs) { +                        const startsByTwoDashes = (s) => /^--/.test(s); +                        const isShortOption = (s) => /^[^0-9]$/.test(s); +                        const dashes = !startsByTwoDashes(current) && isShortOption(key) ? '-' : '--'; +                        if (!zshShell) { +                            completions.push(dashes + key); +                        } +                        else { +                            const desc = descs[key] || ''; +                            completions.push(dashes + +                                `${key.replace(/:/g, '\\:')}:${desc.replace('__yargsString__:', '')}`); +                        } +                    } +                } +                completeOptionKey(key); +                if (negable && !!options.default[key]) +                    completeOptionKey(`no-${key}`); +            }); +        } +        done(completions); +    }; +    self.generateCompletionScript = function generateCompletionScript($0, cmd) { +        let script = zshShell +            ? templates.completionZshTemplate +            : templates.completionShTemplate; +        const name = shim.path.basename($0); +        if ($0.match(/\.js$/)) +            $0 = `./${$0}`; +        script = script.replace(/{{app_name}}/g, name); +        script = script.replace(/{{completion_command}}/g, cmd); +        return script.replace(/{{app_path}}/g, $0); +    }; +    let completionFunction = null; +    self.registerFunction = fn => { +        completionFunction = fn; +    }; +    return self; +} +function isSyncCompletionFunction(completionFunction) { +    return completionFunction.length < 3; +} diff --git a/node_modules/yargs/build/lib/middleware.js b/node_modules/yargs/build/lib/middleware.js new file mode 100644 index 0000000..680094c --- /dev/null +++ b/node_modules/yargs/build/lib/middleware.js @@ -0,0 +1,53 @@ +import { argsert } from './argsert.js'; +import { isPromise } from './utils/is-promise.js'; +export function globalMiddlewareFactory(globalMiddleware, context) { +    return function (callback, applyBeforeValidation = false) { +        argsert('<array|function> [boolean]', [callback, applyBeforeValidation], arguments.length); +        if (Array.isArray(callback)) { +            for (let i = 0; i < callback.length; i++) { +                if (typeof callback[i] !== 'function') { +                    throw Error('middleware must be a function'); +                } +                callback[i].applyBeforeValidation = applyBeforeValidation; +            } +            Array.prototype.push.apply(globalMiddleware, callback); +        } +        else if (typeof callback === 'function') { +            callback.applyBeforeValidation = applyBeforeValidation; +            globalMiddleware.push(callback); +        } +        return context; +    }; +} +export function commandMiddlewareFactory(commandMiddleware) { +    if (!commandMiddleware) +        return []; +    return commandMiddleware.map(middleware => { +        middleware.applyBeforeValidation = false; +        return middleware; +    }); +} +export function applyMiddleware(argv, yargs, middlewares, beforeValidation) { +    const beforeValidationError = new Error('middleware cannot return a promise when applyBeforeValidation is true'); +    return middlewares.reduce((acc, middleware) => { +        if (middleware.applyBeforeValidation !== beforeValidation) { +            return acc; +        } +        if (isPromise(acc)) { +            return acc +                .then(initialObj => Promise.all([ +                initialObj, +                middleware(initialObj, yargs), +            ])) +                .then(([initialObj, middlewareObj]) => Object.assign(initialObj, middlewareObj)); +        } +        else { +            const result = middleware(acc, yargs); +            if (beforeValidation && isPromise(result)) +                throw beforeValidationError; +            return isPromise(result) +                ? result.then(middlewareObj => Object.assign(acc, middlewareObj)) +                : Object.assign(acc, result); +        } +    }, argv); +} diff --git a/node_modules/yargs/build/lib/parse-command.js b/node_modules/yargs/build/lib/parse-command.js new file mode 100644 index 0000000..4989f53 --- /dev/null +++ b/node_modules/yargs/build/lib/parse-command.js @@ -0,0 +1,32 @@ +export function parseCommand(cmd) { +    const extraSpacesStrippedCommand = cmd.replace(/\s{2,}/g, ' '); +    const splitCommand = extraSpacesStrippedCommand.split(/\s+(?![^[]*]|[^<]*>)/); +    const bregex = /\.*[\][<>]/g; +    const firstCommand = splitCommand.shift(); +    if (!firstCommand) +        throw new Error(`No command found in: ${cmd}`); +    const parsedCommand = { +        cmd: firstCommand.replace(bregex, ''), +        demanded: [], +        optional: [], +    }; +    splitCommand.forEach((cmd, i) => { +        let variadic = false; +        cmd = cmd.replace(/\s/g, ''); +        if (/\.+[\]>]/.test(cmd) && i === splitCommand.length - 1) +            variadic = true; +        if (/^\[/.test(cmd)) { +            parsedCommand.optional.push({ +                cmd: cmd.replace(bregex, '').split('|'), +                variadic, +            }); +        } +        else { +            parsedCommand.demanded.push({ +                cmd: cmd.replace(bregex, '').split('|'), +                variadic, +            }); +        } +    }); +    return parsedCommand; +} diff --git a/node_modules/yargs/build/lib/typings/common-types.js b/node_modules/yargs/build/lib/typings/common-types.js new file mode 100644 index 0000000..73e1773 --- /dev/null +++ b/node_modules/yargs/build/lib/typings/common-types.js @@ -0,0 +1,9 @@ +export function assertNotStrictEqual(actual, expected, shim, message) { +    shim.assert.notStrictEqual(actual, expected, message); +} +export function assertSingleKey(actual, shim) { +    shim.assert.strictEqual(typeof actual, 'string'); +} +export function objectKeys(object) { +    return Object.keys(object); +} diff --git a/node_modules/yargs/build/lib/typings/yargs-parser-types.js b/node_modules/yargs/build/lib/typings/yargs-parser-types.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/yargs/build/lib/typings/yargs-parser-types.js @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/yargs/build/lib/usage.js b/node_modules/yargs/build/lib/usage.js new file mode 100644 index 0000000..ecd1aac --- /dev/null +++ b/node_modules/yargs/build/lib/usage.js @@ -0,0 +1,548 @@ +import { assertNotStrictEqual, } from './typings/common-types.js'; +import { objFilter } from './utils/obj-filter.js'; +import { YError } from './yerror.js'; +import setBlocking from './utils/set-blocking.js'; +export function usage(yargs, y18n, shim) { +    const __ = y18n.__; +    const self = {}; +    const fails = []; +    self.failFn = function failFn(f) { +        fails.push(f); +    }; +    let failMessage = null; +    let showHelpOnFail = true; +    self.showHelpOnFail = function showHelpOnFailFn(arg1 = true, arg2) { +        function parseFunctionArgs() { +            return typeof arg1 === 'string' ? [true, arg1] : [arg1, arg2]; +        } +        const [enabled, message] = parseFunctionArgs(); +        failMessage = message; +        showHelpOnFail = enabled; +        return self; +    }; +    let failureOutput = false; +    self.fail = function fail(msg, err) { +        const logger = yargs._getLoggerInstance(); +        if (fails.length) { +            for (let i = fails.length - 1; i >= 0; --i) { +                fails[i](msg, err, self); +            } +        } +        else { +            if (yargs.getExitProcess()) +                setBlocking(true); +            if (!failureOutput) { +                failureOutput = true; +                if (showHelpOnFail) { +                    yargs.showHelp('error'); +                    logger.error(); +                } +                if (msg || err) +                    logger.error(msg || err); +                if (failMessage) { +                    if (msg || err) +                        logger.error(''); +                    logger.error(failMessage); +                } +            } +            err = err || new YError(msg); +            if (yargs.getExitProcess()) { +                return yargs.exit(1); +            } +            else if (yargs._hasParseCallback()) { +                return yargs.exit(1, err); +            } +            else { +                throw err; +            } +        } +    }; +    let usages = []; +    let usageDisabled = false; +    self.usage = (msg, description) => { +        if (msg === null) { +            usageDisabled = true; +            usages = []; +            return self; +        } +        usageDisabled = false; +        usages.push([msg, description || '']); +        return self; +    }; +    self.getUsage = () => { +        return usages; +    }; +    self.getUsageDisabled = () => { +        return usageDisabled; +    }; +    self.getPositionalGroupName = () => { +        return __('Positionals:'); +    }; +    let examples = []; +    self.example = (cmd, description) => { +        examples.push([cmd, description || '']); +    }; +    let commands = []; +    self.command = function command(cmd, description, isDefault, aliases, deprecated = false) { +        if (isDefault) { +            commands = commands.map(cmdArray => { +                cmdArray[2] = false; +                return cmdArray; +            }); +        } +        commands.push([cmd, description || '', isDefault, aliases, deprecated]); +    }; +    self.getCommands = () => commands; +    let descriptions = {}; +    self.describe = function describe(keyOrKeys, desc) { +        if (Array.isArray(keyOrKeys)) { +            keyOrKeys.forEach(k => { +                self.describe(k, desc); +            }); +        } +        else if (typeof keyOrKeys === 'object') { +            Object.keys(keyOrKeys).forEach(k => { +                self.describe(k, keyOrKeys[k]); +            }); +        } +        else { +            descriptions[keyOrKeys] = desc; +        } +    }; +    self.getDescriptions = () => descriptions; +    let epilogs = []; +    self.epilog = msg => { +        epilogs.push(msg); +    }; +    let wrapSet = false; +    let wrap; +    self.wrap = cols => { +        wrapSet = true; +        wrap = cols; +    }; +    function getWrap() { +        if (!wrapSet) { +            wrap = windowWidth(); +            wrapSet = true; +        } +        return wrap; +    } +    const deferY18nLookupPrefix = '__yargsString__:'; +    self.deferY18nLookup = str => deferY18nLookupPrefix + str; +    self.help = function help() { +        if (cachedHelpMessage) +            return cachedHelpMessage; +        normalizeAliases(); +        const base$0 = yargs.customScriptName +            ? yargs.$0 +            : shim.path.basename(yargs.$0); +        const demandedOptions = yargs.getDemandedOptions(); +        const demandedCommands = yargs.getDemandedCommands(); +        const deprecatedOptions = yargs.getDeprecatedOptions(); +        const groups = yargs.getGroups(); +        const options = yargs.getOptions(); +        let keys = []; +        keys = keys.concat(Object.keys(descriptions)); +        keys = keys.concat(Object.keys(demandedOptions)); +        keys = keys.concat(Object.keys(demandedCommands)); +        keys = keys.concat(Object.keys(options.default)); +        keys = keys.filter(filterHiddenOptions); +        keys = Object.keys(keys.reduce((acc, key) => { +            if (key !== '_') +                acc[key] = true; +            return acc; +        }, {})); +        const theWrap = getWrap(); +        const ui = shim.cliui({ +            width: theWrap, +            wrap: !!theWrap, +        }); +        if (!usageDisabled) { +            if (usages.length) { +                usages.forEach(usage => { +                    ui.div(`${usage[0].replace(/\$0/g, base$0)}`); +                    if (usage[1]) { +                        ui.div({ text: `${usage[1]}`, padding: [1, 0, 0, 0] }); +                    } +                }); +                ui.div(); +            } +            else if (commands.length) { +                let u = null; +                if (demandedCommands._) { +                    u = `${base$0} <${__('command')}>\n`; +                } +                else { +                    u = `${base$0} [${__('command')}]\n`; +                } +                ui.div(`${u}`); +            } +        } +        if (commands.length) { +            ui.div(__('Commands:')); +            const context = yargs.getContext(); +            const parentCommands = context.commands.length +                ? `${context.commands.join(' ')} ` +                : ''; +            if (yargs.getParserConfiguration()['sort-commands'] === true) { +                commands = commands.sort((a, b) => a[0].localeCompare(b[0])); +            } +            commands.forEach(command => { +                const commandString = `${base$0} ${parentCommands}${command[0].replace(/^\$0 ?/, '')}`; +                ui.span({ +                    text: commandString, +                    padding: [0, 2, 0, 2], +                    width: maxWidth(commands, theWrap, `${base$0}${parentCommands}`) + 4, +                }, { text: command[1] }); +                const hints = []; +                if (command[2]) +                    hints.push(`[${__('default')}]`); +                if (command[3] && command[3].length) { +                    hints.push(`[${__('aliases:')} ${command[3].join(', ')}]`); +                } +                if (command[4]) { +                    if (typeof command[4] === 'string') { +                        hints.push(`[${__('deprecated: %s', command[4])}]`); +                    } +                    else { +                        hints.push(`[${__('deprecated')}]`); +                    } +                } +                if (hints.length) { +                    ui.div({ +                        text: hints.join(' '), +                        padding: [0, 0, 0, 2], +                        align: 'right', +                    }); +                } +                else { +                    ui.div(); +                } +            }); +            ui.div(); +        } +        const aliasKeys = (Object.keys(options.alias) || []).concat(Object.keys(yargs.parsed.newAliases) || []); +        keys = keys.filter(key => !yargs.parsed.newAliases[key] && +            aliasKeys.every(alias => (options.alias[alias] || []).indexOf(key) === -1)); +        const defaultGroup = __('Options:'); +        if (!groups[defaultGroup]) +            groups[defaultGroup] = []; +        addUngroupedKeys(keys, options.alias, groups, defaultGroup); +        const isLongSwitch = (sw) => /^--/.test(getText(sw)); +        const displayedGroups = Object.keys(groups) +            .filter(groupName => groups[groupName].length > 0) +            .map(groupName => { +            const normalizedKeys = groups[groupName] +                .filter(filterHiddenOptions) +                .map(key => { +                if (~aliasKeys.indexOf(key)) +                    return key; +                for (let i = 0, aliasKey; (aliasKey = aliasKeys[i]) !== undefined; i++) { +                    if (~(options.alias[aliasKey] || []).indexOf(key)) +                        return aliasKey; +                } +                return key; +            }); +            return { groupName, normalizedKeys }; +        }) +            .filter(({ normalizedKeys }) => normalizedKeys.length > 0) +            .map(({ groupName, normalizedKeys }) => { +            const switches = normalizedKeys.reduce((acc, key) => { +                acc[key] = [key] +                    .concat(options.alias[key] || []) +                    .map(sw => { +                    if (groupName === self.getPositionalGroupName()) +                        return sw; +                    else { +                        return ((/^[0-9]$/.test(sw) +                            ? ~options.boolean.indexOf(key) +                                ? '-' +                                : '--' +                            : sw.length > 1 +                                ? '--' +                                : '-') + sw); +                    } +                }) +                    .sort((sw1, sw2) => isLongSwitch(sw1) === isLongSwitch(sw2) +                    ? 0 +                    : isLongSwitch(sw1) +                        ? 1 +                        : -1) +                    .join(', '); +                return acc; +            }, {}); +            return { groupName, normalizedKeys, switches }; +        }); +        const shortSwitchesUsed = displayedGroups +            .filter(({ groupName }) => groupName !== self.getPositionalGroupName()) +            .some(({ normalizedKeys, switches }) => !normalizedKeys.every(key => isLongSwitch(switches[key]))); +        if (shortSwitchesUsed) { +            displayedGroups +                .filter(({ groupName }) => groupName !== self.getPositionalGroupName()) +                .forEach(({ normalizedKeys, switches }) => { +                normalizedKeys.forEach(key => { +                    if (isLongSwitch(switches[key])) { +                        switches[key] = addIndentation(switches[key], '-x, '.length); +                    } +                }); +            }); +        } +        displayedGroups.forEach(({ groupName, normalizedKeys, switches }) => { +            ui.div(groupName); +            normalizedKeys.forEach(key => { +                const kswitch = switches[key]; +                let desc = descriptions[key] || ''; +                let type = null; +                if (~desc.lastIndexOf(deferY18nLookupPrefix)) +                    desc = __(desc.substring(deferY18nLookupPrefix.length)); +                if (~options.boolean.indexOf(key)) +                    type = `[${__('boolean')}]`; +                if (~options.count.indexOf(key)) +                    type = `[${__('count')}]`; +                if (~options.string.indexOf(key)) +                    type = `[${__('string')}]`; +                if (~options.normalize.indexOf(key)) +                    type = `[${__('string')}]`; +                if (~options.array.indexOf(key)) +                    type = `[${__('array')}]`; +                if (~options.number.indexOf(key)) +                    type = `[${__('number')}]`; +                const deprecatedExtra = (deprecated) => typeof deprecated === 'string' +                    ? `[${__('deprecated: %s', deprecated)}]` +                    : `[${__('deprecated')}]`; +                const extra = [ +                    key in deprecatedOptions +                        ? deprecatedExtra(deprecatedOptions[key]) +                        : null, +                    type, +                    key in demandedOptions ? `[${__('required')}]` : null, +                    options.choices && options.choices[key] +                        ? `[${__('choices:')} ${self.stringifiedValues(options.choices[key])}]` +                        : null, +                    defaultString(options.default[key], options.defaultDescription[key]), +                ] +                    .filter(Boolean) +                    .join(' '); +                ui.span({ +                    text: getText(kswitch), +                    padding: [0, 2, 0, 2 + getIndentation(kswitch)], +                    width: maxWidth(switches, theWrap) + 4, +                }, desc); +                if (extra) +                    ui.div({ text: extra, padding: [0, 0, 0, 2], align: 'right' }); +                else +                    ui.div(); +            }); +            ui.div(); +        }); +        if (examples.length) { +            ui.div(__('Examples:')); +            examples.forEach(example => { +                example[0] = example[0].replace(/\$0/g, base$0); +            }); +            examples.forEach(example => { +                if (example[1] === '') { +                    ui.div({ +                        text: example[0], +                        padding: [0, 2, 0, 2], +                    }); +                } +                else { +                    ui.div({ +                        text: example[0], +                        padding: [0, 2, 0, 2], +                        width: maxWidth(examples, theWrap) + 4, +                    }, { +                        text: example[1], +                    }); +                } +            }); +            ui.div(); +        } +        if (epilogs.length > 0) { +            const e = epilogs +                .map(epilog => epilog.replace(/\$0/g, base$0)) +                .join('\n'); +            ui.div(`${e}\n`); +        } +        return ui.toString().replace(/\s*$/, ''); +    }; +    function maxWidth(table, theWrap, modifier) { +        let width = 0; +        if (!Array.isArray(table)) { +            table = Object.values(table).map(v => [v]); +        } +        table.forEach(v => { +            width = Math.max(shim.stringWidth(modifier ? `${modifier} ${getText(v[0])}` : getText(v[0])) + getIndentation(v[0]), width); +        }); +        if (theWrap) +            width = Math.min(width, parseInt((theWrap * 0.5).toString(), 10)); +        return width; +    } +    function normalizeAliases() { +        const demandedOptions = yargs.getDemandedOptions(); +        const options = yargs.getOptions(); +        (Object.keys(options.alias) || []).forEach(key => { +            options.alias[key].forEach(alias => { +                if (descriptions[alias]) +                    self.describe(key, descriptions[alias]); +                if (alias in demandedOptions) +                    yargs.demandOption(key, demandedOptions[alias]); +                if (~options.boolean.indexOf(alias)) +                    yargs.boolean(key); +                if (~options.count.indexOf(alias)) +                    yargs.count(key); +                if (~options.string.indexOf(alias)) +                    yargs.string(key); +                if (~options.normalize.indexOf(alias)) +                    yargs.normalize(key); +                if (~options.array.indexOf(alias)) +                    yargs.array(key); +                if (~options.number.indexOf(alias)) +                    yargs.number(key); +            }); +        }); +    } +    let cachedHelpMessage; +    self.cacheHelpMessage = function () { +        cachedHelpMessage = this.help(); +    }; +    self.clearCachedHelpMessage = function () { +        cachedHelpMessage = undefined; +    }; +    function addUngroupedKeys(keys, aliases, groups, defaultGroup) { +        let groupedKeys = []; +        let toCheck = null; +        Object.keys(groups).forEach(group => { +            groupedKeys = groupedKeys.concat(groups[group]); +        }); +        keys.forEach(key => { +            toCheck = [key].concat(aliases[key]); +            if (!toCheck.some(k => groupedKeys.indexOf(k) !== -1)) { +                groups[defaultGroup].push(key); +            } +        }); +        return groupedKeys; +    } +    function filterHiddenOptions(key) { +        return (yargs.getOptions().hiddenOptions.indexOf(key) < 0 || +            yargs.parsed.argv[yargs.getOptions().showHiddenOpt]); +    } +    self.showHelp = (level) => { +        const logger = yargs._getLoggerInstance(); +        if (!level) +            level = 'error'; +        const emit = typeof level === 'function' ? level : logger[level]; +        emit(self.help()); +    }; +    self.functionDescription = fn => { +        const description = fn.name +            ? shim.Parser.decamelize(fn.name, '-') +            : __('generated-value'); +        return ['(', description, ')'].join(''); +    }; +    self.stringifiedValues = function stringifiedValues(values, separator) { +        let string = ''; +        const sep = separator || ', '; +        const array = [].concat(values); +        if (!values || !array.length) +            return string; +        array.forEach(value => { +            if (string.length) +                string += sep; +            string += JSON.stringify(value); +        }); +        return string; +    }; +    function defaultString(value, defaultDescription) { +        let string = `[${__('default:')} `; +        if (value === undefined && !defaultDescription) +            return null; +        if (defaultDescription) { +            string += defaultDescription; +        } +        else { +            switch (typeof value) { +                case 'string': +                    string += `"${value}"`; +                    break; +                case 'object': +                    string += JSON.stringify(value); +                    break; +                default: +                    string += value; +            } +        } +        return `${string}]`; +    } +    function windowWidth() { +        const maxWidth = 80; +        if (shim.process.stdColumns) { +            return Math.min(maxWidth, shim.process.stdColumns); +        } +        else { +            return maxWidth; +        } +    } +    let version = null; +    self.version = ver => { +        version = ver; +    }; +    self.showVersion = () => { +        const logger = yargs._getLoggerInstance(); +        logger.log(version); +    }; +    self.reset = function reset(localLookup) { +        failMessage = null; +        failureOutput = false; +        usages = []; +        usageDisabled = false; +        epilogs = []; +        examples = []; +        commands = []; +        descriptions = objFilter(descriptions, k => !localLookup[k]); +        return self; +    }; +    const frozens = []; +    self.freeze = function freeze() { +        frozens.push({ +            failMessage, +            failureOutput, +            usages, +            usageDisabled, +            epilogs, +            examples, +            commands, +            descriptions, +        }); +    }; +    self.unfreeze = function unfreeze() { +        const frozen = frozens.pop(); +        assertNotStrictEqual(frozen, undefined, shim); +        ({ +            failMessage, +            failureOutput, +            usages, +            usageDisabled, +            epilogs, +            examples, +            commands, +            descriptions, +        } = frozen); +    }; +    return self; +} +function isIndentedText(text) { +    return typeof text === 'object'; +} +function addIndentation(text, indent) { +    return isIndentedText(text) +        ? { text: text.text, indentation: text.indentation + indent } +        : { text, indentation: indent }; +} +function getIndentation(text) { +    return isIndentedText(text) ? text.indentation : 0; +} +function getText(text) { +    return isIndentedText(text) ? text.text : text; +} diff --git a/node_modules/yargs/build/lib/utils/apply-extends.js b/node_modules/yargs/build/lib/utils/apply-extends.js new file mode 100644 index 0000000..0e593b4 --- /dev/null +++ b/node_modules/yargs/build/lib/utils/apply-extends.js @@ -0,0 +1,59 @@ +import { YError } from '../yerror.js'; +let previouslyVisitedConfigs = []; +let shim; +export function applyExtends(config, cwd, mergeExtends, _shim) { +    shim = _shim; +    let defaultConfig = {}; +    if (Object.prototype.hasOwnProperty.call(config, 'extends')) { +        if (typeof config.extends !== 'string') +            return defaultConfig; +        const isPath = /\.json|\..*rc$/.test(config.extends); +        let pathToDefault = null; +        if (!isPath) { +            try { +                pathToDefault = require.resolve(config.extends); +            } +            catch (_err) { +                return config; +            } +        } +        else { +            pathToDefault = getPathToDefaultConfig(cwd, config.extends); +        } +        checkForCircularExtends(pathToDefault); +        previouslyVisitedConfigs.push(pathToDefault); +        defaultConfig = isPath +            ? JSON.parse(shim.readFileSync(pathToDefault, 'utf8')) +            : require(config.extends); +        delete config.extends; +        defaultConfig = applyExtends(defaultConfig, shim.path.dirname(pathToDefault), mergeExtends, shim); +    } +    previouslyVisitedConfigs = []; +    return mergeExtends +        ? mergeDeep(defaultConfig, config) +        : Object.assign({}, defaultConfig, config); +} +function checkForCircularExtends(cfgPath) { +    if (previouslyVisitedConfigs.indexOf(cfgPath) > -1) { +        throw new YError(`Circular extended configurations: '${cfgPath}'.`); +    } +} +function getPathToDefaultConfig(cwd, pathToExtend) { +    return shim.path.resolve(cwd, pathToExtend); +} +function mergeDeep(config1, config2) { +    const target = {}; +    function isObject(obj) { +        return obj && typeof obj === 'object' && !Array.isArray(obj); +    } +    Object.assign(target, config1); +    for (const key of Object.keys(config2)) { +        if (isObject(config2[key]) && isObject(target[key])) { +            target[key] = mergeDeep(config1[key], config2[key]); +        } +        else { +            target[key] = config2[key]; +        } +    } +    return target; +} diff --git a/node_modules/yargs/build/lib/utils/is-promise.js b/node_modules/yargs/build/lib/utils/is-promise.js new file mode 100644 index 0000000..d250c08 --- /dev/null +++ b/node_modules/yargs/build/lib/utils/is-promise.js @@ -0,0 +1,5 @@ +export function isPromise(maybePromise) { +    return (!!maybePromise && +        !!maybePromise.then && +        typeof maybePromise.then === 'function'); +} diff --git a/node_modules/yargs/build/lib/utils/levenshtein.js b/node_modules/yargs/build/lib/utils/levenshtein.js new file mode 100644 index 0000000..068168e --- /dev/null +++ b/node_modules/yargs/build/lib/utils/levenshtein.js @@ -0,0 +1,26 @@ +export function levenshtein(a, b) { +    if (a.length === 0) +        return b.length; +    if (b.length === 0) +        return a.length; +    const matrix = []; +    let i; +    for (i = 0; i <= b.length; i++) { +        matrix[i] = [i]; +    } +    let j; +    for (j = 0; j <= a.length; j++) { +        matrix[0][j] = j; +    } +    for (i = 1; i <= b.length; i++) { +        for (j = 1; j <= a.length; j++) { +            if (b.charAt(i - 1) === a.charAt(j - 1)) { +                matrix[i][j] = matrix[i - 1][j - 1]; +            } +            else { +                matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, Math.min(matrix[i][j - 1] + 1, matrix[i - 1][j] + 1)); +            } +        } +    } +    return matrix[b.length][a.length]; +} diff --git a/node_modules/yargs/build/lib/utils/obj-filter.js b/node_modules/yargs/build/lib/utils/obj-filter.js new file mode 100644 index 0000000..cd68ad2 --- /dev/null +++ b/node_modules/yargs/build/lib/utils/obj-filter.js @@ -0,0 +1,10 @@ +import { objectKeys } from '../typings/common-types.js'; +export function objFilter(original = {}, filter = () => true) { +    const obj = {}; +    objectKeys(original).forEach(key => { +        if (filter(key, original[key])) { +            obj[key] = original[key]; +        } +    }); +    return obj; +} diff --git a/node_modules/yargs/build/lib/utils/process-argv.js b/node_modules/yargs/build/lib/utils/process-argv.js new file mode 100644 index 0000000..74dc9e4 --- /dev/null +++ b/node_modules/yargs/build/lib/utils/process-argv.js @@ -0,0 +1,17 @@ +function getProcessArgvBinIndex() { +    if (isBundledElectronApp()) +        return 0; +    return 1; +} +function isBundledElectronApp() { +    return isElectronApp() && !process.defaultApp; +} +function isElectronApp() { +    return !!process.versions.electron; +} +export function hideBin(argv) { +    return argv.slice(getProcessArgvBinIndex() + 1); +} +export function getProcessArgvBin() { +    return process.argv[getProcessArgvBinIndex()]; +} diff --git a/node_modules/yargs/build/lib/utils/set-blocking.js b/node_modules/yargs/build/lib/utils/set-blocking.js new file mode 100644 index 0000000..88fb806 --- /dev/null +++ b/node_modules/yargs/build/lib/utils/set-blocking.js @@ -0,0 +1,12 @@ +export default function setBlocking(blocking) { +    if (typeof process === 'undefined') +        return; +    [process.stdout, process.stderr].forEach(_stream => { +        const stream = _stream; +        if (stream._handle && +            stream.isTTY && +            typeof stream._handle.setBlocking === 'function') { +            stream._handle.setBlocking(blocking); +        } +    }); +} diff --git a/node_modules/yargs/build/lib/utils/which-module.js b/node_modules/yargs/build/lib/utils/which-module.js new file mode 100644 index 0000000..5974e22 --- /dev/null +++ b/node_modules/yargs/build/lib/utils/which-module.js @@ -0,0 +1,10 @@ +export default function whichModule(exported) { +    if (typeof require === 'undefined') +        return null; +    for (let i = 0, files = Object.keys(require.cache), mod; i < files.length; i++) { +        mod = require.cache[files[i]]; +        if (mod.exports === exported) +            return mod; +    } +    return null; +} diff --git a/node_modules/yargs/build/lib/validation.js b/node_modules/yargs/build/lib/validation.js new file mode 100644 index 0000000..dd77e07 --- /dev/null +++ b/node_modules/yargs/build/lib/validation.js @@ -0,0 +1,308 @@ +import { argsert } from './argsert.js'; +import { assertNotStrictEqual, } from './typings/common-types.js'; +import { levenshtein as distance } from './utils/levenshtein.js'; +import { objFilter } from './utils/obj-filter.js'; +const specialKeys = ['$0', '--', '_']; +export function validation(yargs, usage, y18n, shim) { +    const __ = y18n.__; +    const __n = y18n.__n; +    const self = {}; +    self.nonOptionCount = function nonOptionCount(argv) { +        const demandedCommands = yargs.getDemandedCommands(); +        const positionalCount = argv._.length + (argv['--'] ? argv['--'].length : 0); +        const _s = positionalCount - yargs.getContext().commands.length; +        if (demandedCommands._ && +            (_s < demandedCommands._.min || _s > demandedCommands._.max)) { +            if (_s < demandedCommands._.min) { +                if (demandedCommands._.minMsg !== undefined) { +                    usage.fail(demandedCommands._.minMsg +                        ? demandedCommands._.minMsg +                            .replace(/\$0/g, _s.toString()) +                            .replace(/\$1/, demandedCommands._.min.toString()) +                        : null); +                } +                else { +                    usage.fail(__n('Not enough non-option arguments: got %s, need at least %s', 'Not enough non-option arguments: got %s, need at least %s', _s, _s.toString(), demandedCommands._.min.toString())); +                } +            } +            else if (_s > demandedCommands._.max) { +                if (demandedCommands._.maxMsg !== undefined) { +                    usage.fail(demandedCommands._.maxMsg +                        ? demandedCommands._.maxMsg +                            .replace(/\$0/g, _s.toString()) +                            .replace(/\$1/, demandedCommands._.max.toString()) +                        : null); +                } +                else { +                    usage.fail(__n('Too many non-option arguments: got %s, maximum of %s', 'Too many non-option arguments: got %s, maximum of %s', _s, _s.toString(), demandedCommands._.max.toString())); +                } +            } +        } +    }; +    self.positionalCount = function positionalCount(required, observed) { +        if (observed < required) { +            usage.fail(__n('Not enough non-option arguments: got %s, need at least %s', 'Not enough non-option arguments: got %s, need at least %s', observed, observed + '', required + '')); +        } +    }; +    self.requiredArguments = function requiredArguments(argv) { +        const demandedOptions = yargs.getDemandedOptions(); +        let missing = null; +        for (const key of Object.keys(demandedOptions)) { +            if (!Object.prototype.hasOwnProperty.call(argv, key) || +                typeof argv[key] === 'undefined') { +                missing = missing || {}; +                missing[key] = demandedOptions[key]; +            } +        } +        if (missing) { +            const customMsgs = []; +            for (const key of Object.keys(missing)) { +                const msg = missing[key]; +                if (msg && customMsgs.indexOf(msg) < 0) { +                    customMsgs.push(msg); +                } +            } +            const customMsg = customMsgs.length ? `\n${customMsgs.join('\n')}` : ''; +            usage.fail(__n('Missing required argument: %s', 'Missing required arguments: %s', Object.keys(missing).length, Object.keys(missing).join(', ') + customMsg)); +        } +    }; +    self.unknownArguments = function unknownArguments(argv, aliases, positionalMap, isDefaultCommand, checkPositionals = true) { +        const commandKeys = yargs.getCommandInstance().getCommands(); +        const unknown = []; +        const currentContext = yargs.getContext(); +        Object.keys(argv).forEach(key => { +            if (specialKeys.indexOf(key) === -1 && +                !Object.prototype.hasOwnProperty.call(positionalMap, key) && +                !Object.prototype.hasOwnProperty.call(yargs._getParseContext(), key) && +                !self.isValidAndSomeAliasIsNotNew(key, aliases)) { +                unknown.push(key); +            } +        }); +        if (checkPositionals && +            (currentContext.commands.length > 0 || +                commandKeys.length > 0 || +                isDefaultCommand)) { +            argv._.slice(currentContext.commands.length).forEach(key => { +                if (commandKeys.indexOf('' + key) === -1) { +                    unknown.push('' + key); +                } +            }); +        } +        if (unknown.length > 0) { +            usage.fail(__n('Unknown argument: %s', 'Unknown arguments: %s', unknown.length, unknown.join(', '))); +        } +    }; +    self.unknownCommands = function unknownCommands(argv) { +        const commandKeys = yargs.getCommandInstance().getCommands(); +        const unknown = []; +        const currentContext = yargs.getContext(); +        if (currentContext.commands.length > 0 || commandKeys.length > 0) { +            argv._.slice(currentContext.commands.length).forEach(key => { +                if (commandKeys.indexOf('' + key) === -1) { +                    unknown.push('' + key); +                } +            }); +        } +        if (unknown.length > 0) { +            usage.fail(__n('Unknown command: %s', 'Unknown commands: %s', unknown.length, unknown.join(', '))); +            return true; +        } +        else { +            return false; +        } +    }; +    self.isValidAndSomeAliasIsNotNew = function isValidAndSomeAliasIsNotNew(key, aliases) { +        if (!Object.prototype.hasOwnProperty.call(aliases, key)) { +            return false; +        } +        const newAliases = yargs.parsed.newAliases; +        for (const a of [key, ...aliases[key]]) { +            if (!Object.prototype.hasOwnProperty.call(newAliases, a) || +                !newAliases[key]) { +                return true; +            } +        } +        return false; +    }; +    self.limitedChoices = function limitedChoices(argv) { +        const options = yargs.getOptions(); +        const invalid = {}; +        if (!Object.keys(options.choices).length) +            return; +        Object.keys(argv).forEach(key => { +            if (specialKeys.indexOf(key) === -1 && +                Object.prototype.hasOwnProperty.call(options.choices, key)) { +                [].concat(argv[key]).forEach(value => { +                    if (options.choices[key].indexOf(value) === -1 && +                        value !== undefined) { +                        invalid[key] = (invalid[key] || []).concat(value); +                    } +                }); +            } +        }); +        const invalidKeys = Object.keys(invalid); +        if (!invalidKeys.length) +            return; +        let msg = __('Invalid values:'); +        invalidKeys.forEach(key => { +            msg += `\n  ${__('Argument: %s, Given: %s, Choices: %s', key, usage.stringifiedValues(invalid[key]), usage.stringifiedValues(options.choices[key]))}`; +        }); +        usage.fail(msg); +    }; +    let checks = []; +    self.check = function check(f, global) { +        checks.push({ +            func: f, +            global, +        }); +    }; +    self.customChecks = function customChecks(argv, aliases) { +        for (let i = 0, f; (f = checks[i]) !== undefined; i++) { +            const func = f.func; +            let result = null; +            try { +                result = func(argv, aliases); +            } +            catch (err) { +                usage.fail(err.message ? err.message : err, err); +                continue; +            } +            if (!result) { +                usage.fail(__('Argument check failed: %s', func.toString())); +            } +            else if (typeof result === 'string' || result instanceof Error) { +                usage.fail(result.toString(), result); +            } +        } +    }; +    let implied = {}; +    self.implies = function implies(key, value) { +        argsert('<string|object> [array|number|string]', [key, value], arguments.length); +        if (typeof key === 'object') { +            Object.keys(key).forEach(k => { +                self.implies(k, key[k]); +            }); +        } +        else { +            yargs.global(key); +            if (!implied[key]) { +                implied[key] = []; +            } +            if (Array.isArray(value)) { +                value.forEach(i => self.implies(key, i)); +            } +            else { +                assertNotStrictEqual(value, undefined, shim); +                implied[key].push(value); +            } +        } +    }; +    self.getImplied = function getImplied() { +        return implied; +    }; +    function keyExists(argv, val) { +        const num = Number(val); +        val = isNaN(num) ? val : num; +        if (typeof val === 'number') { +            val = argv._.length >= val; +        } +        else if (val.match(/^--no-.+/)) { +            val = val.match(/^--no-(.+)/)[1]; +            val = !argv[val]; +        } +        else { +            val = argv[val]; +        } +        return val; +    } +    self.implications = function implications(argv) { +        const implyFail = []; +        Object.keys(implied).forEach(key => { +            const origKey = key; +            (implied[key] || []).forEach(value => { +                let key = origKey; +                const origValue = value; +                key = keyExists(argv, key); +                value = keyExists(argv, value); +                if (key && !value) { +                    implyFail.push(` ${origKey} -> ${origValue}`); +                } +            }); +        }); +        if (implyFail.length) { +            let msg = `${__('Implications failed:')}\n`; +            implyFail.forEach(value => { +                msg += value; +            }); +            usage.fail(msg); +        } +    }; +    let conflicting = {}; +    self.conflicts = function conflicts(key, value) { +        argsert('<string|object> [array|string]', [key, value], arguments.length); +        if (typeof key === 'object') { +            Object.keys(key).forEach(k => { +                self.conflicts(k, key[k]); +            }); +        } +        else { +            yargs.global(key); +            if (!conflicting[key]) { +                conflicting[key] = []; +            } +            if (Array.isArray(value)) { +                value.forEach(i => self.conflicts(key, i)); +            } +            else { +                conflicting[key].push(value); +            } +        } +    }; +    self.getConflicting = () => conflicting; +    self.conflicting = function conflictingFn(argv) { +        Object.keys(argv).forEach(key => { +            if (conflicting[key]) { +                conflicting[key].forEach(value => { +                    if (value && argv[key] !== undefined && argv[value] !== undefined) { +                        usage.fail(__('Arguments %s and %s are mutually exclusive', key, value)); +                    } +                }); +            } +        }); +    }; +    self.recommendCommands = function recommendCommands(cmd, potentialCommands) { +        const threshold = 3; +        potentialCommands = potentialCommands.sort((a, b) => b.length - a.length); +        let recommended = null; +        let bestDistance = Infinity; +        for (let i = 0, candidate; (candidate = potentialCommands[i]) !== undefined; i++) { +            const d = distance(cmd, candidate); +            if (d <= threshold && d < bestDistance) { +                bestDistance = d; +                recommended = candidate; +            } +        } +        if (recommended) +            usage.fail(__('Did you mean %s?', recommended)); +    }; +    self.reset = function reset(localLookup) { +        implied = objFilter(implied, k => !localLookup[k]); +        conflicting = objFilter(conflicting, k => !localLookup[k]); +        checks = checks.filter(c => c.global); +        return self; +    }; +    const frozens = []; +    self.freeze = function freeze() { +        frozens.push({ +            implied, +            checks, +            conflicting, +        }); +    }; +    self.unfreeze = function unfreeze() { +        const frozen = frozens.pop(); +        assertNotStrictEqual(frozen, undefined, shim); +        ({ implied, checks, conflicting } = frozen); +    }; +    return self; +} diff --git a/node_modules/yargs/build/lib/yargs-factory.js b/node_modules/yargs/build/lib/yargs-factory.js new file mode 100644 index 0000000..741b329 --- /dev/null +++ b/node_modules/yargs/build/lib/yargs-factory.js @@ -0,0 +1,1143 @@ +import { command as Command, } from './command.js'; +import { assertNotStrictEqual, assertSingleKey, objectKeys, } from './typings/common-types.js'; +import { YError } from './yerror.js'; +import { usage as Usage } from './usage.js'; +import { argsert } from './argsert.js'; +import { completion as Completion, } from './completion.js'; +import { validation as Validation, } from './validation.js'; +import { objFilter } from './utils/obj-filter.js'; +import { applyExtends } from './utils/apply-extends.js'; +import { globalMiddlewareFactory, } from './middleware.js'; +import { isPromise } from './utils/is-promise.js'; +import setBlocking from './utils/set-blocking.js'; +let shim; +export function YargsWithShim(_shim) { +    shim = _shim; +    return Yargs; +} +function Yargs(processArgs = [], cwd = shim.process.cwd(), parentRequire) { +    const self = {}; +    let command; +    let completion = null; +    let groups = {}; +    const globalMiddleware = []; +    let output = ''; +    const preservedGroups = {}; +    let usage; +    let validation; +    let handlerFinishCommand = null; +    const y18n = shim.y18n; +    self.middleware = globalMiddlewareFactory(globalMiddleware, self); +    self.scriptName = function (scriptName) { +        self.customScriptName = true; +        self.$0 = scriptName; +        return self; +    }; +    let default$0; +    if (/\b(node|iojs|electron)(\.exe)?$/.test(shim.process.argv()[0])) { +        default$0 = shim.process.argv().slice(1, 2); +    } +    else { +        default$0 = shim.process.argv().slice(0, 1); +    } +    self.$0 = default$0 +        .map(x => { +        const b = rebase(cwd, x); +        return x.match(/^(\/|([a-zA-Z]:)?\\)/) && b.length < x.length ? b : x; +    }) +        .join(' ') +        .trim(); +    if (shim.getEnv('_') && shim.getProcessArgvBin() === shim.getEnv('_')) { +        self.$0 = shim +            .getEnv('_') +            .replace(`${shim.path.dirname(shim.process.execPath())}/`, ''); +    } +    const context = { resets: -1, commands: [], fullCommands: [], files: [] }; +    self.getContext = () => context; +    let hasOutput = false; +    let exitError = null; +    self.exit = (code, err) => { +        hasOutput = true; +        exitError = err; +        if (exitProcess) +            shim.process.exit(code); +    }; +    let completionCommand = null; +    self.completion = function (cmd, desc, fn) { +        argsert('[string] [string|boolean|function] [function]', [cmd, desc, fn], arguments.length); +        if (typeof desc === 'function') { +            fn = desc; +            desc = undefined; +        } +        completionCommand = cmd || completionCommand || 'completion'; +        if (!desc && desc !== false) { +            desc = 'generate completion script'; +        } +        self.command(completionCommand, desc); +        if (fn) +            completion.registerFunction(fn); +        return self; +    }; +    let options; +    self.resetOptions = self.reset = function resetOptions(aliases = {}) { +        context.resets++; +        options = options || {}; +        const tmpOptions = {}; +        tmpOptions.local = options.local ? options.local : []; +        tmpOptions.configObjects = options.configObjects +            ? options.configObjects +            : []; +        const localLookup = {}; +        tmpOptions.local.forEach(l => { +            localLookup[l] = true; +            (aliases[l] || []).forEach(a => { +                localLookup[a] = true; +            }); +        }); +        Object.assign(preservedGroups, Object.keys(groups).reduce((acc, groupName) => { +            const keys = groups[groupName].filter(key => !(key in localLookup)); +            if (keys.length > 0) { +                acc[groupName] = keys; +            } +            return acc; +        }, {})); +        groups = {}; +        const arrayOptions = [ +            'array', +            'boolean', +            'string', +            'skipValidation', +            'count', +            'normalize', +            'number', +            'hiddenOptions', +        ]; +        const objectOptions = [ +            'narg', +            'key', +            'alias', +            'default', +            'defaultDescription', +            'config', +            'choices', +            'demandedOptions', +            'demandedCommands', +            'coerce', +            'deprecatedOptions', +        ]; +        arrayOptions.forEach(k => { +            tmpOptions[k] = (options[k] || []).filter((k) => !localLookup[k]); +        }); +        objectOptions.forEach((k) => { +            tmpOptions[k] = objFilter(options[k], k => !localLookup[k]); +        }); +        tmpOptions.envPrefix = options.envPrefix; +        options = tmpOptions; +        usage = usage ? usage.reset(localLookup) : Usage(self, y18n, shim); +        validation = validation +            ? validation.reset(localLookup) +            : Validation(self, usage, y18n, shim); +        command = command +            ? command.reset() +            : Command(self, usage, validation, globalMiddleware, shim); +        if (!completion) +            completion = Completion(self, usage, command, shim); +        completionCommand = null; +        output = ''; +        exitError = null; +        hasOutput = false; +        self.parsed = false; +        return self; +    }; +    self.resetOptions(); +    const frozens = []; +    function freeze() { +        frozens.push({ +            options, +            configObjects: options.configObjects.slice(0), +            exitProcess, +            groups, +            strict, +            strictCommands, +            strictOptions, +            completionCommand, +            output, +            exitError, +            hasOutput, +            parsed: self.parsed, +            parseFn, +            parseContext, +            handlerFinishCommand, +        }); +        usage.freeze(); +        validation.freeze(); +        command.freeze(); +    } +    function unfreeze() { +        const frozen = frozens.pop(); +        assertNotStrictEqual(frozen, undefined, shim); +        let configObjects; +        ({ +            options, +            configObjects, +            exitProcess, +            groups, +            output, +            exitError, +            hasOutput, +            parsed: self.parsed, +            strict, +            strictCommands, +            strictOptions, +            completionCommand, +            parseFn, +            parseContext, +            handlerFinishCommand, +        } = frozen); +        options.configObjects = configObjects; +        usage.unfreeze(); +        validation.unfreeze(); +        command.unfreeze(); +    } +    self.boolean = function (keys) { +        argsert('<array|string>', [keys], arguments.length); +        populateParserHintArray('boolean', keys); +        return self; +    }; +    self.array = function (keys) { +        argsert('<array|string>', [keys], arguments.length); +        populateParserHintArray('array', keys); +        return self; +    }; +    self.number = function (keys) { +        argsert('<array|string>', [keys], arguments.length); +        populateParserHintArray('number', keys); +        return self; +    }; +    self.normalize = function (keys) { +        argsert('<array|string>', [keys], arguments.length); +        populateParserHintArray('normalize', keys); +        return self; +    }; +    self.count = function (keys) { +        argsert('<array|string>', [keys], arguments.length); +        populateParserHintArray('count', keys); +        return self; +    }; +    self.string = function (keys) { +        argsert('<array|string>', [keys], arguments.length); +        populateParserHintArray('string', keys); +        return self; +    }; +    self.requiresArg = function (keys) { +        argsert('<array|string|object> [number]', [keys], arguments.length); +        if (typeof keys === 'string' && options.narg[keys]) { +            return self; +        } +        else { +            populateParserHintSingleValueDictionary(self.requiresArg, 'narg', keys, NaN); +        } +        return self; +    }; +    self.skipValidation = function (keys) { +        argsert('<array|string>', [keys], arguments.length); +        populateParserHintArray('skipValidation', keys); +        return self; +    }; +    function populateParserHintArray(type, keys) { +        keys = [].concat(keys); +        keys.forEach(key => { +            key = sanitizeKey(key); +            options[type].push(key); +        }); +    } +    self.nargs = function (key, value) { +        argsert('<string|object|array> [number]', [key, value], arguments.length); +        populateParserHintSingleValueDictionary(self.nargs, 'narg', key, value); +        return self; +    }; +    self.choices = function (key, value) { +        argsert('<object|string|array> [string|array]', [key, value], arguments.length); +        populateParserHintArrayDictionary(self.choices, 'choices', key, value); +        return self; +    }; +    self.alias = function (key, value) { +        argsert('<object|string|array> [string|array]', [key, value], arguments.length); +        populateParserHintArrayDictionary(self.alias, 'alias', key, value); +        return self; +    }; +    self.default = self.defaults = function (key, value, defaultDescription) { +        argsert('<object|string|array> [*] [string]', [key, value, defaultDescription], arguments.length); +        if (defaultDescription) { +            assertSingleKey(key, shim); +            options.defaultDescription[key] = defaultDescription; +        } +        if (typeof value === 'function') { +            assertSingleKey(key, shim); +            if (!options.defaultDescription[key]) +                options.defaultDescription[key] = usage.functionDescription(value); +            value = value.call(); +        } +        populateParserHintSingleValueDictionary(self.default, 'default', key, value); +        return self; +    }; +    self.describe = function (key, desc) { +        argsert('<object|string|array> [string]', [key, desc], arguments.length); +        setKey(key, true); +        usage.describe(key, desc); +        return self; +    }; +    function setKey(key, set) { +        populateParserHintSingleValueDictionary(setKey, 'key', key, set); +        return self; +    } +    function demandOption(keys, msg) { +        argsert('<object|string|array> [string]', [keys, msg], arguments.length); +        populateParserHintSingleValueDictionary(self.demandOption, 'demandedOptions', keys, msg); +        return self; +    } +    self.demandOption = demandOption; +    self.coerce = function (keys, value) { +        argsert('<object|string|array> [function]', [keys, value], arguments.length); +        populateParserHintSingleValueDictionary(self.coerce, 'coerce', keys, value); +        return self; +    }; +    function populateParserHintSingleValueDictionary(builder, type, key, value) { +        populateParserHintDictionary(builder, type, key, value, (type, key, value) => { +            options[type][key] = value; +        }); +    } +    function populateParserHintArrayDictionary(builder, type, key, value) { +        populateParserHintDictionary(builder, type, key, value, (type, key, value) => { +            options[type][key] = (options[type][key] || []).concat(value); +        }); +    } +    function populateParserHintDictionary(builder, type, key, value, singleKeyHandler) { +        if (Array.isArray(key)) { +            key.forEach(k => { +                builder(k, value); +            }); +        } +        else if (((key) => typeof key === 'object')(key)) { +            for (const k of objectKeys(key)) { +                builder(k, key[k]); +            } +        } +        else { +            singleKeyHandler(type, sanitizeKey(key), value); +        } +    } +    function sanitizeKey(key) { +        if (key === '__proto__') +            return '___proto___'; +        return key; +    } +    function deleteFromParserHintObject(optionKey) { +        objectKeys(options).forEach((hintKey) => { +            if (((key) => key === 'configObjects')(hintKey)) +                return; +            const hint = options[hintKey]; +            if (Array.isArray(hint)) { +                if (~hint.indexOf(optionKey)) +                    hint.splice(hint.indexOf(optionKey), 1); +            } +            else if (typeof hint === 'object') { +                delete hint[optionKey]; +            } +        }); +        delete usage.getDescriptions()[optionKey]; +    } +    self.config = function config(key = 'config', msg, parseFn) { +        argsert('[object|string] [string|function] [function]', [key, msg, parseFn], arguments.length); +        if (typeof key === 'object' && !Array.isArray(key)) { +            key = applyExtends(key, cwd, self.getParserConfiguration()['deep-merge-config'] || false, shim); +            options.configObjects = (options.configObjects || []).concat(key); +            return self; +        } +        if (typeof msg === 'function') { +            parseFn = msg; +            msg = undefined; +        } +        self.describe(key, msg || usage.deferY18nLookup('Path to JSON config file')); +        (Array.isArray(key) ? key : [key]).forEach(k => { +            options.config[k] = parseFn || true; +        }); +        return self; +    }; +    self.example = function (cmd, description) { +        argsert('<string|array> [string]', [cmd, description], arguments.length); +        if (Array.isArray(cmd)) { +            cmd.forEach(exampleParams => self.example(...exampleParams)); +        } +        else { +            usage.example(cmd, description); +        } +        return self; +    }; +    self.command = function (cmd, description, builder, handler, middlewares, deprecated) { +        argsert('<string|array|object> [string|boolean] [function|object] [function] [array] [boolean|string]', [cmd, description, builder, handler, middlewares, deprecated], arguments.length); +        command.addHandler(cmd, description, builder, handler, middlewares, deprecated); +        return self; +    }; +    self.commandDir = function (dir, opts) { +        argsert('<string> [object]', [dir, opts], arguments.length); +        const req = parentRequire || shim.require; +        command.addDirectory(dir, self.getContext(), req, shim.getCallerFile(), opts); +        return self; +    }; +    self.demand = self.required = self.require = function demand(keys, max, msg) { +        if (Array.isArray(max)) { +            max.forEach(key => { +                assertNotStrictEqual(msg, true, shim); +                demandOption(key, msg); +            }); +            max = Infinity; +        } +        else if (typeof max !== 'number') { +            msg = max; +            max = Infinity; +        } +        if (typeof keys === 'number') { +            assertNotStrictEqual(msg, true, shim); +            self.demandCommand(keys, max, msg, msg); +        } +        else if (Array.isArray(keys)) { +            keys.forEach(key => { +                assertNotStrictEqual(msg, true, shim); +                demandOption(key, msg); +            }); +        } +        else { +            if (typeof msg === 'string') { +                demandOption(keys, msg); +            } +            else if (msg === true || typeof msg === 'undefined') { +                demandOption(keys); +            } +        } +        return self; +    }; +    self.demandCommand = function demandCommand(min = 1, max, minMsg, maxMsg) { +        argsert('[number] [number|string] [string|null|undefined] [string|null|undefined]', [min, max, minMsg, maxMsg], arguments.length); +        if (typeof max !== 'number') { +            minMsg = max; +            max = Infinity; +        } +        self.global('_', false); +        options.demandedCommands._ = { +            min, +            max, +            minMsg, +            maxMsg, +        }; +        return self; +    }; +    self.getDemandedOptions = () => { +        argsert([], 0); +        return options.demandedOptions; +    }; +    self.getDemandedCommands = () => { +        argsert([], 0); +        return options.demandedCommands; +    }; +    self.deprecateOption = function deprecateOption(option, message) { +        argsert('<string> [string|boolean]', [option, message], arguments.length); +        options.deprecatedOptions[option] = message; +        return self; +    }; +    self.getDeprecatedOptions = () => { +        argsert([], 0); +        return options.deprecatedOptions; +    }; +    self.implies = function (key, value) { +        argsert('<string|object> [number|string|array]', [key, value], arguments.length); +        validation.implies(key, value); +        return self; +    }; +    self.conflicts = function (key1, key2) { +        argsert('<string|object> [string|array]', [key1, key2], arguments.length); +        validation.conflicts(key1, key2); +        return self; +    }; +    self.usage = function (msg, description, builder, handler) { +        argsert('<string|null|undefined> [string|boolean] [function|object] [function]', [msg, description, builder, handler], arguments.length); +        if (description !== undefined) { +            assertNotStrictEqual(msg, null, shim); +            if ((msg || '').match(/^\$0( |$)/)) { +                return self.command(msg, description, builder, handler); +            } +            else { +                throw new YError('.usage() description must start with $0 if being used as alias for .command()'); +            } +        } +        else { +            usage.usage(msg); +            return self; +        } +    }; +    self.epilogue = self.epilog = function (msg) { +        argsert('<string>', [msg], arguments.length); +        usage.epilog(msg); +        return self; +    }; +    self.fail = function (f) { +        argsert('<function>', [f], arguments.length); +        usage.failFn(f); +        return self; +    }; +    self.onFinishCommand = function (f) { +        argsert('<function>', [f], arguments.length); +        handlerFinishCommand = f; +        return self; +    }; +    self.getHandlerFinishCommand = () => handlerFinishCommand; +    self.check = function (f, _global) { +        argsert('<function> [boolean]', [f, _global], arguments.length); +        validation.check(f, _global !== false); +        return self; +    }; +    self.global = function global(globals, global) { +        argsert('<string|array> [boolean]', [globals, global], arguments.length); +        globals = [].concat(globals); +        if (global !== false) { +            options.local = options.local.filter(l => globals.indexOf(l) === -1); +        } +        else { +            globals.forEach(g => { +                if (options.local.indexOf(g) === -1) +                    options.local.push(g); +            }); +        } +        return self; +    }; +    self.pkgConf = function pkgConf(key, rootPath) { +        argsert('<string> [string]', [key, rootPath], arguments.length); +        let conf = null; +        const obj = pkgUp(rootPath || cwd); +        if (obj[key] && typeof obj[key] === 'object') { +            conf = applyExtends(obj[key], rootPath || cwd, self.getParserConfiguration()['deep-merge-config'] || false, shim); +            options.configObjects = (options.configObjects || []).concat(conf); +        } +        return self; +    }; +    const pkgs = {}; +    function pkgUp(rootPath) { +        const npath = rootPath || '*'; +        if (pkgs[npath]) +            return pkgs[npath]; +        let obj = {}; +        try { +            let startDir = rootPath || shim.mainFilename; +            if (!rootPath && shim.path.extname(startDir)) { +                startDir = shim.path.dirname(startDir); +            } +            const pkgJsonPath = shim.findUp(startDir, (dir, names) => { +                if (names.includes('package.json')) { +                    return 'package.json'; +                } +                else { +                    return undefined; +                } +            }); +            assertNotStrictEqual(pkgJsonPath, undefined, shim); +            obj = JSON.parse(shim.readFileSync(pkgJsonPath, 'utf8')); +        } +        catch (_noop) { } +        pkgs[npath] = obj || {}; +        return pkgs[npath]; +    } +    let parseFn = null; +    let parseContext = null; +    self.parse = function parse(args, shortCircuit, _parseFn) { +        argsert('[string|array] [function|boolean|object] [function]', [args, shortCircuit, _parseFn], arguments.length); +        freeze(); +        if (typeof args === 'undefined') { +            const argv = self._parseArgs(processArgs); +            const tmpParsed = self.parsed; +            unfreeze(); +            self.parsed = tmpParsed; +            return argv; +        } +        if (typeof shortCircuit === 'object') { +            parseContext = shortCircuit; +            shortCircuit = _parseFn; +        } +        if (typeof shortCircuit === 'function') { +            parseFn = shortCircuit; +            shortCircuit = false; +        } +        if (!shortCircuit) +            processArgs = args; +        if (parseFn) +            exitProcess = false; +        const parsed = self._parseArgs(args, !!shortCircuit); +        completion.setParsed(self.parsed); +        if (parseFn) +            parseFn(exitError, parsed, output); +        unfreeze(); +        return parsed; +    }; +    self._getParseContext = () => parseContext || {}; +    self._hasParseCallback = () => !!parseFn; +    self.option = self.options = function option(key, opt) { +        argsert('<string|object> [object]', [key, opt], arguments.length); +        if (typeof key === 'object') { +            Object.keys(key).forEach(k => { +                self.options(k, key[k]); +            }); +        } +        else { +            if (typeof opt !== 'object') { +                opt = {}; +            } +            options.key[key] = true; +            if (opt.alias) +                self.alias(key, opt.alias); +            const deprecate = opt.deprecate || opt.deprecated; +            if (deprecate) { +                self.deprecateOption(key, deprecate); +            } +            const demand = opt.demand || opt.required || opt.require; +            if (demand) { +                self.demand(key, demand); +            } +            if (opt.demandOption) { +                self.demandOption(key, typeof opt.demandOption === 'string' ? opt.demandOption : undefined); +            } +            if (opt.conflicts) { +                self.conflicts(key, opt.conflicts); +            } +            if ('default' in opt) { +                self.default(key, opt.default); +            } +            if (opt.implies !== undefined) { +                self.implies(key, opt.implies); +            } +            if (opt.nargs !== undefined) { +                self.nargs(key, opt.nargs); +            } +            if (opt.config) { +                self.config(key, opt.configParser); +            } +            if (opt.normalize) { +                self.normalize(key); +            } +            if (opt.choices) { +                self.choices(key, opt.choices); +            } +            if (opt.coerce) { +                self.coerce(key, opt.coerce); +            } +            if (opt.group) { +                self.group(key, opt.group); +            } +            if (opt.boolean || opt.type === 'boolean') { +                self.boolean(key); +                if (opt.alias) +                    self.boolean(opt.alias); +            } +            if (opt.array || opt.type === 'array') { +                self.array(key); +                if (opt.alias) +                    self.array(opt.alias); +            } +            if (opt.number || opt.type === 'number') { +                self.number(key); +                if (opt.alias) +                    self.number(opt.alias); +            } +            if (opt.string || opt.type === 'string') { +                self.string(key); +                if (opt.alias) +                    self.string(opt.alias); +            } +            if (opt.count || opt.type === 'count') { +                self.count(key); +            } +            if (typeof opt.global === 'boolean') { +                self.global(key, opt.global); +            } +            if (opt.defaultDescription) { +                options.defaultDescription[key] = opt.defaultDescription; +            } +            if (opt.skipValidation) { +                self.skipValidation(key); +            } +            const desc = opt.describe || opt.description || opt.desc; +            self.describe(key, desc); +            if (opt.hidden) { +                self.hide(key); +            } +            if (opt.requiresArg) { +                self.requiresArg(key); +            } +        } +        return self; +    }; +    self.getOptions = () => options; +    self.positional = function (key, opts) { +        argsert('<string> <object>', [key, opts], arguments.length); +        if (context.resets === 0) { +            throw new YError(".positional() can only be called in a command's builder function"); +        } +        const supportedOpts = [ +            'default', +            'defaultDescription', +            'implies', +            'normalize', +            'choices', +            'conflicts', +            'coerce', +            'type', +            'describe', +            'desc', +            'description', +            'alias', +        ]; +        opts = objFilter(opts, (k, v) => { +            let accept = supportedOpts.indexOf(k) !== -1; +            if (k === 'type' && ['string', 'number', 'boolean'].indexOf(v) === -1) +                accept = false; +            return accept; +        }); +        const fullCommand = context.fullCommands[context.fullCommands.length - 1]; +        const parseOptions = fullCommand +            ? command.cmdToParseOptions(fullCommand) +            : { +                array: [], +                alias: {}, +                default: {}, +                demand: {}, +            }; +        objectKeys(parseOptions).forEach(pk => { +            const parseOption = parseOptions[pk]; +            if (Array.isArray(parseOption)) { +                if (parseOption.indexOf(key) !== -1) +                    opts[pk] = true; +            } +            else { +                if (parseOption[key] && !(pk in opts)) +                    opts[pk] = parseOption[key]; +            } +        }); +        self.group(key, usage.getPositionalGroupName()); +        return self.option(key, opts); +    }; +    self.group = function group(opts, groupName) { +        argsert('<string|array> <string>', [opts, groupName], arguments.length); +        const existing = preservedGroups[groupName] || groups[groupName]; +        if (preservedGroups[groupName]) { +            delete preservedGroups[groupName]; +        } +        const seen = {}; +        groups[groupName] = (existing || []).concat(opts).filter(key => { +            if (seen[key]) +                return false; +            return (seen[key] = true); +        }); +        return self; +    }; +    self.getGroups = () => Object.assign({}, groups, preservedGroups); +    self.env = function (prefix) { +        argsert('[string|boolean]', [prefix], arguments.length); +        if (prefix === false) +            delete options.envPrefix; +        else +            options.envPrefix = prefix || ''; +        return self; +    }; +    self.wrap = function (cols) { +        argsert('<number|null|undefined>', [cols], arguments.length); +        usage.wrap(cols); +        return self; +    }; +    let strict = false; +    self.strict = function (enabled) { +        argsert('[boolean]', [enabled], arguments.length); +        strict = enabled !== false; +        return self; +    }; +    self.getStrict = () => strict; +    let strictCommands = false; +    self.strictCommands = function (enabled) { +        argsert('[boolean]', [enabled], arguments.length); +        strictCommands = enabled !== false; +        return self; +    }; +    self.getStrictCommands = () => strictCommands; +    let strictOptions = false; +    self.strictOptions = function (enabled) { +        argsert('[boolean]', [enabled], arguments.length); +        strictOptions = enabled !== false; +        return self; +    }; +    self.getStrictOptions = () => strictOptions; +    let parserConfig = {}; +    self.parserConfiguration = function parserConfiguration(config) { +        argsert('<object>', [config], arguments.length); +        parserConfig = config; +        return self; +    }; +    self.getParserConfiguration = () => parserConfig; +    self.showHelp = function (level) { +        argsert('[string|function]', [level], arguments.length); +        if (!self.parsed) +            self._parseArgs(processArgs); +        if (command.hasDefaultCommand()) { +            context.resets++; +            command.runDefaultBuilderOn(self); +        } +        usage.showHelp(level); +        return self; +    }; +    let versionOpt = null; +    self.version = function version(opt, msg, ver) { +        const defaultVersionOpt = 'version'; +        argsert('[boolean|string] [string] [string]', [opt, msg, ver], arguments.length); +        if (versionOpt) { +            deleteFromParserHintObject(versionOpt); +            usage.version(undefined); +            versionOpt = null; +        } +        if (arguments.length === 0) { +            ver = guessVersion(); +            opt = defaultVersionOpt; +        } +        else if (arguments.length === 1) { +            if (opt === false) { +                return self; +            } +            ver = opt; +            opt = defaultVersionOpt; +        } +        else if (arguments.length === 2) { +            ver = msg; +            msg = undefined; +        } +        versionOpt = typeof opt === 'string' ? opt : defaultVersionOpt; +        msg = msg || usage.deferY18nLookup('Show version number'); +        usage.version(ver || undefined); +        self.boolean(versionOpt); +        self.describe(versionOpt, msg); +        return self; +    }; +    function guessVersion() { +        const obj = pkgUp(); +        return obj.version || 'unknown'; +    } +    let helpOpt = null; +    self.addHelpOpt = self.help = function addHelpOpt(opt, msg) { +        const defaultHelpOpt = 'help'; +        argsert('[string|boolean] [string]', [opt, msg], arguments.length); +        if (helpOpt) { +            deleteFromParserHintObject(helpOpt); +            helpOpt = null; +        } +        if (arguments.length === 1) { +            if (opt === false) +                return self; +        } +        helpOpt = typeof opt === 'string' ? opt : defaultHelpOpt; +        self.boolean(helpOpt); +        self.describe(helpOpt, msg || usage.deferY18nLookup('Show help')); +        return self; +    }; +    const defaultShowHiddenOpt = 'show-hidden'; +    options.showHiddenOpt = defaultShowHiddenOpt; +    self.addShowHiddenOpt = self.showHidden = function addShowHiddenOpt(opt, msg) { +        argsert('[string|boolean] [string]', [opt, msg], arguments.length); +        if (arguments.length === 1) { +            if (opt === false) +                return self; +        } +        const showHiddenOpt = typeof opt === 'string' ? opt : defaultShowHiddenOpt; +        self.boolean(showHiddenOpt); +        self.describe(showHiddenOpt, msg || usage.deferY18nLookup('Show hidden options')); +        options.showHiddenOpt = showHiddenOpt; +        return self; +    }; +    self.hide = function hide(key) { +        argsert('<string>', [key], arguments.length); +        options.hiddenOptions.push(key); +        return self; +    }; +    self.showHelpOnFail = function showHelpOnFail(enabled, message) { +        argsert('[boolean|string] [string]', [enabled, message], arguments.length); +        usage.showHelpOnFail(enabled, message); +        return self; +    }; +    let exitProcess = true; +    self.exitProcess = function (enabled = true) { +        argsert('[boolean]', [enabled], arguments.length); +        exitProcess = enabled; +        return self; +    }; +    self.getExitProcess = () => exitProcess; +    self.showCompletionScript = function ($0, cmd) { +        argsert('[string] [string]', [$0, cmd], arguments.length); +        $0 = $0 || self.$0; +        _logger.log(completion.generateCompletionScript($0, cmd || completionCommand || 'completion')); +        return self; +    }; +    self.getCompletion = function (args, done) { +        argsert('<array> <function>', [args, done], arguments.length); +        completion.getCompletion(args, done); +    }; +    self.locale = function (locale) { +        argsert('[string]', [locale], arguments.length); +        if (!locale) { +            guessLocale(); +            return y18n.getLocale(); +        } +        detectLocale = false; +        y18n.setLocale(locale); +        return self; +    }; +    self.updateStrings = self.updateLocale = function (obj) { +        argsert('<object>', [obj], arguments.length); +        detectLocale = false; +        y18n.updateLocale(obj); +        return self; +    }; +    let detectLocale = true; +    self.detectLocale = function (detect) { +        argsert('<boolean>', [detect], arguments.length); +        detectLocale = detect; +        return self; +    }; +    self.getDetectLocale = () => detectLocale; +    const _logger = { +        log(...args) { +            if (!self._hasParseCallback()) +                console.log(...args); +            hasOutput = true; +            if (output.length) +                output += '\n'; +            output += args.join(' '); +        }, +        error(...args) { +            if (!self._hasParseCallback()) +                console.error(...args); +            hasOutput = true; +            if (output.length) +                output += '\n'; +            output += args.join(' '); +        }, +    }; +    self._getLoggerInstance = () => _logger; +    self._hasOutput = () => hasOutput; +    self._setHasOutput = () => { +        hasOutput = true; +    }; +    let recommendCommands; +    self.recommendCommands = function (recommend = true) { +        argsert('[boolean]', [recommend], arguments.length); +        recommendCommands = recommend; +        return self; +    }; +    self.getUsageInstance = () => usage; +    self.getValidationInstance = () => validation; +    self.getCommandInstance = () => command; +    self.terminalWidth = () => { +        argsert([], 0); +        return shim.process.stdColumns; +    }; +    Object.defineProperty(self, 'argv', { +        get: () => self._parseArgs(processArgs), +        enumerable: true, +    }); +    self._parseArgs = function parseArgs(args, shortCircuit, _calledFromCommand, commandIndex) { +        let skipValidation = !!_calledFromCommand; +        args = args || processArgs; +        options.__ = y18n.__; +        options.configuration = self.getParserConfiguration(); +        const populateDoubleDash = !!options.configuration['populate--']; +        const config = Object.assign({}, options.configuration, { +            'populate--': true, +        }); +        const parsed = shim.Parser.detailed(args, Object.assign({}, options, { +            configuration: Object.assign({ 'parse-positional-numbers': false }, config), +        })); +        let argv = parsed.argv; +        if (parseContext) +            argv = Object.assign({}, argv, parseContext); +        const aliases = parsed.aliases; +        argv.$0 = self.$0; +        self.parsed = parsed; +        try { +            guessLocale(); +            if (shortCircuit) { +                return self._postProcess(argv, populateDoubleDash, _calledFromCommand); +            } +            if (helpOpt) { +                const helpCmds = [helpOpt] +                    .concat(aliases[helpOpt] || []) +                    .filter(k => k.length > 1); +                if (~helpCmds.indexOf('' + argv._[argv._.length - 1])) { +                    argv._.pop(); +                    argv[helpOpt] = true; +                } +            } +            const handlerKeys = command.getCommands(); +            const requestCompletions = completion.completionKey in argv; +            const skipRecommendation = argv[helpOpt] || requestCompletions; +            const skipDefaultCommand = skipRecommendation && +                (handlerKeys.length > 1 || handlerKeys[0] !== '$0'); +            if (argv._.length) { +                if (handlerKeys.length) { +                    let firstUnknownCommand; +                    for (let i = commandIndex || 0, cmd; argv._[i] !== undefined; i++) { +                        cmd = String(argv._[i]); +                        if (~handlerKeys.indexOf(cmd) && cmd !== completionCommand) { +                            const innerArgv = command.runCommand(cmd, self, parsed, i + 1); +                            return self._postProcess(innerArgv, populateDoubleDash); +                        } +                        else if (!firstUnknownCommand && cmd !== completionCommand) { +                            firstUnknownCommand = cmd; +                            break; +                        } +                    } +                    if (command.hasDefaultCommand() && !skipDefaultCommand) { +                        const innerArgv = command.runCommand(null, self, parsed); +                        return self._postProcess(innerArgv, populateDoubleDash); +                    } +                    if (recommendCommands && firstUnknownCommand && !skipRecommendation) { +                        validation.recommendCommands(firstUnknownCommand, handlerKeys); +                    } +                } +                if (completionCommand && +                    ~argv._.indexOf(completionCommand) && +                    !requestCompletions) { +                    if (exitProcess) +                        setBlocking(true); +                    self.showCompletionScript(); +                    self.exit(0); +                } +            } +            else if (command.hasDefaultCommand() && !skipDefaultCommand) { +                const innerArgv = command.runCommand(null, self, parsed); +                return self._postProcess(innerArgv, populateDoubleDash); +            } +            if (requestCompletions) { +                if (exitProcess) +                    setBlocking(true); +                args = [].concat(args); +                const completionArgs = args.slice(args.indexOf(`--${completion.completionKey}`) + 1); +                completion.getCompletion(completionArgs, completions => { +                    (completions || []).forEach(completion => { +                        _logger.log(completion); +                    }); +                    self.exit(0); +                }); +                return self._postProcess(argv, !populateDoubleDash, _calledFromCommand); +            } +            if (!hasOutput) { +                Object.keys(argv).forEach(key => { +                    if (key === helpOpt && argv[key]) { +                        if (exitProcess) +                            setBlocking(true); +                        skipValidation = true; +                        self.showHelp('log'); +                        self.exit(0); +                    } +                    else if (key === versionOpt && argv[key]) { +                        if (exitProcess) +                            setBlocking(true); +                        skipValidation = true; +                        usage.showVersion(); +                        self.exit(0); +                    } +                }); +            } +            if (!skipValidation && options.skipValidation.length > 0) { +                skipValidation = Object.keys(argv).some(key => options.skipValidation.indexOf(key) >= 0 && argv[key] === true); +            } +            if (!skipValidation) { +                if (parsed.error) +                    throw new YError(parsed.error.message); +                if (!requestCompletions) { +                    self._runValidation(argv, aliases, {}, parsed.error); +                } +            } +        } +        catch (err) { +            if (err instanceof YError) +                usage.fail(err.message, err); +            else +                throw err; +        } +        return self._postProcess(argv, populateDoubleDash, _calledFromCommand); +    }; +    self._postProcess = function (argv, populateDoubleDash, calledFromCommand = false) { +        if (isPromise(argv)) +            return argv; +        if (calledFromCommand) +            return argv; +        if (!populateDoubleDash) { +            argv = self._copyDoubleDash(argv); +        } +        const parsePositionalNumbers = self.getParserConfiguration()['parse-positional-numbers'] || +            self.getParserConfiguration()['parse-positional-numbers'] === undefined; +        if (parsePositionalNumbers) { +            argv = self._parsePositionalNumbers(argv); +        } +        return argv; +    }; +    self._copyDoubleDash = function (argv) { +        if (!argv._ || !argv['--']) +            return argv; +        argv._.push.apply(argv._, argv['--']); +        try { +            delete argv['--']; +        } +        catch (_err) { } +        return argv; +    }; +    self._parsePositionalNumbers = function (argv) { +        const args = argv['--'] ? argv['--'] : argv._; +        for (let i = 0, arg; (arg = args[i]) !== undefined; i++) { +            if (shim.Parser.looksLikeNumber(arg) && +                Number.isSafeInteger(Math.floor(parseFloat(`${arg}`)))) { +                args[i] = Number(arg); +            } +        } +        return argv; +    }; +    self._runValidation = function runValidation(argv, aliases, positionalMap, parseErrors, isDefaultCommand = false) { +        if (parseErrors) +            throw new YError(parseErrors.message); +        validation.nonOptionCount(argv); +        validation.requiredArguments(argv); +        let failedStrictCommands = false; +        if (strictCommands) { +            failedStrictCommands = validation.unknownCommands(argv); +        } +        if (strict && !failedStrictCommands) { +            validation.unknownArguments(argv, aliases, positionalMap, isDefaultCommand); +        } +        else if (strictOptions) { +            validation.unknownArguments(argv, aliases, {}, false, false); +        } +        validation.customChecks(argv, aliases); +        validation.limitedChoices(argv); +        validation.implications(argv); +        validation.conflicting(argv); +    }; +    function guessLocale() { +        if (!detectLocale) +            return; +        const locale = shim.getEnv('LC_ALL') || +            shim.getEnv('LC_MESSAGES') || +            shim.getEnv('LANG') || +            shim.getEnv('LANGUAGE') || +            'en_US'; +        self.locale(locale.replace(/[.:].*/, '')); +    } +    self.help(); +    self.version(); +    return self; +} +export const rebase = (base, dir) => shim.path.relative(base, dir); +export function isYargsInstance(y) { +    return !!y && typeof y._parseArgs === 'function'; +} diff --git a/node_modules/yargs/build/lib/yerror.js b/node_modules/yargs/build/lib/yerror.js new file mode 100644 index 0000000..4cfef75 --- /dev/null +++ b/node_modules/yargs/build/lib/yerror.js @@ -0,0 +1,7 @@ +export class YError extends Error { +    constructor(msg) { +        super(msg || 'yargs error'); +        this.name = 'YError'; +        Error.captureStackTrace(this, YError); +    } +} diff --git a/node_modules/yargs/helpers/helpers.mjs b/node_modules/yargs/helpers/helpers.mjs new file mode 100644 index 0000000..3f96b3d --- /dev/null +++ b/node_modules/yargs/helpers/helpers.mjs @@ -0,0 +1,10 @@ +import {applyExtends as _applyExtends} from '../build/lib/utils/apply-extends.js'; +import {hideBin} from '../build/lib/utils/process-argv.js'; +import Parser from 'yargs-parser'; +import shim from '../lib/platform-shims/esm.mjs'; + +const applyExtends = (config, cwd, mergeExtends) => { +  return _applyExtends(config, cwd, mergeExtends, shim); +}; + +export {applyExtends, hideBin, Parser}; diff --git a/node_modules/yargs/helpers/index.js b/node_modules/yargs/helpers/index.js new file mode 100644 index 0000000..8ab79a3 --- /dev/null +++ b/node_modules/yargs/helpers/index.js @@ -0,0 +1,14 @@ +const { +  applyExtends, +  cjsPlatformShim, +  Parser, +  processArgv, +} = require('../build/index.cjs'); + +module.exports = { +  applyExtends: (config, cwd, mergeExtends) => { +    return applyExtends(config, cwd, mergeExtends, cjsPlatformShim); +  }, +  hideBin: processArgv.hideBin, +  Parser, +}; diff --git a/node_modules/yargs/helpers/package.json b/node_modules/yargs/helpers/package.json new file mode 100644 index 0000000..5bbefff --- /dev/null +++ b/node_modules/yargs/helpers/package.json @@ -0,0 +1,3 @@ +{ +  "type": "commonjs" +} diff --git a/node_modules/yargs/index.cjs b/node_modules/yargs/index.cjs new file mode 100644 index 0000000..7ac4d35 --- /dev/null +++ b/node_modules/yargs/index.cjs @@ -0,0 +1,39 @@ +'use strict'; +// classic singleton yargs API, to use yargs +// without running as a singleton do: +// require('yargs/yargs')(process.argv.slice(2)) +const {Yargs, processArgv} = require('./build/index.cjs'); + +Argv(processArgv.hideBin(process.argv)); + +module.exports = Argv; + +function Argv(processArgs, cwd) { +  const argv = Yargs(processArgs, cwd, require); +  singletonify(argv); +  return argv; +} + +/*  Hack an instance of Argv with process.argv into Argv +    so people can do +    require('yargs')(['--beeble=1','-z','zizzle']).argv +    to parse a list of args and +    require('yargs').argv +    to get a parsed version of process.argv. +*/ +function singletonify(inst) { +  Object.keys(inst).forEach(key => { +    if (key === 'argv') { +      Argv.__defineGetter__(key, inst.__lookupGetter__(key)); +    } else if (typeof inst[key] === 'function') { +      Argv[key] = inst[key].bind(inst); +    } else { +      Argv.__defineGetter__('$0', () => { +        return inst.$0; +      }); +      Argv.__defineGetter__('parsed', () => { +        return inst.parsed; +      }); +    } +  }); +} diff --git a/node_modules/yargs/index.mjs b/node_modules/yargs/index.mjs new file mode 100644 index 0000000..23d9080 --- /dev/null +++ b/node_modules/yargs/index.mjs @@ -0,0 +1,8 @@ +'use strict'; + +// Bootstraps yargs for ESM: +import esmPlatformShim from './lib/platform-shims/esm.mjs'; +import {YargsWithShim} from './build/lib/yargs-factory.js'; + +const Yargs = YargsWithShim(esmPlatformShim); +export default Yargs; diff --git a/node_modules/yargs/lib/platform-shims/browser.mjs b/node_modules/yargs/lib/platform-shims/browser.mjs new file mode 100644 index 0000000..5740a0f --- /dev/null +++ b/node_modules/yargs/lib/platform-shims/browser.mjs @@ -0,0 +1,92 @@ +'use strict'; + +import cliui from 'https://unpkg.com/cliui@7.0.1/index.mjs'; // eslint-disable-line +import Parser from 'https://unpkg.com/yargs-parser@19.0.0/browser.js'; // eslint-disable-line +import {getProcessArgvBin} from '../../build/lib/utils/process-argv.js'; +import {YError} from '../../build/lib/yerror.js'; + +const REQUIRE_ERROR = 'require is not supported in browser'; +const REQUIRE_DIRECTORY_ERROR = +  'loading a directory of commands is not supported in browser'; + +export default { +  assert: { +    notStrictEqual: (a, b) => { +      // noop. +    }, +    strictEqual: (a, b) => { +      // noop. +    }, +  }, +  cliui, +  findUp: () => undefined, +  getEnv: key => { +    // There is no environment in browser: +    return undefined; +  }, +  inspect: console.log, +  getCallerFile: () => { +    throw new YError(REQUIRE_DIRECTORY_ERROR); +  }, +  getProcessArgvBin, +  mainFilename: 'yargs', +  Parser, +  path: { +    basename: str => str, +    dirname: str => str, +    extname: str => str, +    relative: str => str, +  }, +  process: { +    argv: () => [], +    cwd: () => '', +    execPath: () => '', +    // exit is noop browser: +    exit: () => {}, +    nextTick: cb => { +      window.setTimeout(cb, 1); +    }, +    stdColumns: 80, +  }, +  readFileSync: () => { +    return ''; +  }, +  require: () => { +    throw new YError(REQUIRE_ERROR); +  }, +  requireDirectory: () => { +    throw new YError(REQUIRE_DIRECTORY_ERROR); +  }, +  stringWidth: str => { +    return [...str].length; +  }, +  // TODO: replace this with y18n once it's ported to ESM: +  y18n: { +    __: (...str) => { +      if (str.length === 0) return ''; +      const args = str.slice(1); +      return sprintf(str[0], ...args); +    }, +    __n: (str1, str2, count, ...args) => { +      if (count === 1) { +        return sprintf(str1, ...args); +      } else { +        return sprintf(str2, ...args); +      } +    }, +    getLocale: () => { +      return 'en_US'; +    }, +    setLocale: () => {}, +    updateLocale: () => {}, +  }, +}; + +function sprintf(_str, ...args) { +  let str = ''; +  const split = _str.split('%s'); +  split.forEach((token, i) => { +    str += `${token}${split[i + 1] !== undefined && args[i] ? args[i] : ''}`; +  }); +  return str; +} diff --git a/node_modules/yargs/lib/platform-shims/esm.mjs b/node_modules/yargs/lib/platform-shims/esm.mjs new file mode 100644 index 0000000..bc04791 --- /dev/null +++ b/node_modules/yargs/lib/platform-shims/esm.mjs @@ -0,0 +1,67 @@ +'use strict' + +import { notStrictEqual, strictEqual } from 'assert' +import cliui from 'cliui' +import escalade from 'escalade/sync' +import { format, inspect } from 'util' +import { readFileSync } from 'fs' +import { fileURLToPath } from 'url'; +import Parser from 'yargs-parser' +import { basename, dirname, extname, relative, resolve } from 'path' +import { getProcessArgvBin } from '../../build/lib/utils/process-argv.js' +import { YError } from '../../build/lib/yerror.js' +import y18n from 'y18n' + +const REQUIRE_ERROR = 'require is not supported by ESM' +const REQUIRE_DIRECTORY_ERROR = 'loading a directory of commands is not supported yet for ESM' + +const mainFilename = fileURLToPath(import.meta.url).split('node_modules')[0] +const __dirname = fileURLToPath(import.meta.url) + +export default { +  assert: { +    notStrictEqual, +    strictEqual +  }, +  cliui, +  findUp: escalade, +  getEnv: (key) => { +    return process.env[key] +  }, +  inspect, +  getCallerFile: () => { +    throw new YError(REQUIRE_DIRECTORY_ERROR) +  }, +  getProcessArgvBin, +  mainFilename: mainFilename || process.cwd(), +  Parser, +  path: { +    basename, +    dirname, +    extname, +    relative, +    resolve +  }, +  process: { +    argv: () => process.argv, +    cwd: process.cwd, +    execPath: () => process.execPath, +    exit: process.exit, +    nextTick: process.nextTick, +    stdColumns: typeof process.stdout.columns !== 'undefined' ? process.stdout.columns : null +  }, +  readFileSync, +  require: () => { +    throw new YError(REQUIRE_ERROR) +  }, +  requireDirectory: () => { +    throw new YError(REQUIRE_DIRECTORY_ERROR) +  }, +  stringWidth: (str) => { +    return [...str].length +  }, +  y18n: y18n({ +    directory: resolve(__dirname, '../../../locales'), +    updateFiles: false +  }) +} diff --git a/node_modules/yargs/locales/be.json b/node_modules/yargs/locales/be.json new file mode 100644 index 0000000..e28fa30 --- /dev/null +++ b/node_modules/yargs/locales/be.json @@ -0,0 +1,46 @@ +{ +  "Commands:": "Каманды:", +  "Options:": "Опцыі:", +  "Examples:": "Прыклады:", +  "boolean": "булевы тып", +  "count": "падлік", +  "string": "радковы тып", +  "number": "лік", +  "array": "масіў", +  "required": "неабходна", +  "default": "па змаўчанні", +  "default:": "па змаўчанні:", +  "choices:": "магчымасці:", +  "aliases:": "аліасы:", +  "generated-value": "згенераванае значэнне", +  "Not enough non-option arguments: got %s, need at least %s": { +    "one": "Недастаткова неапцыйных аргументаў: ёсць %s, трэба як мінімум %s", +    "other": "Недастаткова неапцыйных аргументаў: ёсць %s, трэба як мінімум %s" +  }, +  "Too many non-option arguments: got %s, maximum of %s": { +    "one": "Занадта шмат неапцыйных аргументаў: ёсць %s, максімум дапушчальна %s", +    "other": "Занадта шмат неапцыйных аргументаў: ёсць %s, максімум дапушчальна %s" +  }, +  "Missing argument value: %s": { +    "one": "Не хапае значэння аргументу: %s", +    "other": "Не хапае значэнняў аргументаў: %s" +  }, +  "Missing required argument: %s": { +    "one": "Не хапае неабходнага аргументу: %s", +    "other": "Не хапае неабходных аргументаў: %s" +  }, +  "Unknown argument: %s": { +    "one": "Невядомы аргумент: %s", +    "other": "Невядомыя аргументы: %s" +  }, +  "Invalid values:": "Несапраўдныя значэння:", +  "Argument: %s, Given: %s, Choices: %s": "Аргумент: %s, Дадзенае значэнне: %s, Магчымасці: %s", +  "Argument check failed: %s": "Праверка аргументаў не ўдалася: %s", +  "Implications failed:": "Дадзены аргумент патрабуе наступны дадатковы аргумент:", +  "Not enough arguments following: %s": "Недастаткова наступных аргументаў: %s", +  "Invalid JSON config file: %s": "Несапраўдны файл канфігурацыі JSON: %s", +  "Path to JSON config file": "Шлях да файла канфігурацыі JSON", +  "Show help": "Паказаць дапамогу", +  "Show version number": "Паказаць нумар версіі", +  "Did you mean %s?": "Вы мелі на ўвазе %s?" +} diff --git a/node_modules/yargs/locales/de.json b/node_modules/yargs/locales/de.json new file mode 100644 index 0000000..dc73ec3 --- /dev/null +++ b/node_modules/yargs/locales/de.json @@ -0,0 +1,46 @@ +{ +  "Commands:": "Kommandos:", +  "Options:": "Optionen:", +  "Examples:": "Beispiele:", +  "boolean": "boolean", +  "count": "Zähler", +  "string": "string", +  "number": "Zahl", +  "array": "array", +  "required": "erforderlich", +  "default": "Standard", +  "default:": "Standard:", +  "choices:": "Möglichkeiten:", +  "aliases:": "Aliase:", +  "generated-value": "Generierter-Wert", +  "Not enough non-option arguments: got %s, need at least %s": { +    "one": "Nicht genügend Argumente ohne Optionen: %s vorhanden, mindestens %s benötigt", +    "other": "Nicht genügend Argumente ohne Optionen: %s vorhanden, mindestens %s benötigt" +  }, +  "Too many non-option arguments: got %s, maximum of %s": { +    "one": "Zu viele Argumente ohne Optionen: %s vorhanden, maximal %s erlaubt", +    "other": "Zu viele Argumente ohne Optionen: %s vorhanden, maximal %s erlaubt" +  }, +  "Missing argument value: %s": { +    "one": "Fehlender Argumentwert: %s", +    "other": "Fehlende Argumentwerte: %s" +  }, +  "Missing required argument: %s": { +    "one": "Fehlendes Argument: %s", +    "other": "Fehlende Argumente: %s" +  }, +  "Unknown argument: %s": { +    "one": "Unbekanntes Argument: %s", +    "other": "Unbekannte Argumente: %s" +  }, +  "Invalid values:": "Unzulässige Werte:", +  "Argument: %s, Given: %s, Choices: %s": "Argument: %s, Gegeben: %s, Möglichkeiten: %s", +  "Argument check failed: %s": "Argumente-Check fehlgeschlagen: %s", +  "Implications failed:": "Fehlende abhängige Argumente:", +  "Not enough arguments following: %s": "Nicht genügend Argumente nach: %s", +  "Invalid JSON config file: %s": "Fehlerhafte JSON-Config Datei: %s", +  "Path to JSON config file": "Pfad zur JSON-Config Datei", +  "Show help": "Hilfe anzeigen", +  "Show version number": "Version anzeigen", +  "Did you mean %s?": "Meintest du %s?" +} diff --git a/node_modules/yargs/locales/en.json b/node_modules/yargs/locales/en.json new file mode 100644 index 0000000..d794947 --- /dev/null +++ b/node_modules/yargs/locales/en.json @@ -0,0 +1,51 @@ +{ +  "Commands:": "Commands:", +  "Options:": "Options:", +  "Examples:": "Examples:", +  "boolean": "boolean", +  "count": "count", +  "string": "string", +  "number": "number", +  "array": "array", +  "required": "required", +  "default": "default", +  "default:": "default:", +  "choices:": "choices:", +  "aliases:": "aliases:", +  "generated-value": "generated-value", +  "Not enough non-option arguments: got %s, need at least %s": { +    "one": "Not enough non-option arguments: got %s, need at least %s", +    "other": "Not enough non-option arguments: got %s, need at least %s" +  }, +  "Too many non-option arguments: got %s, maximum of %s": { +    "one": "Too many non-option arguments: got %s, maximum of %s", +    "other": "Too many non-option arguments: got %s, maximum of %s" +  }, +  "Missing argument value: %s": { +    "one": "Missing argument value: %s", +    "other": "Missing argument values: %s" +  }, +  "Missing required argument: %s": { +    "one": "Missing required argument: %s", +    "other": "Missing required arguments: %s" +  }, +  "Unknown argument: %s": { +    "one": "Unknown argument: %s", +    "other": "Unknown arguments: %s" +  }, +  "Invalid values:": "Invalid values:", +  "Argument: %s, Given: %s, Choices: %s": "Argument: %s, Given: %s, Choices: %s", +  "Argument check failed: %s": "Argument check failed: %s", +  "Implications failed:": "Missing dependent arguments:", +  "Not enough arguments following: %s": "Not enough arguments following: %s", +  "Invalid JSON config file: %s": "Invalid JSON config file: %s", +  "Path to JSON config file": "Path to JSON config file", +  "Show help": "Show help", +  "Show version number": "Show version number", +  "Did you mean %s?": "Did you mean %s?", +  "Arguments %s and %s are mutually exclusive" : "Arguments %s and %s are mutually exclusive", +  "Positionals:": "Positionals:", +  "command": "command", +  "deprecated": "deprecated", +  "deprecated: %s": "deprecated: %s" +} diff --git a/node_modules/yargs/locales/es.json b/node_modules/yargs/locales/es.json new file mode 100644 index 0000000..d77b461 --- /dev/null +++ b/node_modules/yargs/locales/es.json @@ -0,0 +1,46 @@ +{ +  "Commands:": "Comandos:", +  "Options:": "Opciones:", +  "Examples:": "Ejemplos:", +  "boolean": "booleano", +  "count": "cuenta", +  "string": "cadena de caracteres", +  "number": "número", +  "array": "tabla", +  "required": "requerido", +  "default": "defecto", +  "default:": "defecto:", +  "choices:": "selección:", +  "aliases:": "alias:", +  "generated-value": "valor-generado", +  "Not enough non-option arguments: got %s, need at least %s": { +    "one": "Hacen falta argumentos no-opcionales: Número recibido %s, necesita por lo menos %s", +    "other": "Hacen falta argumentos no-opcionales: Número recibido %s, necesita por lo menos %s" +  }, +  "Too many non-option arguments: got %s, maximum of %s": { +    "one": "Demasiados argumentos no-opcionales: Número recibido %s, máximo es %s", +    "other": "Demasiados argumentos no-opcionales: Número recibido %s, máximo es %s" +  }, +  "Missing argument value: %s": { +    "one": "Falta argumento: %s", +    "other": "Faltan argumentos: %s" +  }, +  "Missing required argument: %s": { +    "one": "Falta argumento requerido: %s", +    "other": "Faltan argumentos requeridos: %s" +  }, +  "Unknown argument: %s": { +    "one": "Argumento desconocido: %s", +    "other": "Argumentos desconocidos: %s" +  }, +  "Invalid values:": "Valores inválidos:", +  "Argument: %s, Given: %s, Choices: %s": "Argumento: %s, Recibido: %s, Seleccionados: %s", +  "Argument check failed: %s": "Verificación de argumento ha fallado: %s", +  "Implications failed:": "Implicaciones fallidas:", +  "Not enough arguments following: %s": "No hay suficientes argumentos después de: %s", +  "Invalid JSON config file: %s": "Archivo de configuración JSON inválido: %s", +  "Path to JSON config file": "Ruta al archivo de configuración JSON", +  "Show help": "Muestra ayuda", +  "Show version number": "Muestra número de versión", +  "Did you mean %s?": "Quisiste decir %s?" +} diff --git a/node_modules/yargs/locales/fi.json b/node_modules/yargs/locales/fi.json new file mode 100644 index 0000000..0728c57 --- /dev/null +++ b/node_modules/yargs/locales/fi.json @@ -0,0 +1,49 @@ +{ +  "Commands:": "Komennot:", +  "Options:": "Valinnat:", +  "Examples:": "Esimerkkejä:", +  "boolean": "totuusarvo", +  "count": "lukumäärä", +  "string": "merkkijono", +  "number": "numero", +  "array": "taulukko", +  "required": "pakollinen", +  "default": "oletusarvo", +  "default:": "oletusarvo:", +  "choices:": "vaihtoehdot:", +  "aliases:": "aliakset:", +  "generated-value": "generoitu-arvo", +  "Not enough non-option arguments: got %s, need at least %s": { +    "one": "Liian vähän argumentteja, jotka eivät ole valintoja: annettu %s, vaaditaan vähintään %s", +    "other": "Liian vähän argumentteja, jotka eivät ole valintoja: annettu %s, vaaditaan vähintään %s" +  }, +  "Too many non-option arguments: got %s, maximum of %s": { +    "one": "Liikaa argumentteja, jotka eivät ole valintoja: annettu %s, sallitaan enintään %s", +    "other": "Liikaa argumentteja, jotka eivät ole valintoja: annettu %s, sallitaan enintään %s" +  }, +  "Missing argument value: %s": { +    "one": "Argumentin arvo puuttuu: %s", +    "other": "Argumentin arvot puuttuvat: %s" +  }, +  "Missing required argument: %s": { +    "one": "Pakollinen argumentti puuttuu: %s", +    "other": "Pakollisia argumentteja puuttuu: %s" +  }, +  "Unknown argument: %s": { +    "one": "Tuntematon argumenttn: %s", +    "other": "Tuntemattomia argumentteja: %s" +  }, +  "Invalid values:": "Virheelliset arvot:", +  "Argument: %s, Given: %s, Choices: %s": "Argumentti: %s, Annettu: %s, Vaihtoehdot: %s", +  "Argument check failed: %s": "Argumentin tarkistus epäonnistui: %s", +  "Implications failed:": "Riippuvia argumentteja puuttuu:", +  "Not enough arguments following: %s": "Argumentin perässä ei ole tarpeeksi argumentteja: %s", +  "Invalid JSON config file: %s": "Epävalidi JSON-asetustiedosto: %s", +  "Path to JSON config file": "JSON-asetustiedoston polku", +  "Show help": "Näytä ohje", +  "Show version number": "Näytä versionumero", +  "Did you mean %s?": "Tarkoititko %s?", +  "Arguments %s and %s are mutually exclusive" : "Argumentit %s ja %s eivät ole yhteensopivat", +  "Positionals:": "Sijaintiparametrit:", +  "command": "komento" +} diff --git a/node_modules/yargs/locales/fr.json b/node_modules/yargs/locales/fr.json new file mode 100644 index 0000000..edd743f --- /dev/null +++ b/node_modules/yargs/locales/fr.json @@ -0,0 +1,53 @@ +{ +  "Commands:": "Commandes :", +  "Options:": "Options :", +  "Examples:": "Exemples :", +  "boolean": "booléen", +  "count": "compteur", +  "string": "chaîne de caractères", +  "number": "nombre", +  "array": "tableau", +  "required": "requis", +  "default": "défaut", +  "default:": "défaut :", +  "choices:": "choix :", +  "aliases:": "alias :", +  "generated-value": "valeur générée", +  "Not enough non-option arguments: got %s, need at least %s": { +    "one": "Pas assez d'arguments (hors options) : reçu %s, besoin d'au moins %s", +    "other": "Pas assez d'arguments (hors options) : reçus %s, besoin d'au moins %s" +  }, +  "Too many non-option arguments: got %s, maximum of %s": { +    "one": "Trop d'arguments (hors options) : reçu %s, maximum de %s", +    "other": "Trop d'arguments (hors options) : reçus %s, maximum de %s" +  }, +  "Missing argument value: %s": { +    "one": "Argument manquant : %s", +    "other": "Arguments manquants : %s" +  }, +  "Missing required argument: %s": { +    "one": "Argument requis manquant : %s", +    "other": "Arguments requis manquants : %s" +  }, +  "Unknown argument: %s": { +    "one": "Argument inconnu : %s", +    "other": "Arguments inconnus : %s" +  }, +  "Unknown command: %s": { +    "one": "Commande inconnue : %s", +    "other": "Commandes inconnues : %s" +  }, +  "Invalid values:": "Valeurs invalides :", +  "Argument: %s, Given: %s, Choices: %s": "Argument : %s, donné : %s, choix : %s", +  "Argument check failed: %s": "Echec de la vérification de l'argument : %s", +  "Implications failed:": "Arguments dépendants manquants :", +  "Not enough arguments following: %s": "Pas assez d'arguments après : %s", +  "Invalid JSON config file: %s": "Fichier de configuration JSON invalide : %s", +  "Path to JSON config file": "Chemin du fichier de configuration JSON", +  "Show help": "Affiche l'aide", +  "Show version number": "Affiche le numéro de version", +  "Did you mean %s?": "Vouliez-vous dire %s ?", +  "Arguments %s and %s are mutually exclusive" : "Les arguments %s et %s sont mutuellement exclusifs", +  "Positionals:": "Arguments positionnels :", +  "command": "commande" +} diff --git a/node_modules/yargs/locales/hi.json b/node_modules/yargs/locales/hi.json new file mode 100644 index 0000000..a9de77c --- /dev/null +++ b/node_modules/yargs/locales/hi.json @@ -0,0 +1,49 @@ +{ +  "Commands:": "आदेश:", +  "Options:": "विकल्प:", +  "Examples:": "उदाहरण:", +  "boolean": "सत्यता", +  "count": "संख्या", +  "string": "वर्णों का तार ", +  "number": "अंक", +  "array": "सरणी", +  "required": "आवश्यक", +  "default": "डिफॉल्ट", +  "default:": "डिफॉल्ट:", +  "choices:": "विकल्प:", +  "aliases:": "उपनाम:", +  "generated-value": "उत्पन्न-मूल्य", +  "Not enough non-option arguments: got %s, need at least %s": { +    "one": "पर्याप्त गैर-विकल्प तर्क प्राप्त नहीं: %s प्राप्त, कम से कम %s की आवश्यकता है", +    "other": "पर्याप्त गैर-विकल्प तर्क प्राप्त नहीं: %s प्राप्त, कम से कम %s की आवश्यकता है" +  }, +  "Too many non-option arguments: got %s, maximum of %s": { +    "one": "बहुत सारे गैर-विकल्प तर्क: %s प्राप्त, अधिकतम %s मान्य", +    "other": "बहुत सारे गैर-विकल्प तर्क: %s प्राप्त, अधिकतम %s मान्य" +  }, +  "Missing argument value: %s": { +    "one": "कुछ तर्को के मूल्य गुम हैं: %s", +    "other": "कुछ तर्को के मूल्य गुम हैं: %s" +  }, +  "Missing required argument: %s": { +    "one": "आवश्यक तर्क गुम हैं: %s", +    "other": "आवश्यक तर्क गुम हैं: %s" +  }, +  "Unknown argument: %s": { +    "one": "अज्ञात तर्क प्राप्त: %s", +    "other": "अज्ञात तर्क प्राप्त: %s" +  }, +  "Invalid values:": "अमान्य मूल्य:", +  "Argument: %s, Given: %s, Choices: %s": "तर्क: %s, प्राप्त: %s, विकल्प: %s", +  "Argument check failed: %s": "तर्क जांच विफल: %s", +  "Implications failed:": "दिए गए तर्क के लिए अतिरिक्त तर्क की अपेक्षा है:", +  "Not enough arguments following: %s": "निम्नलिखित के बाद पर्याप्त तर्क नहीं प्राप्त: %s", +  "Invalid JSON config file: %s": "अमान्य JSON config फाइल: %s", +  "Path to JSON config file": "JSON config फाइल का पथ", +  "Show help": "सहायता दिखाएँ", +  "Show version number": "Version संख्या दिखाएँ", +  "Did you mean %s?": "क्या आपका मतलब है %s?", +  "Arguments %s and %s are mutually exclusive" : "तर्क %s और %s परस्पर अनन्य हैं", +  "Positionals:": "स्थानीय:", +  "command": "आदेश" +} diff --git a/node_modules/yargs/locales/hu.json b/node_modules/yargs/locales/hu.json new file mode 100644 index 0000000..21492d0 --- /dev/null +++ b/node_modules/yargs/locales/hu.json @@ -0,0 +1,46 @@ +{ +  "Commands:": "Parancsok:", +  "Options:": "Opciók:", +  "Examples:": "Példák:", +  "boolean": "boolean", +  "count": "számláló", +  "string": "szöveg", +  "number": "szám", +  "array": "tömb", +  "required": "kötelező", +  "default": "alapértelmezett", +  "default:": "alapértelmezett:", +  "choices:": "lehetőségek:", +  "aliases:": "aliaszok:", +  "generated-value": "generált-érték", +  "Not enough non-option arguments: got %s, need at least %s": { +    "one": "Nincs elég nem opcionális argumentum: %s van, legalább %s kell", +    "other": "Nincs elég nem opcionális argumentum: %s van, legalább %s kell" +  }, +  "Too many non-option arguments: got %s, maximum of %s": { +    "one": "Túl sok nem opciánlis argumentum van: %s van, maximum %s lehet", +    "other": "Túl sok nem opciánlis argumentum van: %s van, maximum %s lehet" +  }, +  "Missing argument value: %s": { +    "one": "Hiányzó argumentum érték: %s", +    "other": "Hiányzó argumentum értékek: %s" +  }, +  "Missing required argument: %s": { +    "one": "Hiányzó kötelező argumentum: %s", +    "other": "Hiányzó kötelező argumentumok: %s" +  }, +  "Unknown argument: %s": { +    "one": "Ismeretlen argumentum: %s", +    "other": "Ismeretlen argumentumok: %s" +  }, +  "Invalid values:": "Érvénytelen érték:", +  "Argument: %s, Given: %s, Choices: %s": "Argumentum: %s, Megadott: %s, Lehetőségek: %s", +  "Argument check failed: %s": "Argumentum ellenőrzés sikertelen: %s", +  "Implications failed:": "Implikációk sikertelenek:", +  "Not enough arguments following: %s": "Nem elég argumentum követi: %s", +  "Invalid JSON config file: %s": "Érvénytelen JSON konfigurációs file: %s", +  "Path to JSON config file": "JSON konfigurációs file helye", +  "Show help": "Súgo megjelenítése", +  "Show version number": "Verziószám megjelenítése", +  "Did you mean %s?": "Erre gondoltál %s?" +} diff --git a/node_modules/yargs/locales/id.json b/node_modules/yargs/locales/id.json new file mode 100644 index 0000000..125867c --- /dev/null +++ b/node_modules/yargs/locales/id.json @@ -0,0 +1,50 @@ + +{ +  "Commands:": "Perintah:", +  "Options:": "Pilihan:", +  "Examples:": "Contoh:", +  "boolean": "boolean", +  "count": "jumlah", +  "number": "nomor", +  "string": "string", +  "array": "larik", +  "required": "diperlukan", +  "default": "bawaan", +  "default:": "bawaan:", +  "aliases:": "istilah lain:", +  "choices:": "pilihan:", +  "generated-value": "nilai-yang-dihasilkan", +  "Not enough non-option arguments: got %s, need at least %s": { +    "one": "Argumen wajib kurang: hanya %s, minimal %s", +    "other": "Argumen wajib kurang: hanya %s, minimal %s" +  }, +  "Too many non-option arguments: got %s, maximum of %s": { +    "one": "Terlalu banyak argumen wajib: ada %s, maksimal %s", +    "other": "Terlalu banyak argumen wajib: ada %s, maksimal %s" +  }, +  "Missing argument value: %s": { +    "one": "Kurang argumen: %s", +    "other": "Kurang argumen: %s" +  }, +  "Missing required argument: %s": { +    "one": "Kurang argumen wajib: %s", +    "other": "Kurang argumen wajib: %s" +  }, +  "Unknown argument: %s": { +    "one": "Argumen tak diketahui: %s", +    "other": "Argumen tak diketahui: %s" +  }, +  "Invalid values:": "Nilai-nilai tidak valid:", +  "Argument: %s, Given: %s, Choices: %s": "Argumen: %s, Diberikan: %s, Pilihan: %s", +  "Argument check failed: %s": "Pemeriksaan argument gagal: %s", +  "Implications failed:": "Implikasi gagal:", +  "Not enough arguments following: %s": "Kurang argumen untuk: %s", +  "Invalid JSON config file: %s": "Berkas konfigurasi JSON tidak valid: %s", +  "Path to JSON config file": "Alamat berkas konfigurasi JSON", +  "Show help": "Lihat bantuan", +  "Show version number": "Lihat nomor versi", +  "Did you mean %s?": "Maksud Anda: %s?", +  "Arguments %s and %s are mutually exclusive" : "Argumen %s dan %s saling eksklusif", +  "Positionals:": "Posisional-posisional:", +  "command": "perintah" +} diff --git a/node_modules/yargs/locales/it.json b/node_modules/yargs/locales/it.json new file mode 100644 index 0000000..fde5756 --- /dev/null +++ b/node_modules/yargs/locales/it.json @@ -0,0 +1,46 @@ +{ +  "Commands:": "Comandi:", +  "Options:": "Opzioni:", +  "Examples:": "Esempi:", +  "boolean": "booleano", +  "count": "contatore", +  "string": "stringa", +  "number": "numero", +  "array": "vettore", +  "required": "richiesto", +  "default": "predefinito", +  "default:": "predefinito:", +  "choices:": "scelte:", +  "aliases:": "alias:", +  "generated-value": "valore generato", +  "Not enough non-option arguments: got %s, need at least %s": { +    "one": "Numero insufficiente di argomenti non opzione: inseriti %s, richiesti almeno %s", +    "other": "Numero insufficiente di argomenti non opzione: inseriti %s, richiesti almeno %s" +  }, +  "Too many non-option arguments: got %s, maximum of %s": { +    "one": "Troppi argomenti non opzione: inseriti %s, massimo possibile %s", +    "other": "Troppi argomenti non opzione: inseriti %s, massimo possibile %s" +  }, +  "Missing argument value: %s": { +    "one": "Argomento mancante: %s", +    "other": "Argomenti mancanti: %s" +  }, +  "Missing required argument: %s": { +    "one": "Argomento richiesto mancante: %s", +    "other": "Argomenti richiesti mancanti: %s" +  }, +  "Unknown argument: %s": { +    "one": "Argomento sconosciuto: %s", +    "other": "Argomenti sconosciuti: %s" +  }, +  "Invalid values:": "Valori non validi:", +  "Argument: %s, Given: %s, Choices: %s": "Argomento: %s, Richiesto: %s, Scelte: %s", +  "Argument check failed: %s": "Controllo dell'argomento fallito: %s", +  "Implications failed:": "Argomenti dipendenti mancanti:", +  "Not enough arguments following: %s": "Argomenti insufficienti dopo: %s", +  "Invalid JSON config file: %s": "File di configurazione JSON non valido: %s", +  "Path to JSON config file": "Percorso del file di configurazione JSON", +  "Show help": "Mostra la schermata di aiuto", +  "Show version number": "Mostra il numero di versione", +  "Did you mean %s?": "Intendi forse %s?" +} diff --git a/node_modules/yargs/locales/ja.json b/node_modules/yargs/locales/ja.json new file mode 100644 index 0000000..3954ae6 --- /dev/null +++ b/node_modules/yargs/locales/ja.json @@ -0,0 +1,51 @@ +{ +  "Commands:": "コマンド:", +  "Options:": "オプション:", +  "Examples:": "例:", +  "boolean": "真偽", +  "count": "カウント", +  "string": "文字列", +  "number": "数値", +  "array": "配列", +  "required": "必須", +  "default": "デフォルト", +  "default:": "デフォルト:", +  "choices:": "選択してください:", +  "aliases:": "エイリアス:", +  "generated-value": "生成された値", +  "Not enough non-option arguments: got %s, need at least %s": { +    "one": "オプションではない引数が %s 個では不足しています。少なくとも %s 個の引数が必要です:", +    "other": "オプションではない引数が %s 個では不足しています。少なくとも %s 個の引数が必要です:" +  }, +  "Too many non-option arguments: got %s, maximum of %s": { +    "one": "オプションではない引数が %s 個では多すぎます。最大で %s 個までです:", +    "other": "オプションではない引数が %s 個では多すぎます。最大で %s 個までです:" +  }, +  "Missing argument value: %s": { +    "one": "引数の値が見つかりません: %s", +    "other": "引数の値が見つかりません: %s" +  }, +  "Missing required argument: %s": { +    "one": "必須の引数が見つかりません: %s", +    "other": "必須の引数が見つかりません: %s" +  }, +  "Unknown argument: %s": { +    "one": "未知の引数です: %s", +    "other": "未知の引数です: %s" +  }, +  "Invalid values:": "不正な値です:", +  "Argument: %s, Given: %s, Choices: %s": "引数は %s です。与えられた値: %s, 選択してください: %s", +  "Argument check failed: %s": "引数のチェックに失敗しました: %s", +  "Implications failed:": "オプションの組み合わせで不正が生じました:", +  "Not enough arguments following: %s": "次の引数が不足しています。: %s", +  "Invalid JSON config file: %s": "JSONの設定ファイルが不正です: %s", +  "Path to JSON config file": "JSONの設定ファイルまでのpath", +  "Show help": "ヘルプを表示", +  "Show version number": "バージョンを表示", +  "Did you mean %s?": "もしかして %s?", +  "Arguments %s and %s are mutually exclusive" : "引数 %s と %s は同時に指定できません", +  "Positionals:": "位置:", +  "command": "コマンド", +  "deprecated": "非推奨", +  "deprecated: %s": "非推奨: %s" +} diff --git a/node_modules/yargs/locales/ko.json b/node_modules/yargs/locales/ko.json new file mode 100644 index 0000000..e3187ea --- /dev/null +++ b/node_modules/yargs/locales/ko.json @@ -0,0 +1,49 @@ +{ +  "Commands:": "명령:", +  "Options:": "옵션:", +  "Examples:": "예시:", +  "boolean": "여부", +  "count": "개수", +  "string": "문자열", +  "number": "숫자", +  "array": "배열", +  "required": "필수", +  "default": "기본", +  "default:": "기본:", +  "choices:": "선택:", +  "aliases:": "별칭:", +  "generated-value": "생성된 값", +  "Not enough non-option arguments: got %s, need at least %s": { +    "one": "옵션이 아닌 인자가 충분치 않습니다: %s개를 받았지만, 적어도 %s개는 필요합니다", +    "other": "옵션이 아닌 인자가 충분치 않습니다: %s개를 받았지만, 적어도 %s개는 필요합니다" +  }, +  "Too many non-option arguments: got %s, maximum of %s": { +    "one": "옵션이 아닌 인자가 너무 많습니다: %s개를 받았지만, %s개 이하여야 합니다", +    "other": "옵션이 아닌 인자가 너무 많습니다: %s개를 받았지만, %s개 이하여야 합니다" +  }, +  "Missing argument value: %s": { +    "one": "인자값을 받지 못했습니다: %s", +    "other": "인자값들을 받지 못했습니다: %s" +  }, +  "Missing required argument: %s": { +    "one": "필수 인자를 받지 못했습니다: %s", +    "other": "필수 인자들을 받지 못했습니다: %s" +  }, +  "Unknown argument: %s": { +    "one": "알 수 없는 인자입니다: %s", +    "other": "알 수 없는 인자들입니다: %s" +  }, +  "Invalid values:": "잘못된 값입니다:", +  "Argument: %s, Given: %s, Choices: %s": "인자: %s, 입력받은 값: %s, 선택지: %s", +  "Argument check failed: %s": "유효하지 않은 인자입니다: %s", +  "Implications failed:": "옵션의 조합이 잘못되었습니다:", +  "Not enough arguments following: %s": "인자가 충분하게 주어지지 않았습니다: %s", +  "Invalid JSON config file: %s": "유효하지 않은 JSON 설정파일입니다: %s", +  "Path to JSON config file": "JSON 설정파일 경로", +  "Show help": "도움말을 보여줍니다", +  "Show version number": "버전 넘버를 보여줍니다", +  "Did you mean %s?": "찾고계신게 %s입니까?", +  "Arguments %s and %s are mutually exclusive" : "%s와 %s 인자는 같이 사용될 수 없습니다", +  "Positionals:": "위치:", +  "command": "명령" +} diff --git a/node_modules/yargs/locales/nb.json b/node_modules/yargs/locales/nb.json new file mode 100644 index 0000000..6f410ed --- /dev/null +++ b/node_modules/yargs/locales/nb.json @@ -0,0 +1,44 @@ +{ +  "Commands:": "Kommandoer:", +  "Options:": "Alternativer:", +  "Examples:": "Eksempler:", +  "boolean": "boolsk", +  "count": "antall", +  "string": "streng", +  "number": "nummer", +  "array": "matrise", +  "required": "obligatorisk", +  "default": "standard", +  "default:": "standard:", +  "choices:": "valg:", +  "generated-value": "generert-verdi", +  "Not enough non-option arguments: got %s, need at least %s": { +    "one": "Ikke nok ikke-alternativ argumenter: fikk %s, trenger minst %s", +    "other": "Ikke nok ikke-alternativ argumenter: fikk %s, trenger minst %s" +  }, +  "Too many non-option arguments: got %s, maximum of %s": { +    "one": "For mange ikke-alternativ argumenter: fikk %s, maksimum %s", +    "other": "For mange ikke-alternativ argumenter: fikk %s, maksimum %s" +  }, +  "Missing argument value: %s": { +    "one": "Mangler argument verdi: %s", +    "other": "Mangler argument verdier: %s" +  }, +  "Missing required argument: %s": { +    "one": "Mangler obligatorisk argument: %s", +    "other": "Mangler obligatoriske argumenter: %s" +  }, +  "Unknown argument: %s": { +    "one": "Ukjent argument: %s", +    "other": "Ukjente argumenter: %s" +  }, +  "Invalid values:": "Ugyldige verdier:", +  "Argument: %s, Given: %s, Choices: %s": "Argument: %s, Gitt: %s, Valg: %s", +  "Argument check failed: %s": "Argumentsjekk mislyktes: %s", +  "Implications failed:": "Konsekvensene mislyktes:", +  "Not enough arguments following: %s": "Ikke nok følgende argumenter: %s", +  "Invalid JSON config file: %s": "Ugyldig JSON konfigurasjonsfil: %s", +  "Path to JSON config file": "Bane til JSON konfigurasjonsfil", +  "Show help": "Vis hjelp", +  "Show version number": "Vis versjonsnummer" +} diff --git a/node_modules/yargs/locales/nl.json b/node_modules/yargs/locales/nl.json new file mode 100644 index 0000000..9ff95c5 --- /dev/null +++ b/node_modules/yargs/locales/nl.json @@ -0,0 +1,49 @@ +{ +  "Commands:": "Commando's:", +  "Options:": "Opties:", +  "Examples:": "Voorbeelden:", +  "boolean": "booleaans", +  "count": "aantal", +  "string": "string", +  "number": "getal", +  "array": "lijst", +  "required": "verplicht", +  "default": "standaard", +  "default:": "standaard:", +  "choices:": "keuzes:", +  "aliases:": "aliassen:", +  "generated-value": "gegenereerde waarde", +  "Not enough non-option arguments: got %s, need at least %s": { +    "one": "Niet genoeg niet-optie-argumenten: %s gekregen, minstens %s nodig", +    "other": "Niet genoeg niet-optie-argumenten: %s gekregen, minstens %s nodig" +  }, +  "Too many non-option arguments: got %s, maximum of %s": { +    "one": "Te veel niet-optie-argumenten: %s gekregen, maximum is %s", +    "other": "Te veel niet-optie-argumenten: %s gekregen, maximum is %s" +  }, +  "Missing argument value: %s": { +    "one": "Missende argumentwaarde: %s", +    "other": "Missende argumentwaarden: %s" +  }, +  "Missing required argument: %s": { +    "one": "Missend verplicht argument: %s", +    "other": "Missende verplichte argumenten: %s" +  }, +  "Unknown argument: %s": { +    "one": "Onbekend argument: %s", +    "other": "Onbekende argumenten: %s" +  }, +  "Invalid values:": "Ongeldige waarden:", +  "Argument: %s, Given: %s, Choices: %s": "Argument: %s, Gegeven: %s, Keuzes: %s", +  "Argument check failed: %s": "Argumentcontrole mislukt: %s", +  "Implications failed:": "Ontbrekende afhankelijke argumenten:", +  "Not enough arguments following: %s": "Niet genoeg argumenten na: %s", +  "Invalid JSON config file: %s": "Ongeldig JSON-config-bestand: %s", +  "Path to JSON config file": "Pad naar JSON-config-bestand", +  "Show help": "Toon help", +  "Show version number": "Toon versienummer", +  "Did you mean %s?": "Bedoelde u misschien %s?", +  "Arguments %s and %s are mutually exclusive": "Argumenten %s en %s kunnen niet tegelijk gebruikt worden", +  "Positionals:": "Positie-afhankelijke argumenten", +  "command": "commando" +} diff --git a/node_modules/yargs/locales/nn.json b/node_modules/yargs/locales/nn.json new file mode 100644 index 0000000..24479ac --- /dev/null +++ b/node_modules/yargs/locales/nn.json @@ -0,0 +1,44 @@ +{ +  "Commands:": "Kommandoar:", +  "Options:": "Alternativ:", +  "Examples:": "Døme:", +  "boolean": "boolsk", +  "count": "mengd", +  "string": "streng", +  "number": "nummer", +  "array": "matrise", +  "required": "obligatorisk", +  "default": "standard", +  "default:": "standard:", +  "choices:": "val:", +  "generated-value": "generert-verdi", +  "Not enough non-option arguments: got %s, need at least %s": { +    "one": "Ikkje nok ikkje-alternativ argument: fekk %s, treng minst %s", +    "other": "Ikkje nok ikkje-alternativ argument: fekk %s, treng minst %s" +  }, +  "Too many non-option arguments: got %s, maximum of %s": { +    "one": "For mange ikkje-alternativ argument: fekk %s, maksimum %s", +    "other": "For mange ikkje-alternativ argument: fekk %s, maksimum %s" +  }, +  "Missing argument value: %s": { +    "one": "Manglar argumentverdi: %s", +    "other": "Manglar argumentverdiar: %s" +  }, +  "Missing required argument: %s": { +    "one": "Manglar obligatorisk argument: %s", +    "other": "Manglar obligatoriske argument: %s" +  }, +  "Unknown argument: %s": { +    "one": "Ukjent argument: %s", +    "other": "Ukjende argument: %s" +  }, +  "Invalid values:": "Ugyldige verdiar:", +  "Argument: %s, Given: %s, Choices: %s": "Argument: %s, Gjeve: %s, Val: %s", +  "Argument check failed: %s": "Argumentsjekk mislukkast: %s", +  "Implications failed:": "Konsekvensane mislukkast:", +  "Not enough arguments following: %s": "Ikkje nok fylgjande argument: %s", +  "Invalid JSON config file: %s": "Ugyldig JSON konfigurasjonsfil: %s", +  "Path to JSON config file": "Bane til JSON konfigurasjonsfil", +  "Show help": "Vis hjelp", +  "Show version number": "Vis versjonsnummer" +} diff --git a/node_modules/yargs/locales/pirate.json b/node_modules/yargs/locales/pirate.json new file mode 100644 index 0000000..dcb5cb7 --- /dev/null +++ b/node_modules/yargs/locales/pirate.json @@ -0,0 +1,13 @@ +{ +  "Commands:": "Choose yer command:", +  "Options:": "Options for me hearties!", +  "Examples:": "Ex. marks the spot:", +  "required": "requi-yar-ed", +  "Missing required argument: %s": { +    "one": "Ye be havin' to set the followin' argument land lubber: %s", +    "other": "Ye be havin' to set the followin' arguments land lubber: %s" +  }, +  "Show help": "Parlay this here code of conduct", +  "Show version number": "'Tis the version ye be askin' fer", +  "Arguments %s and %s are mutually exclusive" : "Yon scurvy dogs %s and %s be as bad as rum and a prudish wench" +} diff --git a/node_modules/yargs/locales/pl.json b/node_modules/yargs/locales/pl.json new file mode 100644 index 0000000..a41d4bd --- /dev/null +++ b/node_modules/yargs/locales/pl.json @@ -0,0 +1,49 @@ +{ +  "Commands:": "Polecenia:", +  "Options:": "Opcje:", +  "Examples:": "Przykłady:", +  "boolean": "boolean", +  "count": "ilość", +  "string": "ciąg znaków", +  "number": "liczba", +  "array": "tablica", +  "required": "wymagany", +  "default": "domyślny", +  "default:": "domyślny:", +  "choices:": "dostępne:", +  "aliases:": "aliasy:", +  "generated-value": "wygenerowana-wartość", +  "Not enough non-option arguments: got %s, need at least %s": { +    "one": "Niewystarczająca ilość argumentów: otrzymano %s, wymagane co najmniej %s", +    "other": "Niewystarczająca ilość argumentów: otrzymano %s, wymagane co najmniej %s" +  }, +  "Too many non-option arguments: got %s, maximum of %s": { +    "one": "Zbyt duża ilość argumentów: otrzymano %s, wymagane co najwyżej %s", +    "other": "Zbyt duża ilość argumentów: otrzymano %s, wymagane co najwyżej %s" +  }, +  "Missing argument value: %s": { +    "one": "Brak wartości dla argumentu: %s", +    "other": "Brak wartości dla argumentów: %s" +  }, +  "Missing required argument: %s": { +    "one": "Brak wymaganego argumentu: %s", +    "other": "Brak wymaganych argumentów: %s" +  }, +  "Unknown argument: %s": { +    "one": "Nieznany argument: %s", +    "other": "Nieznane argumenty: %s" +  }, +  "Invalid values:": "Nieprawidłowe wartości:", +  "Argument: %s, Given: %s, Choices: %s": "Argument: %s, Otrzymano: %s, Dostępne: %s", +  "Argument check failed: %s": "Weryfikacja argumentów nie powiodła się: %s", +  "Implications failed:": "Założenia nie zostały spełnione:", +  "Not enough arguments following: %s": "Niewystarczająca ilość argumentów następujących po: %s", +  "Invalid JSON config file: %s": "Nieprawidłowy plik konfiguracyjny JSON: %s", +  "Path to JSON config file": "Ścieżka do pliku konfiguracyjnego JSON", +  "Show help": "Pokaż pomoc", +  "Show version number": "Pokaż numer wersji", +  "Did you mean %s?": "Czy chodziło Ci o %s?", +  "Arguments %s and %s are mutually exclusive": "Argumenty %s i %s wzajemnie się wykluczają", +  "Positionals:": "Pozycyjne:", +  "command": "polecenie" +} diff --git a/node_modules/yargs/locales/pt.json b/node_modules/yargs/locales/pt.json new file mode 100644 index 0000000..0c8ac99 --- /dev/null +++ b/node_modules/yargs/locales/pt.json @@ -0,0 +1,45 @@ +{ +  "Commands:": "Comandos:", +  "Options:": "Opções:", +  "Examples:": "Exemplos:", +  "boolean": "boolean", +  "count": "contagem", +  "string": "cadeia de caracteres", +  "number": "número", +  "array": "arranjo", +  "required": "requerido", +  "default": "padrão", +  "default:": "padrão:", +  "choices:": "escolhas:", +  "generated-value": "valor-gerado", +  "Not enough non-option arguments: got %s, need at least %s": { +    "one": "Argumentos insuficientes não opcionais: Argumento %s, necessário pelo menos %s", +    "other": "Argumentos insuficientes não opcionais: Argumento %s, necessário pelo menos %s" +  }, +  "Too many non-option arguments: got %s, maximum of %s": { +    "one": "Excesso de argumentos não opcionais: recebido %s, máximo de %s", +    "other": "Excesso de argumentos não opcionais: recebido %s, máximo de %s" +  }, +  "Missing argument value: %s": { +    "one": "Falta valor de argumento: %s", +    "other": "Falta valores de argumento: %s" +  }, +  "Missing required argument: %s": { +    "one": "Falta argumento obrigatório: %s", +    "other": "Faltando argumentos obrigatórios: %s" +  }, +  "Unknown argument: %s": { +    "one": "Argumento desconhecido: %s", +    "other": "Argumentos desconhecidos: %s" +  }, +  "Invalid values:": "Valores inválidos:", +  "Argument: %s, Given: %s, Choices: %s": "Argumento: %s, Dado: %s, Escolhas: %s", +  "Argument check failed: %s": "Verificação de argumento falhou: %s", +  "Implications failed:": "Implicações falharam:", +  "Not enough arguments following: %s": "Insuficientes argumentos a seguir: %s", +  "Invalid JSON config file: %s": "Arquivo de configuração em JSON esta inválido: %s", +  "Path to JSON config file": "Caminho para o arquivo de configuração em JSON", +  "Show help": "Mostra ajuda", +  "Show version number": "Mostra número de versão", +  "Arguments %s and %s are mutually exclusive" : "Argumentos %s e %s são mutualmente exclusivos" +} diff --git a/node_modules/yargs/locales/pt_BR.json b/node_modules/yargs/locales/pt_BR.json new file mode 100644 index 0000000..eae1ec6 --- /dev/null +++ b/node_modules/yargs/locales/pt_BR.json @@ -0,0 +1,48 @@ +{ +  "Commands:": "Comandos:", +  "Options:": "Opções:", +  "Examples:": "Exemplos:", +  "boolean": "booleano", +  "count": "contagem", +  "string": "string", +  "number": "número", +  "array": "array", +  "required": "obrigatório", +  "default:": "padrão:", +  "choices:": "opções:", +  "aliases:": "sinônimos:", +  "generated-value": "valor-gerado", +  "Not enough non-option arguments: got %s, need at least %s": { +    "one": "Argumentos insuficientes: Argumento %s, necessário pelo menos %s", +    "other": "Argumentos insuficientes: Argumento %s, necessário pelo menos %s" +  }, +  "Too many non-option arguments: got %s, maximum of %s": { +    "one": "Excesso de argumentos: recebido %s, máximo de %s", +    "other": "Excesso de argumentos: recebido %s, máximo de %s" +  }, +  "Missing argument value: %s": { +    "one": "Falta valor de argumento: %s", +    "other": "Falta valores de argumento: %s" +  }, +  "Missing required argument: %s": { +    "one": "Falta argumento obrigatório: %s", +    "other": "Faltando argumentos obrigatórios: %s" +  }, +  "Unknown argument: %s": { +    "one": "Argumento desconhecido: %s", +    "other": "Argumentos desconhecidos: %s" +  }, +  "Invalid values:": "Valores inválidos:", +  "Argument: %s, Given: %s, Choices: %s": "Argumento: %s, Dado: %s, Opções: %s", +  "Argument check failed: %s": "Verificação de argumento falhou: %s", +  "Implications failed:": "Implicações falharam:", +  "Not enough arguments following: %s": "Argumentos insuficientes a seguir: %s", +  "Invalid JSON config file: %s": "Arquivo JSON de configuração inválido: %s", +  "Path to JSON config file": "Caminho para o arquivo JSON de configuração", +  "Show help": "Exibe ajuda", +  "Show version number": "Exibe a versão", +  "Did you mean %s?": "Você quis dizer %s?", +  "Arguments %s and %s are mutually exclusive" : "Argumentos %s e %s são mutualmente exclusivos", +  "Positionals:": "Posicionais:", +  "command": "comando" +} diff --git a/node_modules/yargs/locales/ru.json b/node_modules/yargs/locales/ru.json new file mode 100644 index 0000000..5f7f768 --- /dev/null +++ b/node_modules/yargs/locales/ru.json @@ -0,0 +1,46 @@ +{ +  "Commands:": "Команды:", +  "Options:": "Опции:", +  "Examples:": "Примеры:", +  "boolean": "булевый тип", +  "count": "подсчет", +  "string": "строковой тип", +  "number": "число", +  "array": "массив", +  "required": "необходимо", +  "default": "по умолчанию", +  "default:": "по умолчанию:", +  "choices:": "возможности:", +  "aliases:": "алиасы:", +  "generated-value": "генерированное значение", +  "Not enough non-option arguments: got %s, need at least %s": { +    "one": "Недостаточно неопционных аргументов: есть %s, нужно как минимум %s", +    "other": "Недостаточно неопционных аргументов: есть %s, нужно как минимум %s" +  }, +  "Too many non-option arguments: got %s, maximum of %s": { +    "one": "Слишком много неопционных аргументов: есть %s, максимум допустимо %s", +    "other": "Слишком много неопционных аргументов: есть %s, максимум допустимо %s" +  }, +  "Missing argument value: %s": { +    "one": "Не хватает значения аргумента: %s", +    "other": "Не хватает значений аргументов: %s" +  }, +  "Missing required argument: %s": { +    "one": "Не хватает необходимого аргумента: %s", +    "other": "Не хватает необходимых аргументов: %s" +  }, +  "Unknown argument: %s": { +    "one": "Неизвестный аргумент: %s", +    "other": "Неизвестные аргументы: %s" +  }, +  "Invalid values:": "Недействительные значения:", +  "Argument: %s, Given: %s, Choices: %s": "Аргумент: %s, Данное значение: %s, Возможности: %s", +  "Argument check failed: %s": "Проверка аргументов не удалась: %s", +  "Implications failed:": "Данный аргумент требует следующий дополнительный аргумент:", +  "Not enough arguments following: %s": "Недостаточно следующих аргументов: %s", +  "Invalid JSON config file: %s": "Недействительный файл конфигурации JSON: %s", +  "Path to JSON config file": "Путь к файлу конфигурации JSON", +  "Show help": "Показать помощь", +  "Show version number": "Показать номер версии", +  "Did you mean %s?": "Вы имели в виду %s?" +} diff --git a/node_modules/yargs/locales/th.json b/node_modules/yargs/locales/th.json new file mode 100644 index 0000000..33b048e --- /dev/null +++ b/node_modules/yargs/locales/th.json @@ -0,0 +1,46 @@ +{ +  "Commands:": "คอมมาน", +  "Options:": "ออฟชั่น", +  "Examples:": "ตัวอย่าง", +  "boolean": "บูลีน", +  "count": "นับ", +  "string": "สตริง", +  "number": "ตัวเลข", +  "array": "อาเรย์", +  "required": "จำเป็น", +  "default": "ค่าเริ่มต้", +  "default:": "ค่าเริ่มต้น", +  "choices:": "ตัวเลือก", +  "aliases:": "เอเลียส", +  "generated-value": "ค่าที่ถูกสร้างขึ้น", +  "Not enough non-option arguments: got %s, need at least %s": { +    "one": "ใส่อาร์กิวเมนต์ไม่ครบตามจำนวนที่กำหนด: ใส่ค่ามาจำนวน %s ค่า, แต่ต้องการอย่างน้อย %s ค่า", +    "other": "ใส่อาร์กิวเมนต์ไม่ครบตามจำนวนที่กำหนด: ใส่ค่ามาจำนวน %s ค่า, แต่ต้องการอย่างน้อย %s ค่า" +  }, +  "Too many non-option arguments: got %s, maximum of %s": { +    "one": "ใส่อาร์กิวเมนต์เกินจำนวนที่กำหนด: ใส่ค่ามาจำนวน %s ค่า, แต่ต้องการมากที่สุด %s ค่า", +    "other": "ใส่อาร์กิวเมนต์เกินจำนวนที่กำหนด: ใส่ค่ามาจำนวน %s ค่า, แต่ต้องการมากที่สุด %s ค่า" +  }, +  "Missing argument value: %s": { +    "one": "ค่าอาร์กิวเมนต์ที่ขาดไป: %s", +    "other": "ค่าอาร์กิวเมนต์ที่ขาดไป: %s" +  }, +  "Missing required argument: %s": { +    "one": "อาร์กิวเมนต์จำเป็นที่ขาดไป: %s", +    "other": "อาร์กิวเมนต์จำเป็นที่ขาดไป: %s" +  }, +  "Unknown argument: %s": { +    "one": "อาร์กิวเมนต์ที่ไม่รู้จัก: %s", +    "other": "อาร์กิวเมนต์ที่ไม่รู้จัก: %s" +  }, +  "Invalid values:": "ค่าไม่ถูกต้อง:", +  "Argument: %s, Given: %s, Choices: %s": "อาร์กิวเมนต์: %s, ได้รับ: %s, ตัวเลือก: %s", +  "Argument check failed: %s": "ตรวจสอบพบอาร์กิวเมนต์ที่ไม่ถูกต้อง: %s", +  "Implications failed:": "Implications ไม่สำเร็จ:", +  "Not enough arguments following: %s": "ใส่อาร์กิวเมนต์ไม่ครบ: %s", +  "Invalid JSON config file: %s": "ไฟล์คอนฟิค JSON ไม่ถูกต้อง: %s", +  "Path to JSON config file": "พาทไฟล์คอนฟิค JSON", +  "Show help": "ขอความช่วยเหลือ", +  "Show version number": "แสดงตัวเลขเวอร์ชั่น", +  "Did you mean %s?": "คุณหมายถึง %s?" +} diff --git a/node_modules/yargs/locales/tr.json b/node_modules/yargs/locales/tr.json new file mode 100644 index 0000000..0d0d2cc --- /dev/null +++ b/node_modules/yargs/locales/tr.json @@ -0,0 +1,48 @@ +{ +  "Commands:": "Komutlar:", +  "Options:": "Seçenekler:", +  "Examples:": "Örnekler:", +  "boolean": "boolean", +  "count": "sayı", +  "string": "string", +  "number": "numara", +  "array": "array", +  "required": "zorunlu", +  "default": "varsayılan", +  "default:": "varsayılan:", +  "choices:": "seçimler:", +  "aliases:": "takma adlar:", +  "generated-value": "oluşturulan-değer", +  "Not enough non-option arguments: got %s, need at least %s": { +    "one": "Seçenek dışı argümanlar yetersiz: %s bulundu, %s gerekli", +    "other": "Seçenek dışı argümanlar yetersiz: %s bulundu, %s gerekli" +  }, +  "Too many non-option arguments: got %s, maximum of %s": { +    "one": "Seçenek dışı argümanlar gereğinden fazla: %s bulundu, azami %s", +    "other": "Seçenek dışı argümanlar gereğinden fazla: %s bulundu, azami %s" +  }, +  "Missing argument value: %s": { +    "one": "Eksik argüman değeri: %s", +    "other": "Eksik argüman değerleri: %s" +  }, +  "Missing required argument: %s": { +    "one": "Eksik zorunlu argüman: %s", +    "other": "Eksik zorunlu argümanlar: %s" +  }, +  "Unknown argument: %s": { +    "one": "Bilinmeyen argüman: %s", +    "other": "Bilinmeyen argümanlar: %s" +  }, +  "Invalid values:": "Geçersiz değerler:", +  "Argument: %s, Given: %s, Choices: %s": "Argüman: %s, Verilen: %s, Seçimler: %s", +  "Argument check failed: %s": "Argüman kontrolü başarısız oldu: %s", +  "Implications failed:": "Sonuçlar başarısız oldu:", +  "Not enough arguments following: %s": "%s için yeterli argüman bulunamadı", +  "Invalid JSON config file: %s": "Geçersiz JSON yapılandırma dosyası: %s", +  "Path to JSON config file": "JSON yapılandırma dosya konumu", +  "Show help": "Yardım detaylarını göster", +  "Show version number": "Versiyon detaylarını göster", +  "Did you mean %s?": "Bunu mu demek istediniz: %s?", +  "Positionals:": "Sıralılar:", +  "command": "komut" +} diff --git a/node_modules/yargs/locales/zh_CN.json b/node_modules/yargs/locales/zh_CN.json new file mode 100644 index 0000000..257d26b --- /dev/null +++ b/node_modules/yargs/locales/zh_CN.json @@ -0,0 +1,48 @@ +{ +  "Commands:": "命令:", +  "Options:": "选项:", +  "Examples:": "示例:", +  "boolean": "布尔", +  "count": "计数", +  "string": "字符串", +  "number": "数字", +  "array": "数组", +  "required": "必需", +  "default": "默认值", +  "default:": "默认值:", +  "choices:": "可选值:", +  "generated-value": "生成的值", +  "Not enough non-option arguments: got %s, need at least %s": { +    "one": "缺少 non-option 参数:传入了 %s 个, 至少需要 %s 个", +    "other": "缺少 non-option 参数:传入了 %s 个, 至少需要 %s 个" +  }, +  "Too many non-option arguments: got %s, maximum of %s": { +    "one": "non-option 参数过多:传入了 %s 个, 最大允许 %s 个", +    "other": "non-option 参数过多:传入了 %s 个, 最大允许 %s 个" +  }, +  "Missing argument value: %s": { +    "one": "没有给此选项指定值:%s", +    "other": "没有给这些选项指定值:%s" +  }, +  "Missing required argument: %s": { +    "one": "缺少必须的选项:%s", +    "other": "缺少这些必须的选项:%s" +  }, +  "Unknown argument: %s": { +    "one": "无法识别的选项:%s", +    "other": "无法识别这些选项:%s" +  }, +  "Invalid values:": "无效的选项值:", +  "Argument: %s, Given: %s, Choices: %s": "选项名称: %s, 传入的值: %s, 可选的值:%s", +  "Argument check failed: %s": "选项值验证失败:%s", +  "Implications failed:": "缺少依赖的选项:", +  "Not enough arguments following: %s": "没有提供足够的值给此选项:%s", +  "Invalid JSON config file: %s": "无效的 JSON 配置文件:%s", +  "Path to JSON config file": "JSON 配置文件的路径", +  "Show help": "显示帮助信息", +  "Show version number": "显示版本号", +  "Did you mean %s?": "是指 %s?", +  "Arguments %s and %s are mutually exclusive" : "选项 %s 和 %s 是互斥的", +  "Positionals:": "位置:", +  "command": "命令" +} diff --git a/node_modules/yargs/locales/zh_TW.json b/node_modules/yargs/locales/zh_TW.json new file mode 100644 index 0000000..e3c7bcf --- /dev/null +++ b/node_modules/yargs/locales/zh_TW.json @@ -0,0 +1,47 @@ +{ +  "Commands:": "命令:", +  "Options:": "選項:", +  "Examples:": "例:", +  "boolean": "布林", +  "count": "次數", +  "string": "字串", +  "number": "數字", +  "array": "陣列", +  "required": "必須", +  "default": "預設值", +  "default:": "預設值:", +  "choices:": "可選值:", +  "aliases:": "別名:", +  "generated-value": "生成的值", +  "Not enough non-option arguments: got %s, need at least %s": { +    "one": "non-option 引數不足:只傳入了 %s 個, 至少要 %s 個", +    "other": "non-option 引數不足:只傳入了 %s 個, 至少要 %s 個" +  }, +  "Too many non-option arguments: got %s, maximum of %s": { +    "one": "non-option 引數過多:傳入了 %s 個, 但最多 %s 個", +    "other": "non-option 引數過多:傳入了 %s 個, 但最多 %s 個" +  }, +  "Missing argument value: %s": { +    "one": "此引數無指定值:%s", +    "other": "這些引數無指定值:%s" +  }, +  "Missing required argument: %s": { +    "one": "缺少必須的引數:%s", +    "other": "缺少這些必須的引數:%s" +  }, +  "Unknown argument: %s": { +    "one": "未知的引數:%s", +    "other": "未知的這些引數:%s" +  }, +  "Invalid values:": "無效的選項值:", +  "Argument: %s, Given: %s, Choices: %s": "引數名稱: %s, 傳入的值: %s, 可選的值:%s", +  "Argument check failed: %s": "引數驗證失敗:%s", +  "Implications failed:": "缺少依賴的選項:", +  "Not enough arguments following: %s": "沒有提供足夠的值給此引數:%s", +  "Invalid JSON config file: %s": "無效的 JSON 設置文件:%s", +  "Path to JSON config file": "JSON 設置文件的路徑", +  "Show help": "顯示說明", +  "Show version number": "顯示版本", +  "Did you mean %s?": "是指 %s?", +  "Arguments %s and %s are mutually exclusive" : "引數 %s 和 %s 是互斥的" +} diff --git a/node_modules/yargs/package.json b/node_modules/yargs/package.json new file mode 100644 index 0000000..428ead2 --- /dev/null +++ b/node_modules/yargs/package.json @@ -0,0 +1,122 @@ +{ +  "name": "yargs", +  "version": "16.2.0", +  "description": "yargs the modern, pirate-themed, successor to optimist.", +  "main": "./index.cjs", +  "exports": { +    "./package.json": "./package.json", +    ".": [ +      { +        "import": "./index.mjs", +        "require": "./index.cjs" +      }, +      "./index.cjs" +    ], +    "./helpers": { +      "import": "./helpers/helpers.mjs", +      "require": "./helpers/index.js" +    }, +    "./yargs": [ +      { +        "require": "./yargs" +      }, +      "./yargs" +    ] +  }, +  "type": "module", +  "module": "./index.mjs", +  "contributors": [ +    { +      "name": "Yargs Contributors", +      "url": "https://github.com/yargs/yargs/graphs/contributors" +    } +  ], +  "files": [ +    "browser.mjs", +    "index.cjs", +    "helpers/*.js", +    "helpers/*", +    "index.mjs", +    "yargs", +    "build", +    "locales", +    "LICENSE", +    "lib/platform-shims/*.mjs", +    "!*.d.ts" +  ], +  "dependencies": { +    "cliui": "^7.0.2", +    "escalade": "^3.1.1", +    "get-caller-file": "^2.0.5", +    "require-directory": "^2.1.1", +    "string-width": "^4.2.0", +    "y18n": "^5.0.5", +    "yargs-parser": "^20.2.2" +  }, +  "devDependencies": { +    "@types/chai": "^4.2.11", +    "@types/mocha": "^8.0.0", +    "@types/node": "^14.11.2", +    "@wessberg/rollup-plugin-ts": "^1.3.2", +    "c8": "^7.0.0", +    "chai": "^4.2.0", +    "chalk": "^4.0.0", +    "coveralls": "^3.0.9", +    "cpr": "^3.0.1", +    "cross-env": "^7.0.2", +    "cross-spawn": "^7.0.0", +    "gts": "^3.0.0", +    "hashish": "0.0.4", +    "mocha": "^8.0.0", +    "rimraf": "^3.0.2", +    "rollup": "^2.23.0", +    "rollup-plugin-cleanup": "^3.1.1", +    "standardx": "^5.0.0", +    "typescript": "^4.0.2", +    "which": "^2.0.0", +    "yargs-test-extends": "^1.0.1" +  }, +  "scripts": { +    "fix": "gts fix && npm run fix:js", +    "fix:js": "standardx --fix '**/*.mjs' && standardx --fix '**/*.cjs' && standardx --fix './*.mjs' && standardx --fix './*.cjs'", +    "posttest": "npm run check", +    "test": "c8 mocha ./test/*.cjs --require ./test/before.cjs --timeout=12000 --check-leaks", +    "test:esm": "c8 mocha ./test/esm/*.mjs --check-leaks", +    "coverage": "c8 report --check-coverage", +    "prepare": "npm run compile", +    "pretest": "npm run compile -- -p tsconfig.test.json && cross-env NODE_ENV=test npm run build:cjs", +    "compile": "rimraf build && tsc", +    "postcompile": "npm run build:cjs", +    "build:cjs": "rollup -c rollup.config.cjs", +    "postbuild:cjs": "rimraf ./build/index.cjs.d.ts", +    "check": "gts lint && npm run check:js", +    "check:js": "standardx '**/*.mjs' && standardx '**/*.cjs' && standardx './*.mjs' && standardx './*.cjs'", +    "clean": "gts clean" +  }, +  "repository": { +    "type": "git", +    "url": "https://github.com/yargs/yargs.git" +  }, +  "homepage": "https://yargs.js.org/", +  "standardx": { +    "ignore": [ +      "build", +      "helpers", +      "**/example/**", +      "**/platform-shims/esm.mjs" +    ] +  }, +  "keywords": [ +    "argument", +    "args", +    "option", +    "parser", +    "parsing", +    "cli", +    "command" +  ], +  "license": "MIT", +  "engines": { +    "node": ">=10" +  } +} diff --git a/node_modules/yargs/yargs b/node_modules/yargs/yargs new file mode 100644 index 0000000..8460d10 --- /dev/null +++ b/node_modules/yargs/yargs @@ -0,0 +1,9 @@ +// TODO: consolidate on using a helpers file at some point in the future, which +// is the approach currently used to export Parser and applyExtends for ESM: +const {applyExtends, cjsPlatformShim, Parser, Yargs, processArgv} = require('./build/index.cjs') +Yargs.applyExtends = (config, cwd, mergeExtends) => { +  return applyExtends(config, cwd, mergeExtends, cjsPlatformShim) +} +Yargs.hideBin = processArgv.hideBin +Yargs.Parser = Parser +module.exports = Yargs  | 
