Promote strictness in ui-tui-opentui-v2:
- eslint: @typescript-eslint/no-non-null-assertion: error (with a test
override block keeping `!` in *.test.ts/tsx fixtures), and promote
unused-imports/no-unused-vars warn → error.
- tsconfig: add noUnusedLocals + noImplicitReturns.
Remove all 24 production `!` non-null assertions by replacing each with
a real guard / default / early-return, preserving rendered behavior:
- gateway/client.ts: read the pending entry once and guard (vs has()+get()!).
- logic/theme.ts: guard the parseHex regex match; `?? 0` on the always-
in-bounds XTERM_6_LEVELS lookups; restructure backgroundLuminance to
branch into a typed tuple and use charAt() for the 3-digit hex expand.
- view/homeHint.tsx: use Solid's <Show>{value => …} callback form to
narrow info().model / info().cwd instead of `!`.
- view/reasoningPart.tsx: guard the regex match before slicing m[0].
- view/statusBar.tsx: read model/cwd/pct into locals + guard; `?? 0` on
the showBar()-guarded context-bar percentage.
- view/toolPart.tsx: guard the single-arg entry; `?? 0` on the
duration-guarded fmtDuration.
30 lines
807 B
JSON
30 lines
807 B
JSON
{
|
|
"compilerOptions": {
|
|
"target": "ESNext",
|
|
"lib": ["ESNext", "DOM"],
|
|
"module": "preserve",
|
|
"moduleResolution": "bundler",
|
|
"moduleDetection": "force",
|
|
"allowImportingTsExtensions": true,
|
|
"verbatimModuleSyntax": true,
|
|
"noEmit": true,
|
|
"strict": true,
|
|
"exactOptionalPropertyTypes": true,
|
|
"noUncheckedIndexedAccess": true,
|
|
"noFallthroughCasesInSwitch": true,
|
|
"noImplicitOverride": true,
|
|
"noUnusedLocals": true,
|
|
"noImplicitReturns": true,
|
|
"jsx": "preserve",
|
|
"jsxImportSource": "@opentui/solid",
|
|
"types": ["bun"],
|
|
"skipLibCheck": true,
|
|
"esModuleInterop": true,
|
|
"allowSyntheticDefaultImports": true,
|
|
"resolveJsonModule": true,
|
|
"isolatedModules": true
|
|
},
|
|
"include": ["src", "scripts"],
|
|
"exclude": ["node_modules"]
|
|
}
|