1{
2 "exclude": ["node_modules", "dist", "vendor"],
3 // For `tsc -b -w` / classic-tsserver editors (the Cursor/tsgo LSP watches via
4 // the client, gated by .vscode/settings.json `files.watcherExclude`).
5 "watchOptions": {
6 "watchFile": "useFsEvents",
7 "watchDirectory": "useFsEvents",
8 "excludeDirectories": [
9 "**/node_modules",
10 "**/.git",
11 "**/.claude",
12 "**/submodules",
13 "**/.alchemy",
14 "**/dist"
15 ]
16 },
17 "compilerOptions": {
18 "types": ["bun"],
19 // Enable latest features
20 "lib": ["ESNext", "DOM"],
21 "target": "ESNext",
22 "moduleDetection": "force",
23 "jsx": "react-jsx",
24 "allowJs": true,
25 "resolveJsonModule": true,
26 "esModuleInterop": true,
27 "noEmit": true,
28 // Bundler mode
29 "module": "Preserve",
30 "moduleResolution": "Bundler",
31 "allowImportingTsExtensions": true,
32 "rewriteRelativeImportExtensions": true,
33 "verbatimModuleSyntax": true,
34 // Best practices
35 "strict": true,
36 "skipLibCheck": true,
37 // Resolve project references (notably every `submodules/distilled/packages/*`)
38 // through their emitted `lib/*.d.ts` instead of redirecting to their
39 // sources. Without this, editors and `tsc` pull distilled's generated
40 // SDK sources — hundreds of thousands of lines across 20 packages —
41 // into the program, which is what makes intellisense crawl. distilled
42 // builds with `noCheck: true` and gates its own typechecking in its
43 // own CI, so re-checking its sources from here buys nothing.
44 "disableSourceOfProjectReferenceRedirect": true,
45 // Don't eagerly load every referenced composite project into the language
46 // server on find-all-references/rename — with 6 distilled projects and ~36
47 // examples in the solution, eager loading is a multi-GB memory spike.
48 // Editor-only; no effect on `tsc -b`.
49 "disableReferencedProjectLoad": true,
50 "noFallthroughCasesInSwitch": true,
51 // Some stricter flags (disabled by default)
52 "noUnusedLocals": false,
53 "noUnusedParameters": false,
54 "noPropertyAccessFromIndexSignature": false,
55 "noImplicitThis": true,
56 "sourceMap": true,
57 "declaration": true,
58 "declarationMap": true,
59 "noErrorTruncation": true
60 }
61}