{
	// Mapped from https://www.typescriptlang.org/tsconfig
	"compilerOptions": {
		// Type Checking
		"allowUnreachableCode": false,
		"allowUnusedLabels": false,
		"exactOptionalPropertyTypes": true,
		"noFallthroughCasesInSwitch": true,
		"noImplicitOverride": true,
		"noImplicitReturns": true,
		"noUnusedLocals": true,
		"noUnusedParameters": true,
		"strict": true,
		"useUnknownInCatchVariables": true,

		// Modules
		"module": "CommonJS",
		"moduleResolution": "node",
		"resolveJsonModule": true,

		// Emit
		"declaration": true,
		"importHelpers": true,
		"importsNotUsedAsValues": "error",
		"inlineSources": true,
		"newLine": "lf",
		"noEmitHelpers": true,
		"outDir": "dist",
		"preserveConstEnums": true,
		"removeComments": false,
		"sourceMap": true,
		"esModuleInterop": true,
		"forceConsistentCasingInFileNames": true,

		// Language and Environment
		"emitDecoratorMetadata": true,
		"experimentalDecorators": true,
		"lib": ["ESNext"],
		"target": "ES2021",
		"useDefineForClassFields": true
	}
}