{
	"$schema": "https://json.schemastore.org/tsconfig",
	"display": "Base TypeScript configuration",
	"compilerOptions": {
		// Projects
		"declaration": true,
		"declarationMap": true,

		// Language and Environment
		"target": "es2022",
		"module": "preserve",

		// Modules
		"moduleResolution": "bundler",
		"moduleDetection": "force",
		"resolveJsonModule": true,
		"isolatedModules": true,

		// Interop Constraints
		"esModuleInterop": true,
		"forceConsistentCasingInFileNames": true,

		// Type Checking
		"strict": true,
		"noImplicitOverride": true,
		"strictPropertyInitialization": false,
		"allowUnusedLabels": false,
		"allowUnreachableCode": false,
		"noUnusedLocals": false,
		"noUnusedParameters": false,
		"noUncheckedIndexedAccess": true,
		"noFallthroughCasesInSwitch": true,
		"noImplicitReturns": true,
		"noPropertyAccessFromIndexSignature": true,

		// Performance
		"skipLibCheck": true,
		"preserveWatchOutput": true
	},
	"exclude": ["node_modules"]
}
