{
	"compilerOptions": {
		/* - type checking - */
		"allowUnreachableCode": false,
		"allowUnusedLabels": false,
		"alwaysStrict": true,
		// "exactOptionalPropertyTypes": true,
		"noFallthroughCasesInSwitch": true,
		"noImplicitAny": true,
		"noImplicitOverride": true,
		"noImplicitReturns": true,
		"noImplicitThis": true,
		"noUncheckedIndexedAccess": true,
		"noUnusedLocals": true,
		"noUnusedParameters": true,
		"strict": true,
		"strictBindCallApply": true,
		"strictFunctionTypes": true,
		"strictNullChecks": true,
		"strictPropertyInitialization": true,
		"useUnknownInCatchVariables": true,

		/* - modules - */
		"module": "CommonJS",
		"moduleResolution": "node10",
		"rootDir": "src",

		/* - emit - */
		"declaration": true,
		"declarationMap": true,
		"outDir": "dist",
		"stripInternal": true,

		/* - interop - */
		"esModuleInterop": true,
		"forceConsistentCasingInFileNames": true,

		/* - lang & env - */
		"lib": [ "esnext" ],
		"target": "esnext",

		/* - completeness - */
		"skipLibCheck": true,
	},
	"include": [ "src/**/*.ts" ]
}
