/** @type {import('ts-jest').JestConfigWithTsJest} */ export default { preset: 'ts-jest/presets/default-esm', testEnvironment: 'node', roots: ['/test', '/src'], testMatch: ['**/*.test.ts'], collectCoverageFrom: [ 'src/**/*.ts', '!src/**/*.d.ts', ], coverageDirectory: 'coverage', coverageReporters: ['text', 'lcov', 'html'], moduleFileExtensions: ['ts', 'js', 'json'], transform: { '^.+\\.ts$': ['ts-jest', { tsconfig: { target: 'ES2022', module: 'NodeNext', moduleResolution: 'NodeNext', lib: ['ES2022'], strict: true, esModuleInterop: true, skipLibCheck: true, forceConsistentCasingInFileNames: true, declaration: true, declarationMap: true, sourceMap: true, resolveJsonModule: true, allowSyntheticDefaultImports: true, isolatedModules: true }, useESM: true, }], }, moduleNameMapper: { '^(\\.{1,2}/.*)\\.js$': '$1', }, };