{
  "compilerOptions": {
    // General Options
    "composite": true,
    "pretty": true,
    "removeComments": false,
    "skipLibCheck": true,
    "stripInternal": true,
    "experimentalDecorators": true,
    // JavaScript Support
    "allowJs": true,
    "checkJs": true,
    // Module Resolution
    "esModuleInterop": true,
    "allowImportingTsExtensions": true,
    "module": "ES2022",
    "moduleResolution": "bundler",
    "ignoreDeprecations": "6.0",
    "moduleDetection": "force",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "jsx": "react",
    // Emit Options
    "declaration": true,
    "declarationMap": true,
    "noEmit": true,
    "noEmitOnError": false,
    "importHelpers": true,
    // Strict Type-Checking Options
    "strict": true,
    "noImplicitAny": true,
    "noImplicitReturns": true,
    "noUncheckedIndexedAccess": true,
    "noUnusedLocals": false,
    "noUnusedParameters": true,
    "forceConsistentCasingInFileNames": true,
    "noFallthroughCasesInSwitch": true,
    "noPropertyAccessFromIndexSignature": false,
    // JSX
    // Target and Libraries
    "target": "ES2022",
    "lib": [
      "dom",
      "ES2022",
      "dom.iterable",
      "webworker"
    ],
    // Miscellaneous
    "newLine": "lf",
    "useDefineForClassFields": true
  },
  "include": [
    "packages/**/*.ts",
    "packages/**/*.tsx",
    "packages/tooling/storybook/.storybook/**/*.ts",
    "packages/tooling/storybook/.storybook/**/*.tsx",
    "vitest.config.ts",
    "server/signaling.mjs",
    "server/collaboration-host-grant.mjs",
    "globals.d.ts"
  ],
  "exclude": [
    "node_modules",
    "packages/js-lib/color-scheme-manager/src/**/*",
    "packages/js-lib/poor-mans-di/src/__tests__/poor-mans-di.spec.ts",
    // React Native's ambient globals (timers, fetch) conflict with DOM lib
    // types; mobile-entry typechecks as its own project (see its tsconfig).
    "packages/tooling/mobile-entry/**/*",
  ]
}
