{
  "compilerOptions": {
    /* Base options: */
    "esModuleInterop": true,
    "skipLibCheck": true,
    "target": "es2022",
    "allowJs": true,
    "resolveJsonModule": true,
    "moduleDetection": "force",
    "isolatedModules": true,
    "verbatimModuleSyntax": true,
    "jsx": "react-jsx",
    "incremental": true,

    /* Strictness: */
    "strict": true,
    "allowUnusedLabels": false,
    "allowUnreachableCode": false,
    "exactOptionalPropertyTypes": true,
    "noFallthroughCasesInSwitch": true,
    "noImplicitOverride": true,
    "noImplicitReturns": true,
    "noPropertyAccessFromIndexSignature": true,
    "noUncheckedIndexedAccess": true,
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "noUncheckedSideEffectImports": true,
    "useUnknownInCatchVariables": true,

    /* NOT transpiling with TypeScript: */
    "module": "preserve",
    "noEmit": true,

    /* Running in the DOM: */
    "lib": ["esnext", "dom", "dom.iterable"],

    /* Plugins: */
    "plugins": [
      {
        "name": "next"
      }
    ],

    /* Absolute imports & module aliases: */
    "paths": {
      "@/*": ["./src/*"]
    }
  },

  "include": [
    "svgr.d.ts",
    "env.d.ts",
    "next-env.d.ts",
    "**/*.ts",
    "**/*.tsx",
    ".next/types/**/*.ts",
    ".next/dev/types/**/*.ts",
    "**/*.mts"
  ],
  "exclude": ["node_modules"]
}
