{
	"compilerOptions": {
		/* Language and Environment */
		"target": "ES2023" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */,
		"lib": ["ES2023"] /* Specify a set of bundled library declaration files that describe the target runtime environment. */,
		"module": "ESNext" /* Specify what module code is generated. */,
		"moduleResolution": "bundler" /* Specify how TypeScript looks up a file from a given module specifier. */,
		"esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. */,
		"resolveJsonModule": true /* Enable importing .json files. */,
		"allowImportingTsExtensions": /* Allow imports to include TypeScript file extensions. */ true,
		"noEmit": true /* Disable emitting files from a compilation. */,

		/* Strict Type-Checking Options */
		"strict": true /* Enable all strict type-checking options. */,
		"noImplicitAny": true /* Enable error reporting for expressions and declarations with an implied 'any' type. */,
		"strictNullChecks": true /* When type checking, take into account 'null' and 'undefined'. */,
		"strictFunctionTypes": true /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */,
		"strictBindCallApply": true /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */,
		"strictPropertyInitialization": true /* Check for class properties that are declared but not set in the constructor. */,
		"noImplicitThis": true /* Enable error reporting when 'this' is given the type 'any'. */,
		"useUnknownInCatchVariables": true /* Default catch clause variables as 'unknown' instead of 'any'. */,
		"alwaysStrict": true /* Ensure 'use strict' is always emitted. */,
		"noUnusedLocals": true /* Enable error reporting when local variables aren't read. */,
		"noUnusedParameters": true /* Raise an error when a function parameter isn't read. */,
		"exactOptionalPropertyTypes": true /* Interpret optional property types as strictly typed, preventing assignment of 'undefined'. */,
		"noImplicitReturns": true /* Enable error reporting for codepaths that do not explicitly return in a function. */,
		"noFallthroughCasesInSwitch": true /* Enable error reporting for fallthrough cases in switch statements. */,
		"noUncheckedIndexedAccess": true /* Add 'undefined' to a type when accessed using an index. */,
		"noImplicitOverride": true /* Ensure overriding members in derived classes are marked with an override modifier. */,
		"noPropertyAccessFromIndexSignature": true /* Enforces using indexed accessors for keys declared using an indexed type. */,
		"allowUnusedLabels": false /* Disable error reporting for unused labels. */,
		"allowUnreachableCode": false /* Disable error reporting for unreachable code. */,

		/* Emit */
		"outDir": "./dist" /* Specify an output folder for all emitted files. */,

		/* Completeness */
		"skipLibCheck": true /* Skip type checking all .d.ts files. */,
		"forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */
	},
	"include": ["src/**/*"]
}
