{
  "compilerOptions": {
    /* Emit */
    "target": "ES2020",
    "lib": ["ESNext", "DOM"],
    "declaration": true,
    // These two options will be selectively overridden in each project.
    // Utility libraries will have source maps on, but plugins will not.
    "declarationMap": false,
    "sourceMap": false,
    "jsx": "react-native",
    "importHelpers": true,
    "noEmitHelpers": true,
    // Will be overridden in client projects
    "module": "NodeNext",
    // Avoid accidentally using this config to build
    "noEmit": true,

    /* Strict Type-Checking Options */
    "allowUnreachableCode": false,
    // Too hard to turn on
    "exactOptionalPropertyTypes": false,
    "noFallthroughCasesInSwitch": true,
    "noImplicitOverride": true,
    "noImplicitReturns": true,
    // `process.env` is usually accessed as property
    "noPropertyAccessFromIndexSignature": false,
    "noUncheckedIndexedAccess": true,
    /* strict family */
    "strict": true,
    "alwaysStrict": true,
    "noImplicitAny": true,
    "noImplicitThis": true,
    "strictBindCallApply": true,
    "strictFunctionTypes": true,
    "strictNullChecks": true,
    "strictPropertyInitialization": true,
    "useUnknownInCatchVariables": true,
    /* Handled by ESLint */
    "noUnusedLocals": false,
    "noUnusedParameters": false,
    "importsNotUsedAsValues": "remove",

    /* Module Resolution */
    "moduleResolution": "NodeNext",
    "resolveJsonModule": true,
    "allowSyntheticDefaultImports": true,
    "esModuleInterop": true,
    "forceConsistentCasingInFileNames": true,
    "isolatedModules": true,
    "allowJs": true,
    "skipLibCheck": true // @types/webpack and webpack/types.d.ts are not the same thing
  },
  "include": ["./**/*", "./**/.eslintrc.js"],
  "exclude": [
    "node_modules",
    "coverage/**",
    "**/lib/**/*",
    "website/**",
    "**/__mocks__/**/*",
    "**/__fixtures__/**/*",
    "examples/**",
    "packages/create-docusaurus/templates/**"
  ]
}
