/** @type {import('jest').Config} */ module.exports = { preset: 'ts-jest/presets/default-esm', testEnvironment: 'node', extensionsToTreatAsEsm: ['.ts'], transform: { '^.+\.ts$': ['ts-jest', { useESM: true, tsconfig: { module: 'ESNext', target: 'es2022', moduleResolution: 'NodeNext', allowSyntheticDefaultImports: true, esModuleInterop: true } }] }, moduleNameMapper: { '^(\.{1,2}/.*)\.js$': '$1', }, moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], testMatch: [ '**/tests/unit/**/*.test.ts', '**/tests/integration/**/*.test.ts', ], collectCoverageFrom: [ 'src/**/*.ts', '!src/**/*.d.ts', '!src/index.ts' ], coverageDirectory: 'coverage', coverageReporters: ['text', 'lcov', 'html'] };