import type { UserWorkspaceConfig, ViteUserConfig } from './external.js'
import { mergeConfig } from './external.js'
import { vitestConfig, vitestProject } from './shareableConfigs.js'
/**
* A function that returns {@linkcode vitestConfig}
* along with optional additional overrides.
*
* @param [additionalOverrides={}] - **Optional** additional overrides to apply to the configuration.
* @returns An augmented version of the default {@linkcode vitestConfig}, incorporating any provided overrides.
*
* @example
*
#### __ECMAScript Modules (ESM) usage inside a file like `vitest.config.mts` or `vitest.config.mjs`__
*
* ```ts
* import { createVitestConfig } from '@aryaemami59/vitest-config'
*
* export default createVitestConfig({
* test: {
* environment: 'jsdom',
* // Other additional overrides
* },
* })
* ```
*
* @example
* #### __CommonJS (CJS) usage inside a file like `vitest.config.cts` or `vitest.config.cjs` (using `require`)__
*
* ```ts
* const { createVitestConfig } = require('@aryaemami59/vitest-config')
*
* module.exports = createVitestConfig({
* test: {
* environment: 'jsdom',
* // Other additional overrides
* },
* })
* ```
*
* @example
* #### __CommonJS (CJS) usage inside a file like `vitest.config.cts` or `vitest.config.cjs` (using dynamic import)__
*
* ```ts
* module.exports = (async () =>
* (await import('@aryaemami59/vitest-config')).createVitestConfig({
* test: {
* environment: 'jsdom',
* // Other additional overrides
* },
* }))()
* ```
*
* @example
* #### __CommonJS (CJS) usage inside a file like `vitest.config.cts` (using import and export assignment)__
*
* ```ts
* import vitestConfigModule = require('@aryaemami59/vitest-config')
* import createVitestConfig = vitestConfigModule.createVitestConfig
*
* export = createVitestConfig({
* test: {
* environment: 'jsdom',
* // Other additional overrides
* },
* })
* ```
*
* @since 0.0.3
* @public
*/
export const createVitestConfig = (
additionalOverrides: ViteUserConfig = {},
): ViteUserConfig =>
/* @__PURE__ */ mergeConfig(vitestConfig, additionalOverrides)
/**
* A function that returns {@linkcode vitestProject}
* along with optional additional overrides.
*
* @param [additionalOverrides={}] - **Optional** additional overrides to apply to the configuration.
* @returns An augmented version of the default {@linkcode vitestProject}, incorporating any provided overrides.
*
* @example
* #### __ECMAScript Modules (ESM) usage inside a file like `vitest.config.mts` or `vitest.config.mjs`__
*
* ```ts
* import { createVitestProject } from '@aryaemami59/vitest-config'
*
* export default createVitestProject({
* test: {
* environment: 'jsdom',
* // Other additional overrides
* },
* })
* ```
*
* @example
* #### __CommonJS (CJS) usage inside a file like `vitest.config.cts` or `vitest.config.cjs` (using `require`)__
*
* ```ts
* const { createVitestProject } = require('@aryaemami59/vitest-config')
*
* module.exports = createVitestProject({
* test: {
* environment: 'jsdom',
* // Other additional overrides
* },
* })
* ```
*
* @example
* #### __CommonJS (CJS) usage inside a file like `vitest.config.cts` or `vitest.config.cjs` (using dynamic import)__
*
* ```ts
* module.exports = (async () =>
* (await import('@aryaemami59/vitest-config')).createVitestProject({
* test: {
* environment: 'jsdom',
* // Other additional overrides
* },
* }))()
* ```
*
* @example
* #### __CommonJS (CJS) usage inside a file like `vitest.config.cts` (using import and export assignment)__
*
* ```ts
* import vitestConfigModule = require('@aryaemami59/vitest-config')
* import createVitestProject = vitestConfigModule.createVitestProject
*
* export = createVitestProject({
* test: {
* environment: 'jsdom',
* // Other additional overrides
* },
* })
* ```
*
* @since 0.0.5
* @public
*/
export const createVitestProject = (
additionalOverrides: UserWorkspaceConfig = {},
): UserWorkspaceConfig =>
/* @__PURE__ */ mergeConfig(vitestProject, additionalOverrides)