{"version":3,"file":"index.mjs","names":[],"sources":["../src/config.ts"],"sourcesContent":["import process from 'node:process'\n\nimport deepmerge from 'deepmerge'\nimport type { TestUserConfig } from 'vitest/config'\nimport type { BrowserProviderOption } from 'vitest/node'\n\nexport const configuration: Record<string, TestUserConfig> = {\n  common: {\n    silent: 'passed-only',\n  },\n  coverage: {\n    coverage: {\n      enabled: !!process.env.COVERAGE,\n      include: ['src/**/*.*'],\n      exclude: ['*.d.ts', '*.ohm', '.gitignore'],\n      provider: 'v8' as const,\n    },\n  },\n  idempotent: {\n    clearMocks: true,\n    mockReset: true,\n    restoreMocks: true,\n    unstubEnvs: true,\n    unstubGlobals: true,\n  },\n}\n\nexport interface ConfigurationOptions {\n  /**\n   * Enables common configuration options. Default: `true`\n   */\n  common?: boolean\n  /**\n   * Enable coverage configuration. Default: `true`\n   */\n  coverage?: boolean\n  /**\n   * Enable idempotent configuration. Default: `true`\n   */\n  idempotent?: boolean\n  /**\n   * Specify the browser provider option. If defined, the browser mode will be auto-configured.\n   */\n  browser?: BrowserProviderOption\n}\n\n/**\n * Define a Vitest test configuration with coverage, idempotent settings, and browser support.\n */\nexport function defineTestConfig(\n  { common = true, coverage = true, idempotent = true, browser }: ConfigurationOptions = {},\n  userConfig: TestUserConfig = {},\n): TestUserConfig {\n  const config: TestUserConfig = {}\n\n  if (common) {\n    Object.assign(config, configuration.common)\n  }\n\n  if (coverage) {\n    Object.assign(config, configuration.coverage)\n  }\n\n  if (idempotent) {\n    Object.assign(config, configuration.idempotent)\n  }\n\n  if (browser) {\n    config.browser = {\n      enabled: true,\n      headless: true,\n      instances: [{ browser: 'chromium' }],\n      provider: browser,\n      screenshotFailures: false,\n    }\n  }\n\n  return deepmerge(config, userConfig) as TestUserConfig\n}\n"],"mappings":";;;AAMA,MAAa,gBAAgD;CAC3D,QAAQ,EACN,QAAQ,cACV;CACA,UAAU,EACR,UAAU;EACR,SAAS,CAAC,CAAC,QAAQ,IAAI;EACvB,SAAS,CAAC,YAAY;EACtB,SAAS;GAAC;GAAU;GAAS;EAAY;EACzC,UAAU;CACZ,EACF;CACA,YAAY;EACV,YAAY;EACZ,WAAW;EACX,cAAc;EACd,YAAY;EACZ,eAAe;CACjB;AACF;;;;AAwBA,SAAgB,iBACd,EAAE,SAAS,MAAM,WAAW,MAAM,aAAa,MAAM,YAAkC,CAAC,GACxF,aAA6B,CAAC,GACd;CAChB,MAAM,SAAyB,CAAC;CAEhC,IAAI,QACF,OAAO,OAAO,QAAQ,cAAc,MAAM;CAG5C,IAAI,UACF,OAAO,OAAO,QAAQ,cAAc,QAAQ;CAG9C,IAAI,YACF,OAAO,OAAO,QAAQ,cAAc,UAAU;CAGhD,IAAI,SACF,OAAO,UAAU;EACf,SAAS;EACT,UAAU;EACV,WAAW,CAAC,EAAE,SAAS,WAAW,CAAC;EACnC,UAAU;EACV,oBAAoB;CACtB;CAGF,OAAO,UAAU,QAAQ,UAAU;AACrC"}