{ "extends": "./tsconfig.base.json", /* ── Warum die Tests ein eigenes Projekt sind ───────────────────────── Vitest-Dateien prüfen beide Welten: `tests/renderer-*.test.tsx` mountet React im jsdom, `tests/lernstand.test.ts` öffnet eine SQLite-Datei im Main-Prozess, und `tests/bogen-echt.test.ts` führt beides zusammen (echter Prüfungsbogen aus dem Main-Prozess, gerendert im Renderer). Das ist für Integrationstests richtig so. Lagen diese Dateien im Web-Projekt, zog jeder Import aus `src/main` eine Datei in das Programm, die dort nicht im `include` steht — TypeScript meldete das als TS6307 („File … is not listed within the file list of project"). Zehn solcher Meldungen machten `tsc -p tsconfig.web.json` unbrauchbar; echte Fehler wären darin untergegangen. Dieses Projekt darf beide Welten sehen. Die Trennung bleibt trotzdem scharf, weil sie woanders durchgesetzt wird: - tsconfig.node.json prüft `src/main` weiterhin OHNE die DOM-Bibliothek, Zugriffe auf `document`/`window` bleiben dort also Compilerfehler; - tsconfig.web.json prüft `src/renderer` weiterhin OHNE die Node-Typen, Zugriffe auf `process`/`Buffer` bleiben dort also Compilerfehler; - eslint.config.mjs verbietet dem Renderer per no-restricted-imports jeden Import aus `node:*`, `fs`, `path`, `child_process`, `electron`. Nur die Testdateien selbst dürfen beides — sie laufen in Node. */ "include": [ "tests/**/*.ts", "tests/**/*.tsx", "src/main/**/*.ts", "src/preload/**/*.ts", "src/preload/**/*.d.ts", "src/renderer/**/*.ts", "src/renderer/**/*.tsx", "src/renderer/**/*.d.ts", "src/shared/**/*.ts", // `tools/paketstand.mjs` wird von tests/paketstand.test.ts geprueft. // Die Datei ist JavaScript, weil tools/gate-stempel.mjs sie ohne // Uebersetzungsschritt laedt; ihre Typen stehen als JSDoc darin. "tools/**/*.mjs" ], "compilerOptions": { "composite": true, "allowJs": true, // Beide Umgebungen: jsdom braucht DOM, der Dateizugriff der // Main-Prozess-Tests braucht Node. "lib": ["ES2023", "DOM", "DOM.Iterable"], "types": ["node", "vite/client", "@testing-library/jest-dom"], "jsx": "react-jsx", "outDir": "node_modules/.tmp/tsc-tests", "tsBuildInfoFile": "node_modules/.tmp/tsc-tests.tsbuildinfo", // Kein "baseUrl" - siehe Begruendung in tsconfig.web.json. "paths": { "@renderer/*": ["./src/renderer/src/*"], "@shared/*": ["./src/shared/*"] } } }