{
	// 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,
		"noUncheckedIndexedAccess": true,

		// Modules
		"module": "NodeNext",
		"moduleResolution": "nodenext",

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

		// Language and Environment
		"emitDecoratorMetadata": true,
		"experimentalDecorators": true,
		"lib": ["ESNext"],
		"paths": {
		  "@app/*": ["./dist/*", "./types/*"],
			"tslib": ["../node_modules/tslib/tslib.d.ts"] 
		},
		"target": "ESNext",
		"useDefineForClassFields": true,
		"rootDir": "src"
	}
}
