{"record":{"id":"f0d40956478f91dd","repo":"vitest-dev/vitest","slug":"pretty-format-unknown-option-key","errorCode":null,"errorMessage":"pretty-format: Unknown option \"${key}\".","messagePattern":"pretty-format: Unknown option \"(.+?)\"\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/pretty-format/src/index.ts","lineNumber":471,"sourceCode":"  // (Node's limit is buffer.constants.MAX_STRING_LENGTH ~ 512MB)\n  maxOutputLength: 1_000_000,\n  maxWidth: Number.POSITIVE_INFINITY,\n  min: false,\n  plugins: [],\n  printBasicPrototype: true,\n  printFunctionName: true,\n  printShadowRoot: true,\n  theme: DEFAULT_THEME,\n  singleQuote: false,\n  quoteKeys: true,\n  spacingInner: '\\n',\n  spacingOuter: '\\n',\n} satisfies Options\n\nfunction validateOptions(options: OptionsReceived) {\n  for (const key of Object.keys(options)) {\n    if (!Object.hasOwn(DEFAULT_OPTIONS, 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\nfunction getColorsHighlight(): Colors {\n  return DEFAULT_THEME_KEYS.reduce((colors, key) => {\n    const value = DEFAULT_THEME[key]\n    const color = value && (styles as any)[value]\n    if (\n      color\n      && typeof color.close === 'string'\n      && typeof color.open === 'string'","sourceCodeStart":453,"sourceCodeEnd":489,"githubUrl":"https://github.com/vitest-dev/vitest/blob/1fa9837ec26533512fdcad8baebf249771bd340a/packages/pretty-format/src/index.ts#L453-L489","documentation":"validateOptions rejects any option key not present in DEFAULT_OPTIONS before formatting. This catches typos and unsupported option names early, listing the offending key.","triggerScenarios":"Calling format(value, { highlight: true }) or format(value, { indent: 2, pretty: true }) where 'highlight'/'pretty' are not valid keys; passing a misspelled option like 'maxDepth' instead of 'maxDepth'-equivalent.","commonSituations":"Copy-pasting options from another library (e.g. Jest's older option names); typo in an option name; passing options intended for a different formatter.","solutions":[],"exampleFix":"// before\nformat(value, { highlight: true, indent: 2 })\n// after\nformat(value, { highlight: true, indent: 2 }.hasOwnProperty('highlight') ? { highlight: true } : {})","handlingStrategy":"validation","validationCode":"import { DEFAULT_OPTIONS } from 'pretty-format'\nconst KNOWN = new Set(Object.keys(DEFAULT_OPTIONS))\nfor (const k of Object.keys(userOptions)) {\n  if (!KNOWN.has(k)) throw new Error(`unknown pretty-format option '${k}'`)\n}\nformat(value, userOptions)","typeGuard":"function isKnownOption(key: string): boolean { return Object.hasOwn(DEFAULT_OPTIONS, key) }","tryCatchPattern":null,"preventionTips":["Reference DEFAULT_OPTIONS keys when building config","Centralize pretty-format options in one module","Lint for unknown option keys at the config boundary"],"tags":["pretty-format","options","configuration"],"backgroundTag":null,"analyzedSha":"1fa9837ec26533512fdcad8baebf249771bd340a","analyzedAt":"2026-08-11T16:11:39.638Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}