# AGENTS.md — typescript-config Shared TypeScript base configs (`tsconfig.json` files) and Vitest base config, consumed by all packages. ## What it owns - **`base.json`** — Base `tsconfig.json`: target ES2022, module ESM, `experimentalDecorators` + `emitDecoratorMetadata` for InversifyJS - **`nextjs.json`** — Next.js app config: extends base, adds `jsx: "preserve"`, Next.js lib types - **`react-library.json`** — React library config: extends base, adds `jsx: "react-jsx"`, DOM lib - **`vitest.base.ts`** — Vitest base config: globals, isolate modules, common ignore patterns ## How packages consume them Packages extend the appropriate base: ```json // packages/blog/tsconfig.json { "extends": "@repo/typescript-config/base.json", "compilerOptions": { "rootDir": ".", "outDir": "dist", "lib": ["ES2022"] }, "include": ["src/**/*"] } ``` Apps extend Next.js config: ```json // apps/web-next/tsconfig.json { "extends": "@repo/typescript-config/nextjs.json", "compilerOptions": { "rootDir": ".", "outDir": ".next" } } ``` Vitest configs import the base: ```typescript // packages/blog/vitest.config.ts import { defineConfig } from "vitest/config"; import path from "path"; import { vitestBase } from "@repo/typescript-config"; export default defineConfig({ ...vitestBase, test: { environment: "node", }, resolve: { alias: { "@": path.resolve(__dirname, "./src"), }, }, }); ``` ## Test conventions - No unit tests (config validation via `pnpm typecheck` in other packages) - Verify at CI: `pnpm typecheck` succeeds across all packages - Type errors should propagate: `pnpm typecheck` fails on invalid source code ## Structure ``` base.json # ES2022, ESM, decorators nextjs.json # Next.js-specific paths + lib react-library.json # React JSX + DOM vitest.base.ts # Vitest defaults (globals, isolate) package.json # Exports above files ```