| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 | 'use strict';Object.defineProperty(exports, '__esModule', {  value: true});exports.default = void 0;var _defaultConfig = _interopRequireDefault(require('./defaultConfig'));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. */let hasDeprecationWarnings = false;const shouldSkipValidationForPath = (path, key, denylist) =>  denylist ? denylist.includes([...path, key].join('.')) : false;const _validate = (config, exampleConfig, options, path = []) => {  if (    typeof config !== 'object' ||    config == null ||    typeof exampleConfig !== 'object' ||    exampleConfig == null  ) {    return {      hasDeprecationWarnings    };  }  for (const key in config) {    if (      options.deprecatedConfig &&      key in options.deprecatedConfig &&      typeof options.deprecate === 'function'    ) {      const isDeprecatedKey = options.deprecate(        config,        key,        options.deprecatedConfig,        options      );      hasDeprecationWarnings = hasDeprecationWarnings || isDeprecatedKey;    } else if (allowsMultipleTypes(key)) {      const value = config[key];      if (        typeof options.condition === 'function' &&        typeof options.error === 'function'      ) {        if (key === 'maxWorkers' && !isOfTypeStringOrNumber(value)) {          throw new _utils.ValidationError(            'Validation Error',            `${key} has to be of type string or number`,            'maxWorkers=50% or\nmaxWorkers=3'          );        }      }    } else if (Object.hasOwnProperty.call(exampleConfig, key)) {      if (        typeof options.condition === 'function' &&        typeof options.error === 'function' &&        !options.condition(config[key], exampleConfig[key])      ) {        options.error(key, config[key], exampleConfig[key], options, path);      }    } else if (      shouldSkipValidationForPath(path, key, options.recursiveDenylist)    ) {      // skip validating unknown options inside blacklisted paths    } else {      options.unknown &&        options.unknown(config, exampleConfig, key, options, path);    }    if (      options.recursive &&      !Array.isArray(exampleConfig[key]) &&      options.recursiveDenylist &&      !shouldSkipValidationForPath(path, key, options.recursiveDenylist)    ) {      _validate(config[key], exampleConfig[key], options, [...path, key]);    }  }  return {    hasDeprecationWarnings  };};const allowsMultipleTypes = key => key === 'maxWorkers';const isOfTypeStringOrNumber = value =>  typeof value === 'number' || typeof value === 'string';const validate = (config, options) => {  hasDeprecationWarnings = false; // Preserve default denylist entries even with user-supplied denylist  const combinedDenylist = [    ...(_defaultConfig.default.recursiveDenylist || []),    ...(options.recursiveDenylist || [])  ];  const defaultedOptions = Object.assign({    ..._defaultConfig.default,    ...options,    recursiveDenylist: combinedDenylist,    title: options.title || _defaultConfig.default.title  });  const {hasDeprecationWarnings: hdw} = _validate(    config,    options.exampleConfig,    defaultedOptions  );  return {    hasDeprecationWarnings: hdw,    isValid: true  };};var _default = validate;exports.default = _default;
 |