'use strict'; /** * Metadata about various options of the `run` command * @see module:lib/cli/run * @module * @private */ /** * Dictionary of yargs option types to list of options having said type * @type {{string:string[]}} * @private */ const TYPES = (exports.types = { array: [ 'extension', 'file', 'global', 'ignore', 'reporter-option', 'require', 'spec', 'watch-files', 'watch-ignore' ], boolean: [ 'allow-uncaught', 'async-only', 'bail', 'check-leaks', 'color', 'delay', 'diff', 'exit', 'forbid-only', 'forbid-pending', 'full-trace', 'growl', 'inline-diffs', 'invert', 'list-interfaces', 'list-reporters', 'no-colors', 'parallel', 'recursive', 'sort', 'watch' ], number: ['retries', 'jobs'], string: [ 'config', 'fgrep', 'grep', 'package', 'reporter', 'ui', 'slow', 'timeout' ] }); /** * Option aliases keyed by canonical option name. * Arrays used to reduce * @type {{string:string[]}} * @private */ exports.aliases = { 'async-only': ['A'], bail: ['b'], color: ['c', 'colors'], fgrep: ['f'], global: ['globals'], grep: ['g'], growl: ['G'], ignore: ['exclude'], invert: ['i'], jobs: ['j'], 'no-colors': ['C'], parallel: ['p'], reporter: ['R'], 'reporter-option': ['reporter-options', 'O'], require: ['r'], slow: ['s'], sort: ['S'], timeout: ['t', 'timeouts'], ui: ['u'], watch: ['w'] }; const ALL_MOCHA_FLAGS = Object.keys(TYPES).reduce((acc, key) => { // gets all flags from each of the fields in `types`, adds those, // then adds aliases of each flag (if any) TYPES[key].forEach(flag => { acc.add(flag); const aliases = exports.aliases[flag] || []; aliases.forEach(alias => { acc.add(alias); }); }); return acc; }, new Set()); /** * Returns `true` if the provided `flag` is known to Mocha. * @param {string} flag - Flag to check * @returns {boolean} If `true`, this is a Mocha flag * @private */ exports.isMochaFlag = flag => { return ALL_MOCHA_FLAGS.has(flag.replace(/^--?/, '')); };