/** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { preset: 'react-native', transformIgnorePatterns: [ 'node_modules/(?!(@react-native|react-native|@react-navigation|expo|expo-.*|@expo|@react-native-community|react-native-.*|@shopify|@better-auth|nativewind|react-native-css-interop)/)', ], transform: { '^.+\\.(js|jsx)$': 'babel-jest', '^.+\\.(ts|tsx)$': ['ts-jest', { tsconfig: { jsx: 'react', esModuleInterop: true, allowSyntheticDefaultImports: true, }, }], }, testMatch: ['**/__tests__/**/*.(test|spec).(js|jsx|ts|tsx)', '**/*.(test|spec).(js|jsx|ts|tsx)'], moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], setupFilesAfterEnv: ['/jest.setup.js'], moduleNameMapper: { '^@/(.*)$': '/$1', }, collectCoverageFrom: [ '**/*.{js,jsx,ts,tsx}', '!**/node_modules/**', '!**/android/**', '!**/ios/**', '!**/coverage/**', '!**/.claude/**', '!**/jest.config.js', '!**/jest.setup.js', '!**/metro.config.js', ], }