Set up the package, compiler and quality gates before any app code so every later change lands under the same rules: Node 26 via .nvmrc and engines, TypeScript 7 in strict mode with the extra strictness flags, swc for transpiling, oxlint with type-aware, Unicorn and security rules (eslint-plugin-security and no-unsanitized loaded as JS plugins), oxfmt, Vitest with a 100% coverage gate, and husky hooks that run the checks and commitlint. Type escape hatches, lint suppressions and coverage exemptions are banned unless registered in exceptions.json. scripts/audit-exceptions enforces that, and its test runs it against this repository, so an unregistered suppression fails both the pre-commit hook and CI. npm 11 blocks dependency install scripts by default. None are needed: Electron downloads its binary on first use, swc's native binding comes from optionalDependencies, fsevents ships prebuilt, and electron-winstaller only serves Squirrel installers, which aren't used. They are recorded as denied in allowScripts.
25 lines
657 B
JSON
25 lines
657 B
JSON
{
|
|
"compilerOptions": {
|
|
"target": "es2024",
|
|
"lib": ["es2024"],
|
|
"module": "nodenext",
|
|
"moduleResolution": "nodenext",
|
|
"types": [],
|
|
"strict": true,
|
|
"noUncheckedIndexedAccess": true,
|
|
"exactOptionalPropertyTypes": true,
|
|
"noImplicitOverride": true,
|
|
"noImplicitReturns": true,
|
|
"noFallthroughCasesInSwitch": true,
|
|
"noPropertyAccessFromIndexSignature": true,
|
|
"noUnusedLocals": true,
|
|
"noUnusedParameters": true,
|
|
"verbatimModuleSyntax": true,
|
|
"isolatedModules": true,
|
|
"erasableSyntaxOnly": true,
|
|
"forceConsistentCasingInFileNames": true,
|
|
"resolveJsonModule": true,
|
|
"noEmit": true
|
|
}
|
|
}
|