aboutsummaryrefslogtreecommitdiff
path: root/node_modules/jest-validate/build/validateCLIOptions.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/jest-validate/build/validateCLIOptions.js')
-rw-r--r--node_modules/jest-validate/build/validateCLIOptions.js141
1 files changed, 141 insertions, 0 deletions
diff --git a/node_modules/jest-validate/build/validateCLIOptions.js b/node_modules/jest-validate/build/validateCLIOptions.js
new file mode 100644
index 0000000..3356d7e
--- /dev/null
+++ b/node_modules/jest-validate/build/validateCLIOptions.js
@@ -0,0 +1,141 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.DOCUMENTATION_NOTE = void 0;
+exports.default = validateCLIOptions;
+
+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;
+}