Files
explore/tsconfig.json
zeekayandHanzo Dev 69b013ab40 fix: complete the TypeScript 7 tsconfig migration
The first pass left three classes of config that BOTH tsc 5.9 and tsc 7
reject. Each was proven against both compilers before changing:

  TS5090  A `paths` target must be relative once `baseUrl` is gone. The
          first pass skipped the "./" prefix wherever baseUrl pointed at
          the config's own directory, reasoning it was semantically
          equivalent. It is not — without baseUrl a non-relative target
          is rejected outright, by 5.9 as well as 7.

  TS5110  `moduleResolution: node16` requires `module: node16`. The first
          pass mapped commonjs projects to node16 resolution alone, which
          BROKE those configs for the current toolchain. Both are now set.

  TS5102  `downlevelIteration` is also removed in TS7; it was missing from
          the dead-flag list.

Verified: repos that tsc 7 previously refused (base-studio, js-sdk, kv-js)
now report zero config errors on tsc 7 AND tsc 5.9.

Co-Authored-By: Hanzo Dev <[email protected]>
2026-07-27 20:51:32 -07:00

72 lines
2.2 KiB
JSON

{
"compilerOptions": {
"target": "es2017",
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"allowJs": true,
"skipLibCheck": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"noEmit": true,
"esModuleInterop": true,
"module": "ESNext",
"moduleResolution": "Bundler",
"resolveJsonModule": true,
"isolatedModules": true,
"jsx": "react-jsx",
"incremental": true,
// TS7 removed `baseUrl`, and this project's absolute imports ("configs/app",
// "lib/api/pchain", "ui/...") were resolved by `baseUrl: "."` alone — `paths`
// was empty, so dropping baseUrl left nothing to resolve them and tsc could
// not typecheck a single file.
//
// The roots are NAMED, one per source directory, not collapsed into a
// `"*": ["./*"]` catch-all. `baseUrl` was a FALLBACK — tried after node
// resolution — whereas `paths` takes PRECEDENCE, and every bundler that
// reads tsconfig (Turbopack, webpack's tsconfig-paths, Vite) applies it
// first. A catch-all therefore captures package specifiers too: Turbopack
// rewrote `@luxfi/ui/tooltip` to `./@luxfi/ui/tooltip` inside the project
// and the whole app 500'd with "Module not found", because a `paths` miss
// is an error, not a fall-through.
"paths": {
"configs/*": [ "./configs/*" ],
"deploy/*": [ "./deploy/*" ],
"icons/*": [ "./icons/*" ],
"lib/*": [ "./lib/*" ],
"mocks/*": [ "./mocks/*" ],
"nextjs/*": [ "./nextjs/*" ],
"playwright/*": [ "./playwright/*" ],
"public/*": [ "./public/*" ],
"stubs/*": [ "./stubs/*" ],
"toolkit/*": [ "./toolkit/*" ],
"types/*": [ "./types/*" ],
"ui/*": [ "./ui/*" ]
},
"types": [
"node"
]
},
"include": [
"next-env.d.ts",
"**/*.ts",
"**/*.node.ts",
"**/*.tsx",
"**/*.pw.tsx",
"decs.d.ts",
"global.d.ts"
],
"exclude": [
"node_modules",
"node_modules_linux",
"./deploy/tools/envs-validator",
"./deploy/tools/favicon-generator",
"./deploy/tools/multichain-config-generator",
"./deploy/tools/essential-dapps-chains-config-generator",
"./toolkit/package",
"./deploy/tools/llms-txt-generator"
]
}