/** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { preset: 'ts-jest', testEnvironment: 'node', roots: ['/tests'], testMatch: ['**/*.test.ts', '**/*.spec.ts'], testPathIgnorePatterns: ['/node_modules/'], collectCoverage: false, collectCoverageFrom: [ 'src/**/*.ts', '!src/index.ts', '!src/**/index.ts', '!**/*.d.ts', '!src/**/*.test.ts', '!src/**/*.spec.ts' ], coverageDirectory: 'coverage', coverageReporters: ['text', 'lcov', 'html'], coverageThreshold: { global: { branches: 70, functions: 70, lines: 70, statements: 70 } }, verbose: true, transform: { '^.+\\.tsx?$': ['ts-jest', { tsconfig: 'tsconfig.json', useESM: false, }], }, moduleNameMapper: { '^@/(.*)$': '/src/$1', '^@esengine/ecs-framework$': '/../core/src/index.ts', }, moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], setupFilesAfterEnv: ['/tests/setup.ts'], testTimeout: 10000, clearMocks: true, restoreMocks: true, modulePathIgnorePatterns: [ '/bin/', '/dist/', '/node_modules/' ], transformIgnorePatterns: [ 'node_modules/(?!(.*\\.mjs$|@esengine))' ] };