123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- 'use strict';
- Object.defineProperty(exports, '__esModule', {
- value: true
- });
- exports.default = validateCLIOptions;
- exports.DOCUMENTATION_NOTE = void 0;
- function _chalk() {
- const data = _interopRequireDefault(require('chalk'));
- _chalk = function _chalk() {
- return data;
- };
- return data;
- }
- function _camelcase() {
- const data = _interopRequireDefault(require('camelcase'));
- _camelcase = function _camelcase() {
- return data;
- };
- return data;
- }
- var _utils = require('./utils');
- var _deprecated = require('./deprecated');
- var _defaultConfig = _interopRequireDefault(require('./defaultConfig'));
- function _interopRequireDefault(obj) {
- return obj && obj.__esModule ? obj : {default: obj};
- }
- function _objectSpread(target) {
- for (var i = 1; i < arguments.length; i++) {
- var source = arguments[i] != null ? arguments[i] : {};
- var ownKeys = Object.keys(source);
- if (typeof Object.getOwnPropertySymbols === 'function') {
- ownKeys = ownKeys.concat(
- Object.getOwnPropertySymbols(source).filter(function(sym) {
- return Object.getOwnPropertyDescriptor(source, sym).enumerable;
- })
- );
- }
- ownKeys.forEach(function(key) {
- _defineProperty(target, key, source[key]);
- });
- }
- return target;
- }
- function _defineProperty(obj, key, value) {
- if (key in obj) {
- Object.defineProperty(obj, key, {
- value: value,
- enumerable: true,
- configurable: true,
- writable: true
- });
- } else {
- obj[key] = value;
- }
- return obj;
- }
- const BULLET = _chalk().default.bold('\u25cf');
- const DOCUMENTATION_NOTE = ` ${_chalk().default.bold(
- 'CLI Options Documentation:'
- )}
- https://jestjs.io/docs/en/cli.html
- `;
- exports.DOCUMENTATION_NOTE = DOCUMENTATION_NOTE;
- const createCLIValidationError = (unrecognizedOptions, allowedOptions) => {
- let title = `${BULLET} Unrecognized CLI Parameter`;
- let message;
- const comment =
- ` ${_chalk().default.bold('CLI Options Documentation')}:\n` +
- ` https://jestjs.io/docs/en/cli.html\n`;
- if (unrecognizedOptions.length === 1) {
- const unrecognized = unrecognizedOptions[0];
- const didYouMeanMessage = (0, _utils.createDidYouMeanMessage)(
- unrecognized,
- Array.from(allowedOptions)
- );
- message =
- ` Unrecognized option ${_chalk().default.bold(
- (0, _utils.format)(unrecognized)
- )}.` + (didYouMeanMessage ? ` ${didYouMeanMessage}` : '');
- } else {
- title += 's';
- message =
- ` Following options were not recognized:\n` +
- ` ${_chalk().default.bold((0, _utils.format)(unrecognizedOptions))}`;
- }
- return new _utils.ValidationError(title, message, comment);
- };
- const logDeprecatedOptions = (deprecatedOptions, deprecationEntries, argv) => {
- deprecatedOptions.forEach(opt => {
- (0, _deprecated.deprecationWarning)(
- argv,
- opt,
- deprecationEntries,
- _objectSpread({}, _defaultConfig.default, {
- comment: DOCUMENTATION_NOTE
- })
- );
- });
- };
- function validateCLIOptions(argv, options, rawArgv = []) {
- const yargsSpecialOptions = ['$0', '_', 'help', 'h'];
- const deprecationEntries = options.deprecationEntries || {};
- const allowedOptions = Object.keys(options).reduce(
- (acc, option) => acc.add(option).add(options[option].alias || option),
- new Set(yargsSpecialOptions)
- );
- const unrecognizedOptions = Object.keys(argv).filter(
- arg =>
- !allowedOptions.has((0, _camelcase().default)(arg)) &&
- (!rawArgv.length || rawArgv.includes(arg)),
- []
- );
- if (unrecognizedOptions.length) {
- throw createCLIValidationError(unrecognizedOptions, allowedOptions);
- }
- const CLIDeprecations = Object.keys(deprecationEntries).reduce(
- (acc, entry) => {
- if (options[entry]) {
- acc[entry] = deprecationEntries[entry];
- const alias = options[entry].alias;
- if (alias) {
- acc[alias] = deprecationEntries[entry];
- }
- }
- return acc;
- },
- {}
- );
- const deprecations = new Set(Object.keys(CLIDeprecations));
- const deprecatedOptions = Object.keys(argv).filter(
- arg => deprecations.has(arg) && argv[arg] != null
- );
- if (deprecatedOptions.length) {
- logDeprecatedOptions(deprecatedOptions, CLIDeprecations, argv);
- }
- return true;
- }
|