import type { JestConfigWithTsJest } from "ts-jest";

const esmModules = [
  "uuid",
  "wagmi",
  "@wagmi",
  "viem",
  "@viem",
  "@tanstack/react-query",
];

const config: JestConfigWithTsJest = {
  extensionsToTreatAsEsm: [".ts", ".tsx"],
  verbose: true,
  preset: "ts-jest",
  testEnvironment: "jsdom",
  setupFilesAfterEnv: ["<rootDir>/test/setup.ts"],
  transform: {
    "^.+\\.tsx?$": ["ts-jest", { useESM: true }],
    "\\.jsx?$": "babel-jest",
  },
  transformIgnorePatterns: [
    `node_modules/(?!(?:.pnpm/)?(${esmModules.join("|")}))`,
  ],
  testPathIgnorePatterns: ["./dist"],
  moduleNameMapper: {
    "^@src/(.*)$": "<rootDir>/src/$1",
    "^@/(.*)$": "<rootDir>/src/$1",
    "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$":
      "<rootDir>/test/fileMock.ts",
    "\\.(css)$": "<rootDir>/test/styleMock.ts",
  },
  automock: false,
  resetMocks: false,
};

export default config;
