{"version":3,"file":"config.cjs","sources":["../../src/config.ts"],"sourcesContent":["import type { TestInstance } from \"./types\";\n\n// import {prettyDOM} from './pretty-dom'\n\nexport interface Config {\n  /**\n   * WARNING: `unstable` prefix means this API may change in patch and minor releases.\n   * @param cb\n   */\n  unstable_advanceTimersWrapper: (\n    cb: (...args: Array<unknown>) => unknown,\n  ) => unknown;\n  asyncUtilTimeout: number;\n  renderAwaitTime: number;\n  errorDebounceTimeout: number;\n  showOriginalStackTrace: boolean;\n  throwSuggestions: boolean;\n  getInstanceError: (message: string | null, container: TestInstance) => Error;\n}\n\nexport interface ConfigFn {\n  (existingConfig: Config): Partial<Config>;\n}\n\ntype Callback<T> = () => T;\ninterface InternalConfig extends Config {\n  _disableExpensiveErrorDiagnostics: boolean;\n}\n\n// It would be cleaner for this to live inside './queries', but\n// other parts of the code assume that all exports from\n// './queries' are query functions.\nlet config: InternalConfig = {\n  asyncUtilTimeout: 1000,\n  // Short amount of time to wait for your process to spin up after a `spawn`. AFAIK There's unfortunately not much\n  // of a better way to do this\n  renderAwaitTime: 100,\n  // Internal timer time to wait before attempting error recovery debounce action\n  errorDebounceTimeout: 100,\n  unstable_advanceTimersWrapper: (cb) => cb(),\n  // default value for the `hidden` option in `ByRole` queries\n  // showOriginalStackTrace flag to show the full error stack traces for async errors\n  showOriginalStackTrace: false,\n\n  // throw errors w/ suggestions for better queries. Opt in so off by default.\n  throwSuggestions: false,\n\n  // called when getBy* queries fail. (message, container) => Error\n  getInstanceError(message, testInstance: TestInstance | undefined) {\n    let instanceWarning = \"\";\n    if (testInstance) {\n      const stdallArrStr = testInstance.getStdallStr();\n      instanceWarning = `\\n${stdallArrStr}`;\n    } else {\n      instanceWarning = \"\";\n    }\n    const error = new Error(\n      [message, instanceWarning].filter(Boolean).join(\"\\n\\n\"),\n    );\n    error.name = \"TestingLibraryElementError\";\n    return error;\n  },\n  _disableExpensiveErrorDiagnostics: false,\n};\n\nexport function runWithExpensiveErrorDiagnosticsDisabled<T>(\n  callback: Callback<T>,\n) {\n  try {\n    config._disableExpensiveErrorDiagnostics = true;\n    return callback();\n  } finally {\n    config._disableExpensiveErrorDiagnostics = false;\n  }\n}\n\nexport function configure(newConfig: ConfigFn | Partial<Config>): void {\n  if (typeof newConfig === \"function\") {\n    // Pass the existing config out to the provided function\n    // and accept a delta in return\n    newConfig = newConfig(config);\n  }\n\n  // Merge the incoming config delta\n  config = {\n    ...config,\n    ...newConfig,\n  };\n}\n\nexport function getConfig(): Config {\n  return config;\n}\n"],"names":[],"mappings":";;AAgCA,IAAI,SAAyB;AAAA,EAC3B,kBAAkB;AAAA;AAAA;AAAA,EAGlB,iBAAiB;AAAA;AAAA,EAEjB,sBAAsB;AAAA,EACtB,+BAA+B,CAAC,OAAO,GAAG;AAAA;AAAA;AAAA,EAG1C,wBAAwB;AAAA;AAAA,EAGxB,kBAAkB;AAAA;AAAA,EAGlB,iBAAiB,SAAS,cAAwC;AAChE,QAAI,kBAAkB;AACtB,QAAI,cAAc;AACV,YAAA,eAAe,aAAa,aAAa;AAC7B,wBAAA;AAAA,EAAK,YAAY;AAAA,IAAA,OAC9B;AACa,wBAAA;AAAA,IAAA;AAEpB,UAAM,QAAQ,IAAI;AAAA,MAChB,CAAC,SAAS,eAAe,EAAE,OAAO,OAAO,EAAE,KAAK,MAAM;AAAA,IACxD;AACA,UAAM,OAAO;AACN,WAAA;AAAA,EACT;AAAA,EACA,mCAAmC;AACrC;AAEO,SAAS,yCACd,UACA;AACI,MAAA;AACF,WAAO,oCAAoC;AAC3C,WAAO,SAAS;AAAA,EAAA,UAChB;AACA,WAAO,oCAAoC;AAAA,EAAA;AAE/C;AAEO,SAAS,UAAU,WAA6C;AACjE,MAAA,OAAO,cAAc,YAAY;AAGnC,gBAAY,UAAU,MAAM;AAAA,EAAA;AAIrB,WAAA;AAAA,IACP,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AACF;AAEO,SAAS,YAAoB;AAC3B,SAAA;AACT;;;;"}