{
	"compilerOptions": {
		"allowJs": true,
		"checkJs": false,

		// The allowSyntheticDefaultImports option needs to be set to true for
		// TypeScript code to be compatible with Node.js ES Modules, which
		// expect ES Modules to `import` the `module.exports` of a CommonJS
		// module as the `default` import. F.e. This means CommonJS modules must
		// be imported as `import foo from 'commonjs-module'` instead of `import
		// * as foo from 'commonjs-module'`.
		"allowSyntheticDefaultImports": true,
		"esModuleInterop": false,

		// This is often a source of problems. Assume that if a project built
		// fine, then its declaration output is fine and we don't need to type
		// check it. Sometimes declaration output causes type errors, which is a
		// major pain.
		"skipLibCheck": true,

		"lib": ["esnext", "dom"],
		"target": "es2022",
		"module": "esnext",
		"moduleResolution": "node",

		// Prevent possible issues in Windows (https://github.com/prettier/prettier/issues/7825#issuecomment-602171740)
		// It may seem counterintuitive that we don't set CRLF. That's because
		// all tools we use, even in Windows, work with LF (VS Code, Prettier,
		// etc), so this keeps things consistent.
		"newLine": "lf",

		// Code strictness
		"strict": true,
		"verbatimModuleSyntax": true,
		"isolatedModules": true,
		"noFallthroughCasesInSwitch": true,
		"noImplicitReturns": true,
		"noUnusedLocals": true,
		"noUnusedParameters": true,
		"forceConsistentCasingInFileNames": true,
		"noImplicitOverride": true,
		"noUncheckedIndexedAccess": true,

		// Language feature options
		"useDefineForClassFields": true,
		"preserveConstEnums": true,
		// JSX is preserved so that we can handle JSX with babel-preset-solid
		// (for use with @lume/element).
		"jsx": "preserve",
		// Default to supporting Solid JSX by default. This is the default the Lume project uses right now.
		"jsxImportSource": "solid-js",

		"pretty": true,
		"declaration": true,
		"declarationMap": true,
		"noEmitOnError": false,
		"sourceMap": true,
		"removeComments": false, // If true, then useful documentation will not appear in end-user IDEs.

		"paths": {"*": ["*"]},
		"rootDir": "../../../../src",
		"baseUrl": "../../../../",
		"outDir": "../../../../dist",
		"typeRoots": ["../../../../node_modules/@types", "../../../../node_modules/@lume/cli/node_modules/@types"]
	},
	"compileOnSave": false,
	"include": ["../../../../src/**/*"]
}
