tsconfig.json

{
  "compilerOptions": {
    "target": "ESNext",
    "module": "ESNext",
    "moduleResolution": "bundler",
    "lib": ["ESNext", "DOM", "DOM.Iterable"],
    "jsx": "preserve",
    "jsxImportSource": "@solidjs/web",

    "strict": true,
    // Off deliberately. The unsafe lookups this was meant to catch were the
    // state-keyed tables, and those are now closed by `StateName` being a
    // literal union. What is left is fixed-size geometry — 48-point rings,
    // four-corner radius tuples, the shape and expression catalogues — where
    // the flag would only add fallbacks to invariants held by construction,
    // inside the per-point loops that run sixty times a second.
    "noUncheckedIndexedAccess": false,
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "noFallthroughCasesInSwitch": true,
    "exactOptionalPropertyTypes": false,

    "allowImportingTsExtensions": true,
    "rewriteRelativeImportExtensions": true,
    "verbatimModuleSyntax": true,
    "isolatedModules": true,
    "noEmit": true,
    "skipLibCheck": true,
    "resolveJsonModule": true,
    "types": ["vite/client", "bun"]
  },
  "include": ["src", "vite.config.ts", "biome.json"],
  "exclude": ["node_modules", "dist"]
}