{
  "compilerOptions": {
    "outDir": "./dist",                      // Output directory for compiled files
    "rootDir": "./src",                      // Root directory of your source files
    "target": "ESNext",                      // Target the latest ECMAScript version for better optimizations and new features
    "module": "ESNext",                      // Use ES modules for better interoperability
    "moduleResolution": "node",              // Resolve modules using Node's module resolution algorithm
    "declaration": true,                     // Generate .d.ts declaration files
    "declarationMap": true,                  // Generate declaration map files for debugging
    "esModuleInterop": true,                 // Allows default imports from modules without a default export
    "strict": true,                          // Enable all strict type-checking options
    "skipLibCheck": true,                    // Skip type checking of declaration files for faster compilation
    "forceConsistentCasingInFileNames": true,// Enforce consistent file name casing across imports
    "resolveJsonModule": true,               // Allow importing .json files as modules
    "isolatedModules": true,                 // Ensures that each file can be safely transpiled independently
    "allowSyntheticDefaultImports": true,    // Allow default imports from modules without a default export
    "lib": ["ESNext", "DOM"],                // Include the latest ECMAScript and DOM libraries for type checking
    "noEmitOnError": true,                   // Prevent emitting output if there are type errors
    "downlevelIteration": true,              // Enable proper handling of for...of loops and iterators in older targets
    "jsx": "react-jsx",                      // Use the new JSX transform (React 17+)
    "incremental": true,                     // Enable incremental compilation for faster builds
    "sourceMap": true,                       // Generate source maps for debugging
    "strictFunctionTypes": true,             // Ensure function type safety, especially with callbacks
    "noImplicitAny": true,                   // Disallow the use of `any` type in function arguments and return types
    "allowJs": true                          // Allow JavaScript files to be compiled
  },
  "include": [
    "src/**/*.ts",                            // Include all TypeScript files in the `src` directory
    "src/**/*.tsx"                            // Include all TypeScript JSX files if using React
  ],
  "exclude": [
    "node_modules",                           // Exclude `node_modules` to avoid unnecessary compilation
    "dist"                                    // Exclude the output directory to prevent recompiling output files
  ],
  "ts-node": {
    "compilerOptions": {
      "module": "CommonJS"                    // Ensure compatibility with Node.js for ts-node
    }
  }
}
