|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- 'use strict';
-
- Object.defineProperty(exports, '__esModule', {
- value: true
- });
- exports.default = validateCLIOptions;
- exports.DOCUMENTATION_NOTE = void 0;
-
- function _camelcase() {
- const data = _interopRequireDefault(require('camelcase'));
-
- _camelcase = function () {
- return data;
- };
-
- return data;
- }
-
- function _chalk() {
- const data = _interopRequireDefault(require('chalk'));
-
- _chalk = function () {
- return data;
- };
-
- return data;
- }
-
- var _defaultConfig = _interopRequireDefault(require('./defaultConfig'));
-
- var _deprecated = require('./deprecated');
-
- var _utils = require('./utils');
-
- function _interopRequireDefault(obj) {
- return obj && obj.__esModule ? obj : {default: obj};
- }
-
- /**
- * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
- const BULLET = _chalk().default.bold('\u25cf');
-
- const DOCUMENTATION_NOTE = ` ${_chalk().default.bold(
- 'CLI Options Documentation:'
- )}
- https://jestjs.io/docs/cli
- `;
- 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/cli\n`;
-
- if (unrecognizedOptions.length === 1) {
- const unrecognized = unrecognizedOptions[0];
- const didYouMeanMessage =
- unrecognized.length > 1
- ? (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, {
- ..._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, {
- locale: 'en-US'
- })
- ) &&
- !allowedOptions.has(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;
- }
|