{"ast":null,"code":"'use strict';\n\nvar _ansiStyles = _interopRequireDefault(require('ansi-styles'));\n\nvar _collections = require('./collections');\n\nvar _AsymmetricMatcher = _interopRequireDefault(require('./plugins/AsymmetricMatcher'));\n\nvar _ConvertAnsi = _interopRequireDefault(require('./plugins/ConvertAnsi'));\n\nvar _DOMCollection = _interopRequireDefault(require('./plugins/DOMCollection'));\n\nvar _DOMElement = _interopRequireDefault(require('./plugins/DOMElement'));\n\nvar _Immutable = _interopRequireDefault(require('./plugins/Immutable'));\n\nvar _ReactElement = _interopRequireDefault(require('./plugins/ReactElement'));\n\nvar _ReactTestComponent = _interopRequireDefault(require('./plugins/ReactTestComponent'));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n/**\n * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/* eslint-disable local/ban-types-eventually */\n\n\nconst toString = Object.prototype.toString;\nconst toISOString = Date.prototype.toISOString;\nconst errorToString = Error.prototype.toString;\nconst regExpToString = RegExp.prototype.toString;\n/**\n * Explicitly comparing typeof constructor to function avoids undefined as name\n * when mock identity-obj-proxy returns the key as the value for any key.\n */\n\nconst getConstructorName = val => typeof val.constructor === 'function' && val.constructor.name || 'Object';\n/* global window */\n\n/** Is val is equal to global window object? Works even if it does not exist :) */\n\n\nconst isWindow = val => typeof window !== 'undefined' && val === window;\n\nconst SYMBOL_REGEXP = /^Symbol\\((.*)\\)(.*)$/;\nconst NEWLINE_REGEXP = /\\n/gi;\n\nclass PrettyFormatPluginError extends Error {\n  constructor(message, stack) {\n    super(message);\n    this.stack = stack;\n    this.name = this.constructor.name;\n  }\n\n}\n\nfunction isToStringedArrayType(toStringed) {\n  return toStringed === '[object Array]' || toStringed === '[object ArrayBuffer]' || toStringed === '[object DataView]' || toStringed === '[object Float32Array]' || toStringed === '[object Float64Array]' || toStringed === '[object Int8Array]' || toStringed === '[object Int16Array]' || toStringed === '[object Int32Array]' || toStringed === '[object Uint8Array]' || toStringed === '[object Uint8ClampedArray]' || toStringed === '[object Uint16Array]' || toStringed === '[object Uint32Array]';\n}\n\nfunction printNumber(val) {\n  return Object.is(val, -0) ? '-0' : String(val);\n}\n\nfunction printBigInt(val) {\n  return String(`${val}n`);\n}\n\nfunction printFunction(val, printFunctionName) {\n  if (!printFunctionName) {\n    return '[Function]';\n  }\n\n  return '[Function ' + (val.name || 'anonymous') + ']';\n}\n\nfunction printSymbol(val) {\n  return String(val).replace(SYMBOL_REGEXP, 'Symbol($1)');\n}\n\nfunction printError(val) {\n  return '[' + errorToString.call(val) + ']';\n}\n/**\n * The first port of call for printing an object, handles most of the\n * data-types in JS.\n */\n\n\nfunction printBasicValue(val, printFunctionName, escapeRegex, escapeString) {\n  if (val === true || val === false) {\n    return '' + val;\n  }\n\n  if (val === undefined) {\n    return 'undefined';\n  }\n\n  if (val === null) {\n    return 'null';\n  }\n\n  const typeOf = typeof val;\n\n  if (typeOf === 'number') {\n    return printNumber(val);\n  }\n\n  if (typeOf === 'bigint') {\n    return printBigInt(val);\n  }\n\n  if (typeOf === 'string') {\n    if (escapeString) {\n      return '\"' + val.replace(/\"|\\\\/g, '\\\\$&') + '\"';\n    }\n\n    return '\"' + val + '\"';\n  }\n\n  if (typeOf === 'function') {\n    return printFunction(val, printFunctionName);\n  }\n\n  if (typeOf === 'symbol') {\n    return printSymbol(val);\n  }\n\n  const toStringed = toString.call(val);\n\n  if (toStringed === '[object WeakMap]') {\n    return 'WeakMap {}';\n  }\n\n  if (toStringed === '[object WeakSet]') {\n    return 'WeakSet {}';\n  }\n\n  if (toStringed === '[object Function]' || toStringed === '[object GeneratorFunction]') {\n    return printFunction(val, printFunctionName);\n  }\n\n  if (toStringed === '[object Symbol]') {\n    return printSymbol(val);\n  }\n\n  if (toStringed === '[object Date]') {\n    return isNaN(+val) ? 'Date { NaN }' : toISOString.call(val);\n  }\n\n  if (toStringed === '[object Error]') {\n    return printError(val);\n  }\n\n  if (toStringed === '[object RegExp]') {\n    if (escapeRegex) {\n      // https://github.com/benjamingr/RegExp.escape/blob/master/polyfill.js\n      return regExpToString.call(val).replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n    }\n\n    return regExpToString.call(val);\n  }\n\n  if (val instanceof Error) {\n    return printError(val);\n  }\n\n  return null;\n}\n/**\n * Handles more complex objects ( such as objects with circular references.\n * maps and sets etc )\n */\n\n\nfunction printComplexValue(val, config, indentation, depth, refs, hasCalledToJSON) {\n  if (refs.indexOf(val) !== -1) {\n    return '[Circular]';\n  }\n\n  refs = refs.slice();\n  refs.push(val);\n  const hitMaxDepth = ++depth > config.maxDepth;\n  const min = config.min;\n\n  if (config.callToJSON && !hitMaxDepth && val.toJSON && typeof val.toJSON === 'function' && !hasCalledToJSON) {\n    return printer(val.toJSON(), config, indentation, depth, refs, true);\n  }\n\n  const toStringed = toString.call(val);\n\n  if (toStringed === '[object Arguments]') {\n    return hitMaxDepth ? '[Arguments]' : (min ? '' : 'Arguments ') + '[' + (0, _collections.printListItems)(val, config, indentation, depth, refs, printer) + ']';\n  }\n\n  if (isToStringedArrayType(toStringed)) {\n    return hitMaxDepth ? '[' + val.constructor.name + ']' : (min ? '' : val.constructor.name + ' ') + '[' + (0, _collections.printListItems)(val, config, indentation, depth, refs, printer) + ']';\n  }\n\n  if (toStringed === '[object Map]') {\n    return hitMaxDepth ? '[Map]' : 'Map {' + (0, _collections.printIteratorEntries)(val.entries(), config, indentation, depth, refs, printer, ' => ') + '}';\n  }\n\n  if (toStringed === '[object Set]') {\n    return hitMaxDepth ? '[Set]' : 'Set {' + (0, _collections.printIteratorValues)(val.values(), config, indentation, depth, refs, printer) + '}';\n  } // Avoid failure to serialize global window object in jsdom test environment.\n  // For example, not even relevant if window is prop of React element.\n\n\n  return hitMaxDepth || isWindow(val) ? '[' + getConstructorName(val) + ']' : (min ? '' : getConstructorName(val) + ' ') + '{' + (0, _collections.printObjectProperties)(val, config, indentation, depth, refs, printer) + '}';\n}\n\nfunction isNewPlugin(plugin) {\n  return plugin.serialize != null;\n}\n\nfunction printPlugin(plugin, val, config, indentation, depth, refs) {\n  let printed;\n\n  try {\n    printed = isNewPlugin(plugin) ? plugin.serialize(val, config, indentation, depth, refs, printer) : plugin.print(val, valChild => printer(valChild, config, indentation, depth, refs), str => {\n      const indentationNext = indentation + config.indent;\n      return indentationNext + str.replace(NEWLINE_REGEXP, '\\n' + indentationNext);\n    }, {\n      edgeSpacing: config.spacingOuter,\n      min: config.min,\n      spacing: config.spacingInner\n    }, config.colors);\n  } catch (error) {\n    throw new PrettyFormatPluginError(error.message, error.stack);\n  }\n\n  if (typeof printed !== 'string') {\n    throw new Error(`pretty-format: Plugin must return type \"string\" but instead returned \"${typeof printed}\".`);\n  }\n\n  return printed;\n}\n\nfunction findPlugin(plugins, val) {\n  for (let p = 0; p < plugins.length; p++) {\n    try {\n      if (plugins[p].test(val)) {\n        return plugins[p];\n      }\n    } catch (error) {\n      throw new PrettyFormatPluginError(error.message, error.stack);\n    }\n  }\n\n  return null;\n}\n\nfunction printer(val, config, indentation, depth, refs, hasCalledToJSON) {\n  const plugin = findPlugin(config.plugins, val);\n\n  if (plugin !== null) {\n    return printPlugin(plugin, val, config, indentation, depth, refs);\n  }\n\n  const basicResult = printBasicValue(val, config.printFunctionName, config.escapeRegex, config.escapeString);\n\n  if (basicResult !== null) {\n    return basicResult;\n  }\n\n  return printComplexValue(val, config, indentation, depth, refs, hasCalledToJSON);\n}\n\nconst DEFAULT_THEME = {\n  comment: 'gray',\n  content: 'reset',\n  prop: 'yellow',\n  tag: 'cyan',\n  value: 'green'\n};\nconst DEFAULT_THEME_KEYS = Object.keys(DEFAULT_THEME);\nconst DEFAULT_OPTIONS = {\n  callToJSON: true,\n  escapeRegex: false,\n  escapeString: true,\n  highlight: false,\n  indent: 2,\n  maxDepth: Infinity,\n  min: false,\n  plugins: [],\n  printFunctionName: true,\n  theme: DEFAULT_THEME\n};\n\nfunction validateOptions(options) {\n  Object.keys(options).forEach(key => {\n    if (!DEFAULT_OPTIONS.hasOwnProperty(key)) {\n      throw new Error(`pretty-format: Unknown option \"${key}\".`);\n    }\n  });\n\n  if (options.min && options.indent !== undefined && options.indent !== 0) {\n    throw new Error('pretty-format: Options \"min\" and \"indent\" cannot be used together.');\n  }\n\n  if (options.theme !== undefined) {\n    if (options.theme === null) {\n      throw new Error(`pretty-format: Option \"theme\" must not be null.`);\n    }\n\n    if (typeof options.theme !== 'object') {\n      throw new Error(`pretty-format: Option \"theme\" must be of type \"object\" but instead received \"${typeof options.theme}\".`);\n    }\n  }\n}\n\nconst getColorsHighlight = options => DEFAULT_THEME_KEYS.reduce((colors, key) => {\n  const value = options.theme && options.theme[key] !== undefined ? options.theme[key] : DEFAULT_THEME[key];\n  const color = value && _ansiStyles.default[value];\n\n  if (color && typeof color.close === 'string' && typeof color.open === 'string') {\n    colors[key] = color;\n  } else {\n    throw new Error(`pretty-format: Option \"theme\" has a key \"${key}\" whose value \"${value}\" is undefined in ansi-styles.`);\n  }\n\n  return colors;\n}, Object.create(null));\n\nconst getColorsEmpty = () => DEFAULT_THEME_KEYS.reduce((colors, key) => {\n  colors[key] = {\n    close: '',\n    open: ''\n  };\n  return colors;\n}, Object.create(null));\n\nconst getPrintFunctionName = options => options && options.printFunctionName !== undefined ? options.printFunctionName : DEFAULT_OPTIONS.printFunctionName;\n\nconst getEscapeRegex = options => options && options.escapeRegex !== undefined ? options.escapeRegex : DEFAULT_OPTIONS.escapeRegex;\n\nconst getEscapeString = options => options && options.escapeString !== undefined ? options.escapeString : DEFAULT_OPTIONS.escapeString;\n\nconst getConfig = options => ({\n  callToJSON: options && options.callToJSON !== undefined ? options.callToJSON : DEFAULT_OPTIONS.callToJSON,\n  colors: options && options.highlight ? getColorsHighlight(options) : getColorsEmpty(),\n  escapeRegex: getEscapeRegex(options),\n  escapeString: getEscapeString(options),\n  indent: options && options.min ? '' : createIndent(options && options.indent !== undefined ? options.indent : DEFAULT_OPTIONS.indent),\n  maxDepth: options && options.maxDepth !== undefined ? options.maxDepth : DEFAULT_OPTIONS.maxDepth,\n  min: options && options.min !== undefined ? options.min : DEFAULT_OPTIONS.min,\n  plugins: options && options.plugins !== undefined ? options.plugins : DEFAULT_OPTIONS.plugins,\n  printFunctionName: getPrintFunctionName(options),\n  spacingInner: options && options.min ? ' ' : '\\n',\n  spacingOuter: options && options.min ? '' : '\\n'\n});\n\nfunction createIndent(indent) {\n  return new Array(indent + 1).join(' ');\n}\n/**\n * Returns a presentation string of your `val` object\n * @param val any potential JavaScript object\n * @param options Custom settings\n */\n\n\nfunction prettyFormat(val, options) {\n  if (options) {\n    validateOptions(options);\n\n    if (options.plugins) {\n      const plugin = findPlugin(options.plugins, val);\n\n      if (plugin !== null) {\n        return printPlugin(plugin, val, getConfig(options), '', 0, []);\n      }\n    }\n  }\n\n  const basicResult = printBasicValue(val, getPrintFunctionName(options), getEscapeRegex(options), getEscapeString(options));\n\n  if (basicResult !== null) {\n    return basicResult;\n  }\n\n  return printComplexValue(val, getConfig(options), '', 0, []);\n}\n\nprettyFormat.plugins = {\n  AsymmetricMatcher: _AsymmetricMatcher.default,\n  ConvertAnsi: _ConvertAnsi.default,\n  DOMCollection: _DOMCollection.default,\n  DOMElement: _DOMElement.default,\n  Immutable: _Immutable.default,\n  ReactElement: _ReactElement.default,\n  ReactTestComponent: _ReactTestComponent.default\n};\nmodule.exports = prettyFormat;","map":{"version":3,"sources":["/Users/jane/Documents/Курс Front-end/HW8/myproject/node_modules/pretty-format/build/index.js"],"names":["_ansiStyles","_interopRequireDefault","require","_collections","_AsymmetricMatcher","_ConvertAnsi","_DOMCollection","_DOMElement","_Immutable","_ReactElement","_ReactTestComponent","obj","__esModule","default","toString","Object","prototype","toISOString","Date","errorToString","Error","regExpToString","RegExp","getConstructorName","val","constructor","name","isWindow","window","SYMBOL_REGEXP","NEWLINE_REGEXP","PrettyFormatPluginError","message","stack","isToStringedArrayType","toStringed","printNumber","is","String","printBigInt","printFunction","printFunctionName","printSymbol","replace","printError","call","printBasicValue","escapeRegex","escapeString","undefined","typeOf","isNaN","printComplexValue","config","indentation","depth","refs","hasCalledToJSON","indexOf","slice","push","hitMaxDepth","maxDepth","min","callToJSON","toJSON","printer","printListItems","printIteratorEntries","entries","printIteratorValues","values","printObjectProperties","isNewPlugin","plugin","serialize","printPlugin","printed","print","valChild","str","indentationNext","indent","edgeSpacing","spacingOuter","spacing","spacingInner","colors","error","findPlugin","plugins","p","length","test","basicResult","DEFAULT_THEME","comment","content","prop","tag","value","DEFAULT_THEME_KEYS","keys","DEFAULT_OPTIONS","highlight","Infinity","theme","validateOptions","options","forEach","key","hasOwnProperty","getColorsHighlight","reduce","color","close","open","create","getColorsEmpty","getPrintFunctionName","getEscapeRegex","getEscapeString","getConfig","createIndent","Array","join","prettyFormat","AsymmetricMatcher","ConvertAnsi","DOMCollection","DOMElement","Immutable","ReactElement","ReactTestComponent","module","exports"],"mappings":"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","sourcesContent":["'use strict';\n\nvar _ansiStyles = _interopRequireDefault(require('ansi-styles'));\n\nvar _collections = require('./collections');\n\nvar _AsymmetricMatcher = _interopRequireDefault(\n  require('./plugins/AsymmetricMatcher')\n);\n\nvar _ConvertAnsi = _interopRequireDefault(require('./plugins/ConvertAnsi'));\n\nvar _DOMCollection = _interopRequireDefault(require('./plugins/DOMCollection'));\n\nvar _DOMElement = _interopRequireDefault(require('./plugins/DOMElement'));\n\nvar _Immutable = _interopRequireDefault(require('./plugins/Immutable'));\n\nvar _ReactElement = _interopRequireDefault(require('./plugins/ReactElement'));\n\nvar _ReactTestComponent = _interopRequireDefault(\n  require('./plugins/ReactTestComponent')\n);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {default: obj};\n}\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/* eslint-disable local/ban-types-eventually */\nconst toString = Object.prototype.toString;\nconst toISOString = Date.prototype.toISOString;\nconst errorToString = Error.prototype.toString;\nconst regExpToString = RegExp.prototype.toString;\n/**\n * Explicitly comparing typeof constructor to function avoids undefined as name\n * when mock identity-obj-proxy returns the key as the value for any key.\n */\n\nconst getConstructorName = val =>\n  (typeof val.constructor === 'function' && val.constructor.name) || 'Object';\n/* global window */\n\n/** Is val is equal to global window object? Works even if it does not exist :) */\n\nconst isWindow = val => typeof window !== 'undefined' && val === window;\n\nconst SYMBOL_REGEXP = /^Symbol\\((.*)\\)(.*)$/;\nconst NEWLINE_REGEXP = /\\n/gi;\n\nclass PrettyFormatPluginError extends Error {\n  constructor(message, stack) {\n    super(message);\n    this.stack = stack;\n    this.name = this.constructor.name;\n  }\n}\n\nfunction isToStringedArrayType(toStringed) {\n  return (\n    toStringed === '[object Array]' ||\n    toStringed === '[object ArrayBuffer]' ||\n    toStringed === '[object DataView]' ||\n    toStringed === '[object Float32Array]' ||\n    toStringed === '[object Float64Array]' ||\n    toStringed === '[object Int8Array]' ||\n    toStringed === '[object Int16Array]' ||\n    toStringed === '[object Int32Array]' ||\n    toStringed === '[object Uint8Array]' ||\n    toStringed === '[object Uint8ClampedArray]' ||\n    toStringed === '[object Uint16Array]' ||\n    toStringed === '[object Uint32Array]'\n  );\n}\n\nfunction printNumber(val) {\n  return Object.is(val, -0) ? '-0' : String(val);\n}\n\nfunction printBigInt(val) {\n  return String(`${val}n`);\n}\n\nfunction printFunction(val, printFunctionName) {\n  if (!printFunctionName) {\n    return '[Function]';\n  }\n\n  return '[Function ' + (val.name || 'anonymous') + ']';\n}\n\nfunction printSymbol(val) {\n  return String(val).replace(SYMBOL_REGEXP, 'Symbol($1)');\n}\n\nfunction printError(val) {\n  return '[' + errorToString.call(val) + ']';\n}\n/**\n * The first port of call for printing an object, handles most of the\n * data-types in JS.\n */\n\nfunction printBasicValue(val, printFunctionName, escapeRegex, escapeString) {\n  if (val === true || val === false) {\n    return '' + val;\n  }\n\n  if (val === undefined) {\n    return 'undefined';\n  }\n\n  if (val === null) {\n    return 'null';\n  }\n\n  const typeOf = typeof val;\n\n  if (typeOf === 'number') {\n    return printNumber(val);\n  }\n\n  if (typeOf === 'bigint') {\n    return printBigInt(val);\n  }\n\n  if (typeOf === 'string') {\n    if (escapeString) {\n      return '\"' + val.replace(/\"|\\\\/g, '\\\\$&') + '\"';\n    }\n\n    return '\"' + val + '\"';\n  }\n\n  if (typeOf === 'function') {\n    return printFunction(val, printFunctionName);\n  }\n\n  if (typeOf === 'symbol') {\n    return printSymbol(val);\n  }\n\n  const toStringed = toString.call(val);\n\n  if (toStringed === '[object WeakMap]') {\n    return 'WeakMap {}';\n  }\n\n  if (toStringed === '[object WeakSet]') {\n    return 'WeakSet {}';\n  }\n\n  if (\n    toStringed === '[object Function]' ||\n    toStringed === '[object GeneratorFunction]'\n  ) {\n    return printFunction(val, printFunctionName);\n  }\n\n  if (toStringed === '[object Symbol]') {\n    return printSymbol(val);\n  }\n\n  if (toStringed === '[object Date]') {\n    return isNaN(+val) ? 'Date { NaN }' : toISOString.call(val);\n  }\n\n  if (toStringed === '[object Error]') {\n    return printError(val);\n  }\n\n  if (toStringed === '[object RegExp]') {\n    if (escapeRegex) {\n      // https://github.com/benjamingr/RegExp.escape/blob/master/polyfill.js\n      return regExpToString.call(val).replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n    }\n\n    return regExpToString.call(val);\n  }\n\n  if (val instanceof Error) {\n    return printError(val);\n  }\n\n  return null;\n}\n/**\n * Handles more complex objects ( such as objects with circular references.\n * maps and sets etc )\n */\n\nfunction printComplexValue(\n  val,\n  config,\n  indentation,\n  depth,\n  refs,\n  hasCalledToJSON\n) {\n  if (refs.indexOf(val) !== -1) {\n    return '[Circular]';\n  }\n\n  refs = refs.slice();\n  refs.push(val);\n  const hitMaxDepth = ++depth > config.maxDepth;\n  const min = config.min;\n\n  if (\n    config.callToJSON &&\n    !hitMaxDepth &&\n    val.toJSON &&\n    typeof val.toJSON === 'function' &&\n    !hasCalledToJSON\n  ) {\n    return printer(val.toJSON(), config, indentation, depth, refs, true);\n  }\n\n  const toStringed = toString.call(val);\n\n  if (toStringed === '[object Arguments]') {\n    return hitMaxDepth\n      ? '[Arguments]'\n      : (min ? '' : 'Arguments ') +\n          '[' +\n          (0, _collections.printListItems)(\n            val,\n            config,\n            indentation,\n            depth,\n            refs,\n            printer\n          ) +\n          ']';\n  }\n\n  if (isToStringedArrayType(toStringed)) {\n    return hitMaxDepth\n      ? '[' + val.constructor.name + ']'\n      : (min ? '' : val.constructor.name + ' ') +\n          '[' +\n          (0, _collections.printListItems)(\n            val,\n            config,\n            indentation,\n            depth,\n            refs,\n            printer\n          ) +\n          ']';\n  }\n\n  if (toStringed === '[object Map]') {\n    return hitMaxDepth\n      ? '[Map]'\n      : 'Map {' +\n          (0, _collections.printIteratorEntries)(\n            val.entries(),\n            config,\n            indentation,\n            depth,\n            refs,\n            printer,\n            ' => '\n          ) +\n          '}';\n  }\n\n  if (toStringed === '[object Set]') {\n    return hitMaxDepth\n      ? '[Set]'\n      : 'Set {' +\n          (0, _collections.printIteratorValues)(\n            val.values(),\n            config,\n            indentation,\n            depth,\n            refs,\n            printer\n          ) +\n          '}';\n  } // Avoid failure to serialize global window object in jsdom test environment.\n  // For example, not even relevant if window is prop of React element.\n\n  return hitMaxDepth || isWindow(val)\n    ? '[' + getConstructorName(val) + ']'\n    : (min ? '' : getConstructorName(val) + ' ') +\n        '{' +\n        (0, _collections.printObjectProperties)(\n          val,\n          config,\n          indentation,\n          depth,\n          refs,\n          printer\n        ) +\n        '}';\n}\n\nfunction isNewPlugin(plugin) {\n  return plugin.serialize != null;\n}\n\nfunction printPlugin(plugin, val, config, indentation, depth, refs) {\n  let printed;\n\n  try {\n    printed = isNewPlugin(plugin)\n      ? plugin.serialize(val, config, indentation, depth, refs, printer)\n      : plugin.print(\n          val,\n          valChild => printer(valChild, config, indentation, depth, refs),\n          str => {\n            const indentationNext = indentation + config.indent;\n            return (\n              indentationNext +\n              str.replace(NEWLINE_REGEXP, '\\n' + indentationNext)\n            );\n          },\n          {\n            edgeSpacing: config.spacingOuter,\n            min: config.min,\n            spacing: config.spacingInner\n          },\n          config.colors\n        );\n  } catch (error) {\n    throw new PrettyFormatPluginError(error.message, error.stack);\n  }\n\n  if (typeof printed !== 'string') {\n    throw new Error(\n      `pretty-format: Plugin must return type \"string\" but instead returned \"${typeof printed}\".`\n    );\n  }\n\n  return printed;\n}\n\nfunction findPlugin(plugins, val) {\n  for (let p = 0; p < plugins.length; p++) {\n    try {\n      if (plugins[p].test(val)) {\n        return plugins[p];\n      }\n    } catch (error) {\n      throw new PrettyFormatPluginError(error.message, error.stack);\n    }\n  }\n\n  return null;\n}\n\nfunction printer(val, config, indentation, depth, refs, hasCalledToJSON) {\n  const plugin = findPlugin(config.plugins, val);\n\n  if (plugin !== null) {\n    return printPlugin(plugin, val, config, indentation, depth, refs);\n  }\n\n  const basicResult = printBasicValue(\n    val,\n    config.printFunctionName,\n    config.escapeRegex,\n    config.escapeString\n  );\n\n  if (basicResult !== null) {\n    return basicResult;\n  }\n\n  return printComplexValue(\n    val,\n    config,\n    indentation,\n    depth,\n    refs,\n    hasCalledToJSON\n  );\n}\n\nconst DEFAULT_THEME = {\n  comment: 'gray',\n  content: 'reset',\n  prop: 'yellow',\n  tag: 'cyan',\n  value: 'green'\n};\nconst DEFAULT_THEME_KEYS = Object.keys(DEFAULT_THEME);\nconst DEFAULT_OPTIONS = {\n  callToJSON: true,\n  escapeRegex: false,\n  escapeString: true,\n  highlight: false,\n  indent: 2,\n  maxDepth: Infinity,\n  min: false,\n  plugins: [],\n  printFunctionName: true,\n  theme: DEFAULT_THEME\n};\n\nfunction validateOptions(options) {\n  Object.keys(options).forEach(key => {\n    if (!DEFAULT_OPTIONS.hasOwnProperty(key)) {\n      throw new Error(`pretty-format: Unknown option \"${key}\".`);\n    }\n  });\n\n  if (options.min && options.indent !== undefined && options.indent !== 0) {\n    throw new Error(\n      'pretty-format: Options \"min\" and \"indent\" cannot be used together.'\n    );\n  }\n\n  if (options.theme !== undefined) {\n    if (options.theme === null) {\n      throw new Error(`pretty-format: Option \"theme\" must not be null.`);\n    }\n\n    if (typeof options.theme !== 'object') {\n      throw new Error(\n        `pretty-format: Option \"theme\" must be of type \"object\" but instead received \"${typeof options.theme}\".`\n      );\n    }\n  }\n}\n\nconst getColorsHighlight = options =>\n  DEFAULT_THEME_KEYS.reduce((colors, key) => {\n    const value =\n      options.theme && options.theme[key] !== undefined\n        ? options.theme[key]\n        : DEFAULT_THEME[key];\n    const color = value && _ansiStyles.default[value];\n\n    if (\n      color &&\n      typeof color.close === 'string' &&\n      typeof color.open === 'string'\n    ) {\n      colors[key] = color;\n    } else {\n      throw new Error(\n        `pretty-format: Option \"theme\" has a key \"${key}\" whose value \"${value}\" is undefined in ansi-styles.`\n      );\n    }\n\n    return colors;\n  }, Object.create(null));\n\nconst getColorsEmpty = () =>\n  DEFAULT_THEME_KEYS.reduce((colors, key) => {\n    colors[key] = {\n      close: '',\n      open: ''\n    };\n    return colors;\n  }, Object.create(null));\n\nconst getPrintFunctionName = options =>\n  options && options.printFunctionName !== undefined\n    ? options.printFunctionName\n    : DEFAULT_OPTIONS.printFunctionName;\n\nconst getEscapeRegex = options =>\n  options && options.escapeRegex !== undefined\n    ? options.escapeRegex\n    : DEFAULT_OPTIONS.escapeRegex;\n\nconst getEscapeString = options =>\n  options && options.escapeString !== undefined\n    ? options.escapeString\n    : DEFAULT_OPTIONS.escapeString;\n\nconst getConfig = options => ({\n  callToJSON:\n    options && options.callToJSON !== undefined\n      ? options.callToJSON\n      : DEFAULT_OPTIONS.callToJSON,\n  colors:\n    options && options.highlight\n      ? getColorsHighlight(options)\n      : getColorsEmpty(),\n  escapeRegex: getEscapeRegex(options),\n  escapeString: getEscapeString(options),\n  indent:\n    options && options.min\n      ? ''\n      : createIndent(\n          options && options.indent !== undefined\n            ? options.indent\n            : DEFAULT_OPTIONS.indent\n        ),\n  maxDepth:\n    options && options.maxDepth !== undefined\n      ? options.maxDepth\n      : DEFAULT_OPTIONS.maxDepth,\n  min: options && options.min !== undefined ? options.min : DEFAULT_OPTIONS.min,\n  plugins:\n    options && options.plugins !== undefined\n      ? options.plugins\n      : DEFAULT_OPTIONS.plugins,\n  printFunctionName: getPrintFunctionName(options),\n  spacingInner: options && options.min ? ' ' : '\\n',\n  spacingOuter: options && options.min ? '' : '\\n'\n});\n\nfunction createIndent(indent) {\n  return new Array(indent + 1).join(' ');\n}\n/**\n * Returns a presentation string of your `val` object\n * @param val any potential JavaScript object\n * @param options Custom settings\n */\n\nfunction prettyFormat(val, options) {\n  if (options) {\n    validateOptions(options);\n\n    if (options.plugins) {\n      const plugin = findPlugin(options.plugins, val);\n\n      if (plugin !== null) {\n        return printPlugin(plugin, val, getConfig(options), '', 0, []);\n      }\n    }\n  }\n\n  const basicResult = printBasicValue(\n    val,\n    getPrintFunctionName(options),\n    getEscapeRegex(options),\n    getEscapeString(options)\n  );\n\n  if (basicResult !== null) {\n    return basicResult;\n  }\n\n  return printComplexValue(val, getConfig(options), '', 0, []);\n}\n\nprettyFormat.plugins = {\n  AsymmetricMatcher: _AsymmetricMatcher.default,\n  ConvertAnsi: _ConvertAnsi.default,\n  DOMCollection: _DOMCollection.default,\n  DOMElement: _DOMElement.default,\n  Immutable: _Immutable.default,\n  ReactElement: _ReactElement.default,\n  ReactTestComponent: _ReactTestComponent.default\n};\nmodule.exports = prettyFormat;\n"]},"metadata":{},"sourceType":"script"}